使用自定义目标使投资组合多样化
这个例子展示了在投资组合中使用资产多样化的三种技术estimateCustomObjectivePortfolio
函数使用投资组合
对象。资产多元化的目的是平衡投资组合对任何特定资产的风险敞口,以减少一段时间内的波动。鉴于最小方差投资组合对协方差矩阵估计的敏感性,一些从业者在投资组合选择中加入了多样化技术,希望将成交量、最大回款等方差措施之外的风险措施最小化。
这个例子应用了这些常见的分散投资技术:
此外,本例还演示了可以用来实现不同程度多样化的惩罚方法。在这些方法中,您将向estimateCustomObjectivePortfolio
函数平衡方差降低水平和投资组合的多样化。
检索市场数据并定义均值-方差组合
首先载入并计算预期收益及其协方差矩阵。
负载数据负载(“port5.mat”);存储返回值和协方差Mu = mean_return;Sigma = Correlation .* (stdDev_return * stdDev_return');
定义一个均值-方差投资组合投资组合
对象以创建一个完全投资的、只做多的投资组合。
创建一个具有默认约束的均值-方差Portfolio对象p =投资组合(“AssetMean”亩,“AssetCovar”σ);p = setDefaultConstraints(p);
的众多特征之一投资组合
对象是它可以得到组合问题的有效边界。有效边界是通过求解一系列优化问题来计算的,其中投资组合的收益水平,
,得到有效边界上的不同点。这些问题被定义为
的优点投资组合
计算有效边界的对象是可以获得的,而无需手动制定和解决上面所示的多个优化问题。
plotFrontier (p);
的投资组合
对象还可以计算与最小方差投资组合相关的权重,最小方差投资组合由以下问题定义。
最小方差权重是对所有多样化策略权重进行比较的基准。
wMinVar = estimateFrontierLimits(p,“最小值”);
以了解更多关于您可以用投资组合
对象,看到什么时候使用组合对象超过优化工具箱.
明确投资多样化技术
本节介绍三种分散投资的方法。三种多样化方法中的每一种都与一种多样化措施相关联,该多样化措施规定了实现不同多样化水平的惩罚条款。通过在目标函数中加入惩罚项得到的多样化,范围从最小方差组合所达到的行为到EW、ECR和MDP的行为。
默认投资组合只有一个等式约束和资产权重的下界。权重必须是非负的,并且它们的和必须为1
.可行集表示为
:
等加权投资组合
多样化措施之一是赫芬达尔-赫希曼(HH)指数,其定义为:
当投资组合的权重相等时,该指数最小。通过使用该指数作为惩罚得到的投资组合具有满足投资组合约束的权重,并且具有更均匀的权重。
使HH指数最小化的投资组合是
.因为在
为默认约束,该问题的解决方案是等权重(EW)投资组合。如果
如果有额外的约束条件,那么解决方案将是满足所有约束条件的投资组合,同时尽可能保持权重相等。使用函数句柄HHObjFun
为赫芬达尔-赫希曼(HH)指数estimateCustomObjectivePortfolio
函数。
最大化HH多样化(通过最小化HH指数)HHObjFun = @(x) x'*x;最小化HH索引的解决方案wHH = estimateCustomObjectivePortfolio(p,HHObjFun);
以HH惩罚最小化方差的投资组合是
.使用函数句柄HHMixObjFun
的HH罚estimateCustomObjectivePortfolio
函数。
% HH惩罚参数lambdaHH = 1e-2;%方差+赫芬达尔-赫希曼(HH)指数HHMixObjFun = @(x) x'*p。AssetCovar*x + lambdaHH*(x'*x);%考虑风险和HH分散的解决方案wHHMix = estimateCustomObjectivePortfolio(p,HHMixObjFun);
绘制最小方差组合、等权组合和惩罚策略的权重分布。
%绘制不同策略plotAssetAllocationChanges (wMinVar wHHMix wHH)
该图显示了惩罚策略如何在最小方差投资组合和EW投资组合之间回报权重。事实上,选择 返回最小方差解,as 解决方案接近EW组合。
最多元化的投资组合
与最多样化投资组合(MDP)相关的多样化指数定义为
在哪里 表示资产的标准差 .
MDP是使多样化比率最大化的投资组合:
多元化比率
等于1
如果投资组合完全投资于一项资产或所有资产完全相关。对于所有其他情况,
.如果
在美国,不存在分散投资,因此目标是找到最大化的投资组合
:
与HH指数不同,MDP的目标不是获得一个权重在所有资产中均匀分布的投资组合,而是获得一个投资组合,其所选择的(非零)资产与整个投资组合具有相同的相关性。使用函数句柄MDPObjFun
最多元化的投资组合(MDP)estimateCustomObjectivePortfolio
函数。
最大化多样化比率sigma =√(diag(p.AssetCovar));MDPObjFun = @ (x)(σ* x) /√x ' * p.AssetCovar * x);% MDP溶液wMDP = estimateCustomObjectivePortfolio(p,MDPObjFun,...ObjectiveSense =“最大化”);
下面的代码显示存在一个值 使得MDP问题和带有惩罚版本的问题是等价的。最小化MDP惩罚方差的投资组合是 .
定义MDP惩罚参数并使用函数句柄求解MDPMDPMixObjFun
对于MDP的处罚estimateCustomObjectivePortfolio
函数。
% MDP惩罚参数lambdaMDP = 1e-2;%方差+最多元化投资组合(MDP)MDPMixObjFun = @(x) x'*p。AssetCovar*x - lambdaMDP*(sigma'*x);%考虑风险和MDP多样化的解决方案wMDPMix = estimateCustomObjectivePortfolio(p,MDPMixObjFun);
绘制最小方差组合、MDP和惩罚策略的权重分布。
%绘制不同策略plotAssetAllocationChanges (wMinVar wMDPMix wMDP)
在这个图中,惩罚策略权重介于最小方差组合和MDP之间。这个结果与HH惩罚相同,此处选择 的最小方差解和值 返回资产权重,范围从最小方差行为到MDP行为。
等风险贡献组合
将与等风险贡献(ERC)投资组合相关的多样化指标定义为
该指标与Maillard [1]计算ERC投资组合。作者表明,您可以通过解决以下优化问题来获得ERC投资组合
通过定义 ,即带有默认约束的ERC投资组合 ,在那里 可以是任何常数。中实现此过程riskBudgetingPortfolio函数。
ERC投资组合的目的是选择资产权重,使每个资产对投资组合波动率的风险贡献对所有资产都是相同的。
% ERC投资组合wERC =风险预算组合(p.AssetCovar);
使ERC惩罚的方差最小化的投资组合是 .
与MDP惩罚公式的情况类似,存在一个
这样,ERC问题和它的惩罚版本是等价的。使用函数句柄ERCMixObjFun
的ERC处罚estimateCustomObjectivePortfolio
函数。
% ERC惩罚参数lambdaERC = 3e-6;% lambdaERC很小是因为对数%接近于零(投资组合权重)是很大的%方差+等风险贡献(ERC)ERCMixObjFun = @(x) x'*p。AssetCovar*x - lambdaERC*sum(log(x));%考虑风险和ERC分散的解决方案wERCMix = estimateCustomObjectivePortfolio(p,ERCMixObjFun);
绘制最小方差投资组合、ERC和惩罚策略的权重分布。
%绘制不同策略plotAssetAllocationChanges (wMinVar wERCMix wERC)
与上述两种多样化措施相比,这里的惩罚策略权重介于最小方差组合和ERC组合之间。选择 返回的最小方差解和值 从最小方差行为到ERC投资组合行为的回报资产权重。
比较多样化策略
计算在每个投资组合中选择的资产的数量。假设如果与资产相关的权重超过某个阈值,则选择该资产。
建立一个权重表varNames = {“MinVariance”,“MixedHH”,“HH”,“MixedMDP”,MDP的,...“MixedERC”,“伦理委员会”};weightsTable = table(wMinVar,wHHMix,wHH,wMDPMix,wMDP,...wERCMix wERC,“VariableNames”, varNames);非零权重资产的百分比cutOff = 1e-3;%低于分界点的权重被认为是零。[reweightedTable, tonnonzero] = tableWithNonZeroWeights(weightsTable,...截止,varNames);显示器(TnonZero)
TnonZero =表1×7MinVariance MixedHH HH MixedMDP MDP MixedERC ERC ___________ _______ ___ ________ ___ ________ ___ 非零权重11 104 225 23 28 225 225
如上所述,HH惩罚的目标是获得更平均加权的投资组合。HH多样性最大化的投资组合(只选择默认约束时对应于EW投资组合)有最多的资产被选择,而且这些资产的权重更接近。您可以在下面看到后一种特性boxchart
.此外,将HH指数作为惩罚函数添加到目标的策略比方差最小的投资组合拥有更多的资产数量,但比最大化HH多样性的投资组合要少。ERC投资组合还选择所有的资产,因为所有的权重都需要非零才能有一些风险贡献。
组合权重的箱形图图;matBoxPlot = reweightedTable.Variables;matBoxPlot(matBoxPlot == 0) = NaN;xticklabels(varNames)的权重分布)包含(“策略”) ylabel (“重量”)
这boxchart
显示了不同投资组合中资产正权重的分布。如前所述,最大化HH多样性的投资组合权重都是相同的。如果投资组合有其他类型的约束,权重不会全部相同,但它们的方差会最低。ERC投资组合权重也有一个小的方差。事实上,您可以观察到,随着资产数量的增加,ERC投资组合权重的方差变小。
MDP的权重变异性小于最小方差权重的变异性。然而,MDP的权重并不一定比最小方差权重具有更小的可变性,因为MDP的目标不是获得同等权重的资产,而是均匀地分配每个资产与其投资组合的相关性。
计算和绘制每个人的风险贡献。%资产的投资组合风险贡献= portfolioRiskContribution(p。AssetCovar,...weightsTable.Variables);%删除小的贡献riskContribution(riskContribution < 1e-3) = NaN;比较投资组合风险的贡献率。xticklabels(varNames)“投资组合风险的贡献率”)包含(“策略”) ylabel (pcr的)
这boxchart
显示每种资产对总投资组合风险的风险贡献百分比。风险贡献百分比计算为
正如预期的那样,所有ERC投资组合资产对投资组合的风险贡献是相同的。正如权重分布图之后所讨论的,如果问题有其他类型的约束,ERC投资组合的风险贡献对所有资产都不一样,但它们的方差会最低。另外,这张图中显示的行为与权重分布所显示的行为相似。
计算并绘制每个资产与其之间的相关性%的投资组合corrAsset2Port = correlationInfo。AssetCovar,...weightsTable.Variables);资产与投资组合相关性的箱形图xticklabels(varNames) title(“个人资产与其投资组合的相关性”)包含(“策略”) ylabel (“相关”)
这boxchart
显示每个资产与其各自投资组合的相关性分布。资产的相关性
按以下公式计算其投资组合:
MDP是相关性更紧密的投资组合,然后是使用MDP惩罚项的策略。事实上,如果投资组合问题允许负权重,那么MDP的所有资产将与其投资组合具有相同的相关性。此外,HH (EW)和ERC投资组合具有几乎相同的相关变异性。
参考文献
美拉德,S.,朗卡利,T. & Teïletche, J.;《等加权风险贡献组合的性质》投资组合管理杂志,36(4), 2010,第60-70页。
理查德,J. C.和朗卡利,T.。《智能贝塔:管理最小方差投资组合的多样化》基于风险和要素投资.Elsevier, 2015, pp. 31-63。
Tütüncü, R, Peña, J, Cornuéjols, G。财务优化方法。英国:剑桥大学出版社,2018年。
本地函数
函数[] = plotAssetAllocationChanges(wMinVar,wMix,wMaxDiv)根据前面显示的策略绘制权重分配图图t = tiledlayout(1,3);nexttile bar(wMinVar')轴([0 225 0 0.203])“最小方差”nexttile bar(wMix')轴([0 225 0 0.203])“混合策略”nexttile bar(wMaxDiv')轴([0 225 0 0.203])“最大多样性”) ylabel (t)“资产重量”)包含(t)“资产数量”)结束函数[weightsTable, TnonZero] =...varNames tableWithNonZeroWeights (weightsTable截止)为每个策略创建一个包含非零权重的表只选择有意义的权重funSelect = @(x) (x >= cutOff).*x。/sum(x(x >= cutOff));weightsTable = varfun(funSelect,weightsTable);%具有正权重的资产数funSum = @(x) sum(x > 0);TnonZero = varfun(funSum,weightsTable);TnonZero.Properties.VariableNames = varNames;TnonZero.Properties.RowNames = {“非零重量”};结束函数[corrAsset2Port] = correlationInfo(Sigma,portWeights)返回一个矩阵,其中包含每个资产与其关联的矩阵%的投资组合nX = size(portWeights,1);资产数量%nP = size(portWeights,2);组合数量%auxM =眼睛(nX);corrAsset2Port = 0 (nX,nP);为j = 1:nP%投资组合的标准差sigmapportfolio = sqrt(portWeights(:,j)'*Sigma*portWeights(:,j));为i = 1:nX%资产的标准差sigmaAsset =√(Sigma(i,i));%资产与投资组合的相关性corrAsset2Port (i, j) = (auxM(我):“*σ* portWeights) / (:, j)...(sigmaAsset * sigmaPortfolio);结束结束结束函数[riskContribution] = portfolioRiskContribution(Sigma,...portWeights)返回一个矩阵,其中包含每个资产的风险贡献%标的投资组合。nX = size(portWeights,1);资产数量%nP = size(portWeights,2);组合数量%风险贡献=零(nX,nP);为i = 1:nP权重= portWeights(:,i);%投资组合方差portVar =权重的*Sigma*权重;投资组合风险边际贡献率margRiskCont = weights.*(Sigma*weights)/根号(portVar);对投资组合风险的贡献率riskContribution(:,i) = margRiskCont/sqrt(portVar);结束结束
另请参阅
estimatePortSharpeRatio
|estimateFrontier
|estimateFrontierByReturn
|estimateFrontierByRisk