投资组合优化模型使用因素
这个例子显示了使用一个因素模型两种方法来优化资产配置在均值-方差框架。多因素模型中经常使用风险建模、投资组合管理和投资组合绩效归因。多因素模型的维度降低投资的范围,负责描述的大部分市场的随机性(1]。可以统计因素、宏观经济和基础。在这个例子中,第一种方法构建统计因素直接从资产回报和优化配置因素。在第二种方法使用一个给定的因子计算协方差矩阵的信息,然后使用资产的回报投资组合
类来优化资产配置。
加载数据
加载一个模拟数据集,包括总资产的回报p= 100资产和2000每日观察。
负载(“asset_return_100_simulated.mat”);[nObservation p] =大小(stockReturns)
nObservation = 2000
p = 100
splitPoint =装天花板(nObservation * 0.6);培训= 1:splitPoint;测试= splitPoint + 1: nObservation;trainingNum =元素个数(培训);
想象每个股票的股票曲线。对于这个示例,图前五的股票。
情节(ret2tick (stockReturns{培训、1:5},“方法”,“简单”)* 100);持有从;包含(“步伐”);ylabel (“价值”);标题(“股本曲线”);传奇(stockReturns.Properties.VariableNames (1:5),“位置”,“bestoutside”,“翻译”,“没有”);
优化资产配置直接因素,具体问题具体分析定义框架
的因素,您可以使用统计因素从资产收益中提取系列。在本例中,您使用主成分分析(PCA)提取统计因素(1]。然后,您可以使用这个因素模型来解决组合优化问题。
因子模型,p资产回报率可以表示为一个线性组合k因素的回报, ,在那里k< <p。在均值-方差框架中,投资组合的风险
, ,
地点:
是投资组合回报率(标量)。
的资产回报。
是指资产的回报。
因子载荷,尺寸p-by-k。
是返回的因素。
每个特殊返回相关资产。
是资产的重量。
是重量的因素。
是返回的协方差因素。
是特殊的方差的回报。
的参数
,
,
,
是p -通过- - - - - -1
列向量,
和
是k -通过- - - - - -1
列向量,
是一个p -通过- p矩阵,
是一个k -通过- k矩阵,
是一个p -通过- p对角矩阵。
因此,均值-方差最优化问题是制定
, , 。
在p维空间形成的p资产回报率,PCA发现最重要的k方向,捕捉最重要的给定收益的变化p资产。通常情况下,k小于p。因此,通过使用PCA可以分解p资产回报的k因素,这大大降低了问题的维数。的k主要方向是解释为因子载荷和分解是解释为因素的分数回报。有关更多信息,请参见主成分分析
(统计和机器学习的工具箱™)。在这个例子中,使用k =10
主成分的数量。或者,你也可以找到k通过定义一个阈值的总方差表示为最高k主要组件。通常可接受阈值的95%。
k = 10;[factorLoading factorRetn,潜伏,tsq,解释说,μ)= pca (stockReturns{培训:},“NumComponents”、k);disp(大小(factorLoading))
100年10
disp(大小(factorRetn))
1200年10
在输出p -通过- kfactorLoading
,每一列是一个主成分。资产收益向量在每个步伐是分解这些k维空间,k < < p。输出factorRetn
是一个trainingNum -通过- k维度。
此外,您还可以使用covarianceDenoising
函数来估计协方差矩阵(denoisedCov
)利用去噪来降低噪声,提高信号的经验协方差矩阵。(1)去噪的目的是分离与信号相关的特征值相关的噪音和收缩与噪声相关的特征值来增强信号。因此,covarianceDenoising
是一个合理的工具来识别因素的数量。
[denoisedCov, numFactorsDenoising] = covarianceDenoising (stockReturns{培训:});
的因素(numFactorsDenoising
)是6
。
disp (numFactorsDenoising)
6
估计因子协方差矩阵因子的回报(factorRetn
)获得使用主成分分析
函数。
covarFactor = x (factorRetn);
你可以重建p资产回报率为每个观察使用k因子收益遵循 。
重建总1200观察训练集。
reconReturn = factorRetn * factorLoading ' +μ;unexplainedRetn = stockReturns{培训:}- reconReturn;
有原因不明的资产回报 因为剩下的(p- - - - - -k)主成分下降。你可以把asset-specific风险表现为原因不明的资产回报D。
unexplainedCovar =诊断接头(x (unexplainedRetn));D =诊断接头(unexplainedCovar);
您可以使用一个具体问题具体分析定义框架优化工具箱™构建变量,目标和约束的问题: , , 。具体问题具体分析定义框架允许您定义变量和象征性的表达目标和约束。您可以添加其他约束或使用一个不同的目标根据您的特定问题。有关更多信息,请参见首先选择具体问题具体分析或Solver-Based方法。
targetRisk = 0.007;%投资组合回报率的标准差因为= targetRisk * targetRisk;%投资组合回报率的方差meanStockRetn =意味着(stockReturns{培训:});optimProb = optimproblem (“描述”,协方差矩阵的组合因素”,“ObjectiveSense”,“马克斯”);wgtAsset = optimvar (“asset_weight”p 1“类型”,“连续”,下界的0,“UpperBound”1);wgtFactor = optimvar (“factor_weight”k 1“类型”,“连续”);optimProb。目标=总和(meanStockRetn”。* wgtAsset);optimProb.Constraints。一个年代年代et_factor_weight = factorLoading'*wgtAsset - wgtFactor == 0; optimProb.Constraints.risk = wgtFactor'*covarFactor*wgtFactor + wgtAsset'*D*wgtAsset <= tRisk; optimProb.Constraints.budget = sum(wgtAsset) == 1; x0.asset_weight = ones(p, 1)/p; x0.factor_weight = zeros(k, 1); opt = optimoptions(“fmincon”,“算法”,“sqp”,“显示”,“关闭”,…“ConstraintTolerance”1.0 e-8“OptimalityTolerance”1.0 e-8“StepTolerance”1.0 e-8);x =解决(optimProb x0,“选项”、选择);assetWgt1 = x.asset_weight;
在本例中,您是投资组合回报率最大化为目标的风险。这是一个带有二次约束的非线性规划问题,你使用fmincon
来解决这个问题。
检查超过5%的资产配置,以确定哪些资产大型投资权重。
比例= 0.05;AssetName = stockReturns.Properties.VariableNames (assetWgt1 > =百分比)';重量= assetWgt1 (assetWgt1 > =百分比);T1 =表(AssetName、重量)
T1 =7×2表AssetName重量___________ ________ {‘Asset9} 0.080053 {‘Asset32} 0.22355 {‘Asset47} 0.11369 {‘Asset57} 0.088323 {‘Asset61} 0.068845 {‘Asset75} 0.063649 0.22163 {“Asset94”}
优化资产配置使用投资组合
类因素信息
如果你已经有了因子载荷和其他一些因素协方差矩阵分析或第三方供应商,您可以使用这些信息来计算资产的协方差矩阵,然后直接运行一个均值-方差最优化使用投资组合
类。回想一下,投资组合的风险
,所以你可以获得资产收益的协方差
。
使用estimateFrontierByRisk
在投资组合
类来解决优化问题:
,
。的投资组合
类支持有多种金宝app,您可以使用内置的约束来描述你的投资组合问题,估计有效边界上的风险和回报。有关更多信息,请参见投资组合优化使用组合对象。
covarAsset = factorLoading * covarFactor * factorLoading ' + D;端口=组合(“AssetMean”meanStockRetn,“AssetCovar”covarAsset,下界的0,“UpperBound”,1…“预算”1);assetWgt2 = estimateFrontierByRisk(港口,targetRisk);AssetName = stockReturns.Properties.VariableNames (assetWgt2 > =百分比)';重量= assetWgt2 (assetWgt2 > =百分比);T2 =表(AssetName、重量)
T2 =7×2表AssetName重量___________ ________ {‘Asset9} 0.080061 {‘Asset32} 0.22355 {‘Asset47} 0.11369 {‘Asset57} 0.088314 {‘Asset61} 0.068847 {‘Asset75} 0.063644 0.22163 {“Asset94”}
投资组合优化的结果
表T1
和T2
表现出相同的配置超过5%的资产配置。因此,在这个例子中,这两种方法与一个因素投资组合优化模型获得的资产权重相同。
可视化的性能优化配置在测试期间。
retn = stockReturns{测试:}* assetWgt1;情节(ret2tick (retn,“方法”,“简单”)* 100);持有从;包含(“步伐”);ylabel (“价值”);标题(“投资组合净值曲线”);
这个例子演示了如何使用PCA统计因素来自资产回报,然后使用这些因素执行的因素组合优化。这个示例还展示了如何使用这些统计因素投资组合
类。在实践中,你可以适应这个例子将一些可测量的市场因素,如工业因素或ETF回报各界,描述市场的随机性(1]。您可以定义自定义限制因素或资产的权重高灵活性使用具体问题具体分析定义框架从优化工具箱™。或者,您可以直接与工作投资组合
类来运行一个投资组合优化与各种内置的约束。
参考
洛佩兹•德•普拉多米。机器学习的资产管理公司。剑桥大学出版社,2020年。
Meucci,。“建模”市场。风险和资产配置。柏林:施普林格出版社,2009年。
另请参阅
投资组合
|setBounds
|addGroups
|setAssetMoments
|estimateAssetMoments
|estimateBounds
|plotFrontier
|estimateFrontierLimits
|estimateFrontierByRisk
|estimatePortRisk
相关的例子
- 创建组合对象
- 使用组合约束使用缺省值
- 验证组合对象的组合问题
- 估计有效的整个投资组合有效边界的组合对象
- 估计有效前沿组合对象
- 后处理结果建立可交易的投资组合
- 投资组合优化与半连续和基数约束
- 使用金融工具箱™Black-Litterman投资组合优化
- 投资组合优化与基准
- 投资组合优化的例子使用金融工具箱™
- 使用社会绩效衡量投资组合优化
- 多样化的投资组合使用自定义目标