主要内容

使用因子模型的组合优化

该示例显示了使用因子模型来优化平均方差框架下的资产分配的两种方法。多因素模型通常用于风险建模,投资组合管理和投资组合性能归因。多因素模型减少了投资宇宙的维度,并负责描述市场的大部分随机性[1]。这些因素可以是统计,宏观经济和基础的。在此示例中的第一种方法中,您可以从资产返回的统计因素,并直接针对因素优化分配。在第二种方法中,您使用给定的因子信息来计算资产返回的协方差矩阵,然后使用投资组合课程优化资产分配。

加载数据

加载模拟数据集,包括资产返回总数P.= 100个资产和2000日每日观察。

明确;加载('asset_return_100_simulated.mat');[nobservation,p] =尺寸(储存水)
nobservation = 2000.
P = 100.
splitpoint = ceil(nobservation * 0.6);训练= 1:分裂点;test = splitpoint + 1:nobservation;trainingnum = numel(培训);

可视化每股股票的股权。对于这个例子,请绘制前五个股票。

绘图(Ret2tick(StockReturns {培训,1:5},'方法''简单')* 100);保持关闭;Xlabel('timestep');ylabel('值');标题('股权');传奇(StockReturns.properties.variablenames(1:5),'地点'“最好的方”'口译员''没有');

直接优化资产分配,反对基于问题的定义框架的因素

对于因素,您可以使用从资产回报系列中提取的统计因素。在此示例中,您使用主成分分析(PCA)提取统计因素[1]。然后,您可以使用此因子模型来解决产品组合优化问题。

有一个因素模型,P.资产返回可以表示为线性组合K.因素返回, R. 一个 = μ. 一个 + F R. F + ε. 一个 ,在哪里K.<<P.。在平均方差框架中,投资组合风险是

var. R. P. = var. R. 一个 T. W. 一个 = var. μ. 一个 + F R. F + ε. 一个 T. W. 一个 = W. 一个 T. F σ. F F T. + D. W. 一个 = W. F T. σ. F W. F + W. 一个 T. D. W. 一个 ,有 W. F = F T. W. 一个

哪里:

R. P. 是投资组合返回(标量)。

R. 一个 资产是否回归。

μ. 一个 资产返回的平均值是。

F 是因子加载,尺寸p-by-k

R. F 是因素还是因素。

ε. 一个 是与每个资产相关的特殊回报。

W. 一个 是资产重量。

W. F 是因子重量。

σ. F 是因子回报的协方差。

D. 是特质回报的方差。

参数 R. 一个 W. 一个 μ. 一个 ε. 一个 P-通过-1列向量, R. F W. F k-通过-1列向量, σ. 一个 是A.P-通过-P.矩阵, σ. K. 是A.k-通过k矩阵,和 D. 是A.P-通过-P.对角线矩阵。

因此,平均方差优化问题被制定为

最大 μ. 一个 T. W. 一个 S. T. F T. W. 一个 = W. F W. F T. σ. F W. F + W. 一个 T. D. W. 一个 ≤. T. 风险 0. ≤. W. ≤. 1 E. T. W. 一个 = 1

在里面P.由尺寸空间形成P.资产回报,PCA找到最重要的K.捕获给定的回报中最重要的变化的方向P.资产。通常,K.小于P.。因此,通过使用PCA,您可以分解P.资产回归到K.极大地减少了问题的维度。该K.原理方向被解释为因子加载,并且分解的分数被解释为因子返回。有关更多信息,请参阅PCA.(统计和机器学习工具箱™)。在这个例子中,使用k =10.作为主要成分的数量。或者,您也可以找到K.通过定义作为顶部表示的总方差的阈值来值K.主要成分。通常95%是可接受的阈值。

k = 10;[因子加载,牺牲品,潜伏,TSQ,解释,MU] = PCA(储存{培训,:},'numcomponents',k);DISP(尺寸(因子加载))
100 10.
DISP(尺寸(FAMMORRETN))
1200 10.

在产出中P-通过k因子加载,每个列是主要组件。每个时间步骤的资产回报载体被拆解为这些K.尺寸空间,在哪里K << P.。输出armorretn.是A.培训通过k尺寸。

估计因子返回的因子协方差矩阵。

covarfactor = cov(faptivorretn);

你可以重建P.资产返回每个观察的每个观察K.因素返回以下 R. 一个 = μ. 一个 + F R. F + ε. 一个

重建培训集的总1200个观察。

recletreturn = factorretn * factorling'+ mu;UNEXLORERRETN = StockRETURNS {培训:}  - 重新批准;

有无法解释的资产回报 ε. 一个 因为剩下(P.-K.)丢弃主成分。您可以将无法解释的资产归因于所代表的资产特定风险D.

未解释的计算机= DIAG(COV(未解释));d = diag(未解释的计算机);

您可以使用优化工具箱™的基于问题的定义框架来构建问题的变量,目标和约束: 最大 μ. 一个 T. W. 一个 S. T. F T. W. 一个 = W. F W. F T. σ. F W. F + W. 一个 T. D. W. 一个 ≤. T. 风险 E. T. W. 一个 = 1 0. ≤. W. ≤. 1 。基于问题的定义框架使您可以符号定义变量和表达目标和约束。您可以根据您的特定问题添加其他约束或使用不同的目标。有关更多信息,请参阅首先选择基于问题的或基于求解的方法

targetrik = 0.007;投资组合返回的%标准偏差Trisk = targetRisk * targetRisk;投资组合返回的%方差意思是istockretn =卑鄙(储存{培训,:});OptimProb = OptimProblem('描述'“因子协方差矩阵”的投资组合'ObjectiveSense''max');wgtasset = Optimvar('asset_weight',p,1,'类型''连续''indowbound',0,'上行',1);wgtfactor = Optimvar('factor_weight',k,1,'类型''连续');OptimProb.Objective = Sum(MeanstockRetn'。* WGTASSET);OptimProb.Constraints.Asset_factor_weight = Factorloving'* WGTasset  -  WGTFactor == 0;OptimProb.Constraints.Risk = WGTFactor'* Covarfactor * WGTFactor + WGTasset'* D * WGTASSET <= TRISK;OptimProb.Constraints.Budget = Sum(WGTasset)== 1;x0.asset_weight = ins(p,1)/ p;x0.factor_weight = zeros(k,1);选择= Optimoptions(“fmincon”“算法”“SQP”“显示”“关”......'约束专利',1.0e-8,'OptimalalcaltalTolerance',1.0e-8,'steptolerance',1.0e-8);x =求解(Optimprob,x0,“选项”,选择);Assetwgt1 = x.asset_weight;

在此示例中,您可以最大限度地提高目标风险的投资组合返回。这是一个非线性编程问题,具有二次约束,您使用粉刺解决这个问题。

检查超过5%的资产拨款,以确定哪些资产具有大的投资权重。

百分比= 0.05;Assetname = StockReturns.Properties.VariaBlenames(Assetwgt1> =百分比)';重量= assetwgt1(assetwgt1> =百分比);t1 =表(AssetName,重量)
t1 =7×2表Assetname权重___________ ________ {'Asset9'} 0.080052 {'Asset47'} 0.088323 {'Asset61'} 0.068845 {'Asset75'} 0.068845 {'Asset75'} 0.06365 {'Asset75'} 0.06365

优化资产分配使用投资组合课程与因素信息

如果您已经有来自其他分析或第三方提供商的因子加载和因子协方差矩阵,则可以使用此信息来计算资产协方差矩阵,然后使用该信息使用该信息进行直接运行平均方差优化投资组合类。回想一下,投资组合风险是 var. R. P. = var. μ. 一个 + F R. F + ε. 一个 T. W. 一个 = W. 一个 T. F σ. F F T. + D. W. 一个 ,因此您可以获得资产回报的协方差 σ. 一个 = F σ. F F T. + D.

利用estismsFrontierByRisk.在里面投资组合类来解决优化问题: 最大 μ. 一个 T. W. 一个 S. T. W. 一个 T. σ. 一个 W. 一个 ≤. T. 风险 0. ≤. W. 一个 ≤. 1 E. T. W. 一个 = 1 。该投资组合类支持有各种金宝app内置的约束,您可以用来描述您的投资组合问题并估算高效前沿的风险并返回。有关更多信息,请参阅使用POSTFOLIO对象设置为优化的投资组合

Covarasset =因子加载* CovaRfactor * Facitionliping'+ D;port = portfolio(“assetmean”,意思是斯蒂克雷,'Assetcovar',covarasset,'indowbound',0,'上行',1,......'预算',1);Assetwgt2 = estmateFrontierByRisk(端口,TargetRisk);AssetName = StockReturns.Properties.VariaBlenames(Assetwgt2> =百分比)';重量= assetwgt2(assetwgt2> =百分比);t2 =表(AssetName,重量)
T2 =7×2表Assetname权重___________ ________ {'Asset9'} 0.080061 {'Asset47'} 0.088319

投资组合优化结果

桌子T1.T2.显示超过5%的资产拨分配的相同分配。因此,在该示例中,两种与因子模型的投资组合优化方法都获得了相同的资产权重。

在测试期间可视化优化分配的性能。

retn = stockReturns {test,:} * assetwgt1;绘图(Ret2tick(Retn,'方法''简单')* 100);保持关闭;Xlabel('timestep');ylabel('值');标题('投资组合股票曲线');

此示例演示了如何使用PCA从资产返回返回的统计因素,然后使用这些因素来执行基于因子的产品组合优化。此示例还显示了如何使用这些统计因素投资组合类。在实践中,您可以调整该示例以纳入一些可衡量的市场因素,例如来自各个部门的工业因素或ETF回报,以描述市场中的随机性[1]。您可以使用优化工具箱™的基于问题的定义框架来定义具有高灵活性的因素或资产权重的自定义约束。或者,您可以直接使用投资组合类以使用各种内置约束来运行投资组合优化。

参考

  1. Meucci,A。“建模市场”。风险和资产配置。柏林:斯普林斯,2009年。

也可以看看

|||||||||

相关例子

更多关于

外部网站