主要内容

资产分配案例研究

此示例显示如何设置使用均值 - 方差组合优化的基本资产分配问题文件夹对象估算有效的投资组合。

步骤1.定义投资组合问题。

假设您希望使用四个资产课程管理资产配置基金:债券,大型股票,小型股票和新兴股票。该基金仅借入或杠杆率,不应超过股票投资组合的85%,占新兴股市的投资组合中不超过35%。交易前三项资产的成本是10个基点年化,贸易成本高出四倍。最后,您希望确保平均营业额不超过15%。要解决此问题,您将设置一个基本的均值 - 方差组合优化问题,然后慢慢介绍问题的各种约束来实现解决方案。

要设置投资组合优化问题,请从与此问题结构相关的已知数量的基本定义开始。假设每个资产类别都有一个具有实时价格的可交易资产。这些资产可以是,例如,交易交易资金(ETF)。每个资产中持有的初始投资组合,共计750万美元,额外的现金职位为60,000美元。这些基本数量和交易成本在下面的变量中设置了单元格数组中的资产名称资产,当前价格在矢量价格,当前投资组合控股在矢量中持有和向量中的交易成本UnitCost

要分析此产品组合,您可以在A中设置一个遮挡器桌子对象来帮助跟踪价格、持股、权重等。特别是,你可以计算初始投资组合的权重,并在一个新的blotter字段中维护它们InitPort

资产= {'债券''大量股票''小型股票''新兴股市'};价格= 52.4;122.7;35.2;46.9);持有= [42938;24449;42612;15991);UnitCost = [0.001; 0.001; 0.001; 0.004 ]; Blotter = table(“RowNames”, 资产);Blotter.Price =价格;污水滴光灯=持有;财富= sum(blotter.price。* blotter.initholding);Blotter.Initport =(1 /财富)*(Blotter.Price。*遮挡器.Initholding);blotter.unitcost = UnitCost;墨水
答案=4×4表价格initholding initport Unitcost _____ ___________ ________ ___________ _____________债券52.4 42938 0.3 0.001大帽股票122.7 24449 0.4 0.001小型股票35.2 42612 0.2 0.001新兴股票46.9 15991 0.1 0.004

步骤2。模拟资产价格。

由于这是一个假设的例子,要从给定的资产类别的年度资产总回报的平均值和协方差来模拟资产价格,则Portsim.函数用于创建具有期望均值和协方差的资产回报。具体地说,Portsim.用于模拟五年的每月总回报,然后绘制以显示模拟总收益价格的日志

年度资产总回报的平均值和协方差保持在变量中assetmean.AssetCovar.模拟资产总回报价格(复合总回报)保持在变量中y.所有初始资产总收益率归一化1在这个例子中。

assetmean = [0.05;0.1;0.12;0.18];Assetcovar = [0.0064 0.00408 0.00192 0;0.00408 0.0289 0.0204 0.0119;0.00192 0.0204 0.0576 0.0336;0 0.0119 0.0336 0.1225];x = Portsim(Assetmean'/ 12,Assetcovar / 12,60);5年(60个月)每月总回报率[y,t] = ret2tick(x,[],1/12);%表格总收益价格。绘图(t,log(y));标题('\ Bfsimulated资产课总收益价格');Xlabel('年');ylabel ('日志总回价');传说(资产,'地点'“最佳”);

图中包含一个轴。标题为“\ bfsimulation Asset Class Total Return Prices”的轴包含了4个line类型的对象。这些对象代表债券、大盘股、小盘股和新兴股票。

步骤3.设置投资组合对象。

为了探索有效边界上的投资组合,建立一个文件夹对象使用这些规格:

  • 投资组合权是非负的,和为1

  • 股权分配不超过投资组合的85%。

  • 新兴股权不超过投资组合的35%。

这些规范纳入了文件夹目的P.在以下使用以使用的函数的顺序中使用文件夹目的。

  1. 初始投资组合的规范墨水给出Universe中的资产数量,因此您不需要指定numassets.直接的财产。接下来,设置默认约束(仅长约束和预算约束)。此外,建立组约束,对投资组合中的股票施加一个上界(股票在组矩阵中被识别为1's)和新兴股票的上限约束。虽然您可以使用备受股票的上限setBound.功能,注意到了addGroups函数用于设置此约束。

  2. 要具有完全指定的平均方差组合优化问题,必须指定资产返回的均值和协方差。由于从变量中的这些时刻开始assetmean.AssetCovar,你可以使用setAssetMoments.功能要将这些变量输入到您的中文件夹对象(请记住,您假设您的原始数据是每月返回,这就是为什么将年度输入时刻划分为12以获取每月返回数量)。

  3. 将总回报价格与estimateAssetMoments函数,并指定您的数据y是价格,而不是回报,来评估你的资产回报时刻文件夹目的。

  4. 虽然你的回报文件夹对象以月收益为单位,由于后续成本是按年化计算的,因此可以方便地将其指定为按年化的总收益,并直接转换为assetmean.AssetCovar你的财产文件夹目的P.

  5. 显示文件夹目的P.

p = portfolio('名称''资产拨分配投资组合'...“AssetList”, 资产,“InitPort”,blotter.initport);p = setDefaultConstraints(p);p = setgroups(p,[0,1,1,1],[],0.85);p = addgroups(p,[0,0,0,1],[],0.35);p = setAssetMoments(P,Assetmean / 12,Assetcovar / 12);p = emplataeaSetMoments(P,Y,'datomformat''价格');p.AssetMean = 12 * p.Assetmean;p.AssetCovar = 12 * p.AssetCovar;显示(P)
p =资产组合:BuyCost: [] SellCost: [] RiskFreeRate: [] Asset mean: [4x1 double] AssetCovar: [4x4 double] AssetCovar: [4x4 double][] bEquality: [] LowerBound: [4x1 double] UpperBound: [] LowerBudget: [] LowerBudget: [] UpperGroup: [] UpperGroup: [2x4 double] LowerGroup: [] UpperGroup: [2x1 double] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: [4x1 categorical]

步骤4。验证投资组合问题。

投资组合优化的一个重要步骤是验证投资组合问题是可行的,主要测试是确保组合的组合是非空和有界的。使用estismsbounds.函数来确定投资组合集的界限。在这种情况下,既然两人乌兰巴托是有限的,集合是有界的。

[LB,UB] =估计值(P);显示([LB,UB])
0.1500 1.0000 0 0.8500 0 0.8500 0 0.3500

第5步。绘制有效边界。

鉴于建造文件夹对象,使用plotFrontier函数查看高效的前沿。您可以使用40个投资组合显示前沿,而不是使用前沿的默认值为10个投资组合。注意,总有效的投资组合退货均比每年约6%和16%。

Plotfrontier(p,40)

图中包含一个轴。带有标题\ Bfasset分配产品组合的轴包含2个散射,线的2个对象。这些对象代表初始投资组合,高效的前沿。

步骤6。评估投资组合的总回报和净回报。

文件夹目的P.不包括交易费用使投资组合优化问题具体化吗P.用投资组合总回报作为回报代理。要处理净收益,先创造第二文件夹目的问:包括交易成本。

q = setCosts(P,UnitCost,UnitCost);显示(Q)
Q =具有属性的投资组合:Buycost:[4x1 Double] Sellcost:[4x1 Double]风险频率:[] assetmean:[4x1 double] Assetcovar:[4x4 Double] TrackingError:[] TrackingPort:[]营业册:[]SELLTURNOVER:[]名称:'资产分配组合'NUMASET:4 Assetlist:{1x4 Cell} initport:[4x1双]弥漫性:[] Binequality:[] Aequality:[]胎粪:[]下行:[4x1双]上行:[] LowBudget:1 upperBudget:1 GroupMatrix:[2x4 Double] DowerGroup:[]上组:[2x1 Double] Groupa:[] Groupb:[] Dreamratio:[] UppleRatio:[] Minnumasset:[] Maxnumasset:[]横向:[4x1分类]

步骤7.分析产品组合结构的描述性属性。

要更具体地了解有效投资组合的收益和风险范围,请使用estismsfrontierlimits.在高效前沿的端点获取投资组合的功能。鉴于这些投资组合,使用该投资组合来计算他们的时刻estibalportmoments.功能。以下代码生成一个表,该表列出了初始产品组合的风险和返回,以及高效前沿的投资组合的投资组合的总计和净时刻:

[prsk0,pret0] = estibalportmoments(p,p.initport);pret = estibalportreturn(p,p.timefrontierlimits);qret = estibalportreturn(q,q.stimatefrontierlimits);displayreturns(pret0,pret,qret)
年化投资组合退货......总净初始投资组合返回9.70%9.70%最低高效投资组合返回5.90%5.77%最高效率投资组合返回13.05%12.86%

结果表明,从当前投资组合到有效投资组合的交易成本在14到19个基点之间(这些成本是投资组合的总收益和净收益的差值)。另外,请注意,由于股权配置的限制,最大有效投资组合回报(13%)小于最大资产回报(18%)。

步骤8.在高效前沿的指定返回级别获取投资组合。

选择有效投资组合的常见方法是选择一个投资组合,其具有所需的预期产品返回范围的一系列。要获得从最低限度到高效前沿的最小返回范围的30%的投资组合,请获取净回报范围qret使用文件夹目的问:并插入以获得30%的水平interp1.获取投资组合的功能QWGT.

级别= 0.3;qret = estibalportreturn(q,q.stimatefrontierlimits);qwgt = estismsfrontierbyreturn(q,interp1([0,1],qret,级别));[QRSK,QRET] = estIbalportmoments(Q,QWGT);DisplayReturnLevel(级别,QRET,QRSK);
POSTFOLIO在高效前沿的30%回归水平......返回风险7.90 9.09
显示(QWGT)
qwgt =4×10.6252 0.1856 0.0695 0.1198

目标投资组合从最低到最大净返回的范围内的30%的返回率为7.9%,风险为9.1%。

步骤9.在高效前沿的指定风险级别获取投资组合。

虽然您可以接受此结果,但假设您想要针对投资组合风险的值。具体而言,假设您具有10%的保守目标风险,适度的目标风险为15%,攻击目标风险为20%,您希望获得满足每个风险目标的投资组合。使用estismsFrontierByRisk.获取变量中指定的目标风险的功能TargetRisk.得到的三种有效的投资组合QWGT.

TargetRisk = [0.10;0.15;0.20);qwgt = estimateFrontierByRisk(q, TargetRisk);显示(QWGT)
qwgt =4×30.5407 0.2020 0.1500 0.2332 0.0318 0.0318 0.0788 0.1280 0.4682 0.1474 0.2700 0.3500

使用estibalportrisk.计算三个投资组合的投资组合风险的功能,以确认已达到目标风险:

显示(estIbalPortRisk(Q,QWGT))
0.1000 0.1500 0.2000.

假设您要从当前投资组合转移到适度的投资组合。您可以估计购买和销售以获取此投资组合:

[qwgt, qbuy, qsell] = estimateFrontierByRisk(q, 0.15);

如果您平均购买和销售此投资组合,您可以看到平均营业额为17%,这大于15%的目标:

DISP(总和(QBUY + QSELL)/ 2)
0.1700

由于您还希望确保平均流动率不超过15%,因此可以将平均流动率约束添加到文件夹物体使用塞起

q = setTurnover(q, 0.15);[qwgt, qbuy, qsell] = estimateFrontierByRisk(q, 0.15);

您可以使用购买和销售进入估计的高效产品组合墨水

QBuy(ABS(QBUY)<1.0E-5)= 0;QSELL(ABS(QSELL)<1.0E-5)= 0;近0交易重量零零。吸墨纸。端口= qwgt;吸墨纸。买= qbuy; Blotter.Sell = qsell; display(Blotter)
答案=4×7表价格InitHolding InitPort UnitCost端口买入卖出_____ ___________ ________ ________ _______ ____ ________债券52.4 42938 0.3 0.001 0.18787 0 0.11213大型股122.7 24449 0.4 0.001 0.4 0 0小盘股票35.2 42612 0.2 0.001 0.16213 0 0.037871新兴股票46.9 15991 0.1 0.0040.25 0.15 0.

本文的元素墨水是组合权重的变化,必须转换为投资组合控股的变化,以确定交易。由于您正在使用Net Portfolio Returns,您必须首先将成本从您的初始投资组合转换为新产品组合。这是如下完成的:

总成本=财富* sum(Blotter。UnitCost。*(记事簿。购买+ Blotter.Sell))
totalcost = 5.6248e + 03

交易成本为5,625美元,因此,通常,您必须在设置新的组合重量之前相应地调整您的初始财富。但是,为了保持分析简单,请注意,您拥有足够的现金(60,0000美元),以支付交易费用,并且您不会触及现金职位以在您的投资组合中建立任何职位。因此,您可以使用新的投资组合控股和交易填充您的墨水,而无法在未经您投资的总财富的任何变化的情况下进入新产品组合。首先,计算投资组合控股:

Blotter.Holding =财富*(Blotter.port ./ Blotter.Price);

计算股票数量在你的墨水

Blotter.Buyshare =财富*(污水。宝布./ Blotter.Price);Blotter.Sellshare =财富*(Blotter.sell ./ Blotter.Price);

请注意您如何使用特设截断规则获得购买和销售单位数量的股票。清理墨水通过去掉单位成本和买卖组合权重:

Blotter.Buy = [];Blotter.sell = [];blotter.unitcost = [];

第10步。显示最终结果。

最后的结果是一个包含建议交易的记事本,从你当前的投资组合到中等风险的投资组合。要完成这笔交易,你需要卖出16049股债券资产和8069股小盘股资产,还需要购买23986股新兴市场股票资产。

显示器(压滤)
答案=4×7表价格Initholding initport港口持有Buyshare Sellshare _____ ___________ _________________ ________________债券52.4 42938 0.3 0.18787 22938 0.3 0.18787 22.7 24449 0.4 0.4 24449 0 0小帽股票35.2 42612 0.2 0.16213 34543 0 8068.8新兴股票46.9 15991 0.1 0.2539977 23986 0.

最后的情节使用了plotFrontier函数用于显示完全指定的投资组合优化问题的有效边界和初始投资组合。它还在有效边界上增加了中等风险或最终投资组合的位置。

plotFrontier (q, 40);抓住散射(estibalportRisk(Q,qwgt),estibalportreturn(q,qwgt),'填充''r');h =传奇('初始投资组合'“有效边界”'最终投资组合''地点'“最佳”);套(H,'字体大小',8);抓住离开

图中包含一个轴。带有标题\ Bfasset分配产品组合的轴包含3个类型散射,线的对象。这些对象代表初始投资组合,高效的边界,最终投资组合。

本地功能

功能displayreturns(pret0,pret,qret)fprintf(年化投资组合回报…\n);fprintf('%6s%6s \ n'“毛”'网');fprintf('初始投资组合返回%6.2f %%%6.2f %% \ n',100 * pret0,100 * pret0);fprintf('最小高效投资组合返回%6.2f %%%6.2f %% \ n',100 * pret(1),100 * qret(1));fprintf('最大有效投资回报%6.2f %% %6.2f %%\n',100 * pret(2),100 * qret(2));结尾功能/ /显示级别投资组合在有效边界上的收益率为%g%%,100 *级别);fprintf('%10s%10s \ n''返回''风险');fprintf('%10.2f%10.2f \ n',100 * qret,100 * qrsk);结尾

也可以看看

|||||||||

相关例子

更多关于

外部网站