基于基准的投资组合优化

此示例显示了如何使用该示例使用该方法使用POSTFOLIO优化投资组合Financial Toolbox™中的对象。

这个例子特别说明了如何优化投资组合,以最大化相对于市场基准的信息比率。具体地说,财务数据包含在表格已读入MATLAB®和可视化(在每日和年度等级)进行可视化。使用每个资产的活动日常返回使用市场数据创建投资组合对象。使用支持投资组合对象的函数,直接万博1manbetx计算高效的前沿。然后,解决了自定义优化问题以找到具有最大化信息比的资产分配。

使用MATLAB®导入历史数据

输入资产宇宙和道琼斯工业平均指数(DJI)市场基准的历史价格。将数据导入表格使用Matllab®的Microsoft®Excel®电子表格readtable功能。

数据= readtable (“dowPortfolio.xlsx”);头(数据,10)
ans =10×32表日期收AA AIG AXP英航C猫弟弟说通用电气通用高清鸿hp IBM intel JNJ摩根大通KO MCD嗯莫merck microsoft pfizer PG T联合登陆京东商城XOM  ___________ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ 03 - 10847年1月- 2006年28.72 - 68.4151.53 68.63 45.26 55.86 40.68 24.18 33.6 17.82 39.79 36.14 28.35 80.13 24.57 59.08 37.78 38.98 32.72 75.93 52.27 30.73 26.19 22.16 56.38 22.7 54.94 26.79 44.9 56.64 04 - 10880年1月- 2006 28.89 68.51 51.03 69.34 44.42 57.29 40.46 23.77 33.56 18.3 39.05 35.99 29.18 80.03 24.9 59.99 37.56 38.91 33.01 75.54 52.65 31.08 26.32 22.88 56.48 22.87 54.61 27.5844.99 - 56.74 05 - 10882年1月- 2006 29.12 68.6 51.57 68.53 44.65 57.29 40.38 24.19 33.47 19.34 38.67 35.97 28.97 80.56 25.25 59.74 37.67 39.1 33.05 74.85 52.52 31.13 26.34 22.9 56.3 22.92 54.41 27.9 44.38 56.45 06 - 10959年1月- 2006 29.02 68.89 51.75 67.57 44.65 58.43 40.55 24.52 33.7 19.61 38.96 36.53 29.8 82.96 25.28 60.01 37.94 39.47 33.25 75.47 52.9531.08 26.26 23.16 56.24 23.21 54.58 28.01 44.56 57.57 09 - 11012年1月- 2006 29.37 68.57 53.04 67.01 44.43 59.49 40.32 24.78 33.61 21.12 39.38 36.23 30.17 81.76 25.44 60.38 38.55 39.66 33.88 75.84 53.11 31.58 26.21 23.16 56.67 23.3 55.2 28.12 44.4 57.54 10 - 11012年1月- 2006 28.44 69.18 52.88 67.33 44.57 59.25 40.2 25.09 33.43 20.79 40.33 36.17 30.33 82.125.1 60.49 38.61 39.7 33.91 75.37 53.04 31.27 26.35 22.77 56.45 23.16 55.24 28.24 44.54 57.99 11 - 11043年1月- 2006 28.05 69.6 52.59 68.3 44.98 59.28 38.87 25.33 33.66 20.61 41.44 36.19 30.88 82.19 25.12 59.91 38.58 39.72 34.5 75.22 53.31 31.39 26.63 23.06 56.65 23.34 54.41 28.58 45.23 58.38 12 - 10962年1月- 2006 27.68 69.04 52.6 67.9 45.02 60.13 38.0225.41 33.25 19.76 41.05 35.77 30.57 81.61 24.96 59.63 37.87 39.5 33.96 74.57 53.23 31.41 26.48 22.9 56.02 23.24 53.9 28.69 44.43 57.77 13 - 10960年1月- 2006 27.81 68.84 52.5 67.7 44.92 60.24 37.86 25.47 33.35 19.2 40.43 35.85 31.43 81.22 24.78 59.26 37.84 39.37 33.65 74.38 53.29 31.4 26.53 22.99 56.49 23.27 54.1 28.75 44.1 27.97 59.06 17 - 10896年1月- 2006年67.84 52.03 66.93 44.47 60.85 37.75 25.15 33.2 18.68 40.11 35.56 31.2 81.05 24.52 58.74 37.64 39.11 33.77 73.99 52.85 31.16 26.34 22.63 56.25 23.13 54.41 28.12 43.66 59.61

从表中分离资产名称、资产价格和DJI基准价格。可视化显示了所有资产价格的演变,从统一开始,即累计收益。

日期= datenum (data.Dates);benchPrice = data.DJI;assetNames = data.Properties.VariableNames(3:2:结束);%使用一半的资产进行显示.Variables assetPrice =数据(:,assetNames);assetP = assetPrice。: / assetPrice (1);benchmarkP = benchPrice / benchPrice(1);图;情节(日期、assetP);抓住;情节(日期,Benchmarkp,“线宽”3,“颜色”“k”);抓住;Xlabel('日期');ylabel(“正常价格”);标题('规范化资产价格和基准');dateTick(“x”);网格;

粗线表示Djia市场基准。

计算返回和风险调整的返回

从价格系列计算回报系列并计算资产时刻(历史退货和标准偏差)。可视化显示了所有资产的风险返回特性的散点图,以及DJI市场基准。

benchReturn = tick2ret (benchPrice);assetReturn = tick2ret (assetPrice);benchRetn =意味着(benchReturn);benchRisk =性病(benchReturn);assetRetn =意味着(assetReturn);assetRisk =性病(assetReturn);

计算历史统计数据并绘制年度风险回报。请注意,图中是年度水平,因此对日收益进行缩放。

Scale = 252;assetriskr = sqrt(scale)* assetrisk;Benchriksr = SQRT(比例)* Benchrisk;assetreturnr = scale * assetretn;BENCHRETURNR = SCALE * BENCHRETN;图;散射(Assetriskr,Assetreturnr,6,“米”“填充”);抓住分散(Benchriksr,Benchreturnr,6,‘g’“填充”);为了k = 1:长度(Assetnames)文本(AssetriskR(k)+ 0.005,Assetreturnr(k),Assetnames {K},“字形大小”,8);结尾text(benchRiskR + 0.005, benchReturnR,'基准'“字形大小”,8);抓住;Xlabel('风险(返回的STD开发)');ylabel(的预期年收益率);网格;

设置投资组合优化

通过填充对象来建立投资组合优化问题投资组合.因为目标是优化投资组合配置针对一个基准,每个资产的积极回报计算和使用投资组合目的。在这个例子中,投资组合中资产的预期回报和协方差被设定为历史价值。

p =组合('assetlist', assetNames);

设置默认的投资组合约束(所有权重和到1,没有短缺,100%的风险资产投资)。

p = setDefaultConstraints (p);

添加资产回报和协方差投资组合目的。

activReturn = assetReturn - benchReturn;协议= estimateAssetMoments (p activReturn'缺失数据'假)
资产组合:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [15x1 double] AssetCovar: [15x15 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 15 AssetList: {1x15 cell} InitPort: [] ainequal: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [][15x1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: [15x1 categorical]

计算有效边界使用投资组合对象

计算20最佳投资组合的平均方差高效前沿。通过各个资产的风险返回特征可视化边界。此外,计算和可视化边缘的每个投资组合的信息比率。

PWGTACT =估算额(PACT,20);%的估计重量[Portrickact,Portretnact] = estIbalportmoments(PACT,PWGTACT);%获得风险和回报%提取资产时刻和名称[assetActRetnDaily, assetActCovarDaily] = getAssetMoments(pAct);assetActRiskDaily =√诊断接头(assetActCovarDaily));assetNames = pAct.AssetList;%重新调节Assetactriscannual = SQRT(比例)* AssetactriskDaily;PortickAnnanal = SQRT(刻度)* Portrickact;AssetactretNannual = Scale * AssetactretNDaily;PortretNannual = Scale * Portretnact;图;次要情节(2,1,1);情节(Portriskannual,Portretnannual,“bo - - - - - -”“MarkerFaceColor”'B');抓住;散射(assetActRiskAnnual assetActRetnAnnual 12,“米”“填充”);抓住;为了k = 1:length(assetNames) text(assetActRiskAnnual(k) + 0.005, assetActRetnAnnual(k), assetNames{k},“字形大小”,8);结尾抓住;Xlabel('风险(活跃返回的STD开发)');ylabel('预期活跃返回');网格;次要情节(2,1,2);情节(portRiskAnnual portRetnAnnual. / portRiskAnnual,“bo - - - - - -”“MarkerFaceColor”'B');Xlabel('风险(活跃返回的STD开发)');ylabel('信息比率');网格;

使用优化工具箱™执行信息比率最大化

运行一个混合优化,找到沿信息比率最大的边界的投资组合。信息比率是相对收益与相对风险的比率(称为“跟踪误差”)。夏普比率考虑的是相对于无风险资产的回报,而信息比率则是基于相对于高风险基准的回报,在这种情况下是大疆基准。这是通过运行一个优化来实现的,该优化找到最优收益约束,使投资组合优化问题得到最大的信息比率投资组合。投资组合优化函数来自一个目标函数infoRatioTargetReturn由优化工具箱™功能进行了优化FMINBND.本地功能infoRatioTargetReturn考虑到目标主动返回,计算最小(有效)风险组合。

infoRatioTargetReturn将本地功能称为优化例程中的目标函数(FMINBND)寻找目标回报,使信息比率最大化,使负信息比率最小化。

objFun = @(targetReturn) - informatiotargetreturn (targetReturn,pAct);选择= optimset ('tolx'1.0 e-8);[optPortRetn, ~, exitflag] = fminbnd(objFun,min(portRetnAct),max(portRetnAct),options);

得到最优投资组合的权重、信息比和风险回报。

[Optinforatio,OPTWTS] = InforatiotARGETRETURN(OPTPORTRETN,PATT);OptPortRisk = estIbalPortRisk(PACT,OPTWTS)
OptPortRisk = 0.0040.

绘制最优投资组合

验证所找到的投资组合确实是最大的信息比率投资组合。

%重新调节optPortRiskAnnual = sqrt(scale) * optPortRisk;optPortReturnAnnual = scale * optPortRetn;图;次要情节(2,1,1);散射(assetActRiskAnnual assetActRetnAnnual 6,“米”“填充”);抓住为了k = 1:长度(assetnames)文本(Assetactriskannual(k)+ 0.005,AssetactretNannual(k),Assetnames {K},“字形大小”8);结尾情节(portRiskAnnual portRetnAnnual,“bo - - - - - -”“MarkerSize”4“MarkerFaceColor”'B');情节(optPortRiskAnnual optPortReturnAnnual,“ro - - - - - -”“MarkerFaceColor”'r');抓住;Xlabel('风险(活跃返回的STD开发)');ylabel('预期活跃返回');网格;次要情节(2,1,2);情节(portRiskAnnual portRetnAnnual. / portRiskAnnual,“bo - - - - - -”“MarkerSize”4“MarkerFaceColor”'B');抓住情节(optPortRiskAnnual optPortReturnAnnual. / optPortRiskAnnual,“ro - - - - - -”“MarkerFaceColor”'r');抓住;Xlabel('风险(活跃返回的STD开发)');ylabel('信息比率');标题(“最优投资组合的信息比率”);网格;

显示组合优化解决方案

显示投资组合优化解决方案。

AssetIndx = Optwts> .001;结果=表(Assetnames(AssetIndx)',Optwts(AssetIndx)* 100,'variablenames',{'资产'“重量”});DISP(“最大信息比率组合:”);
最大信息比率组合:
disp(结果);
资产重量________ _______ {'aa'} 1.539 {'c'} 9.6533 {'jpq'} 17.698 {'jpm'} 21.565 {'mcd'} 26.736 {'mo'13.648 {'msft'} 2.6858 {'UTX'} 2.0509
fprintf(“麦克斯主动回来了。信息比率portfolio%0.2f %% \ n',OptPortRetn * 25200);
最大的主动返回。信息比率产品组合为12.14%
fprintf('最大的跟踪错误。信息比率portfolio%0.2f %% \ n',OptPortRisk * SQRT(252)* 100);
跟踪最大错误。信息比率组合为6.32%

本地函数

函数[Inforatio,WTS] = InforatiotAragetReturn(TargetReturn,Portobj)计算目标收益投资组合的信息比率%高效的边疆wts = estismsfrontierbyreturn(portobj,targetreturn);PortrickAct = estimePortRisk(Portobj,WTS);Inforatio = TargetReturn / Portrickact;结尾