主要内容

基于基准的投资组合优化

这个例子展示了如何使用文件夹对象在Financial Toolbox™中。

该示例尤其表明,优化了组合,以最大化信息比率相对于市场基准。具体而言,包含在的财务数据桌子被读入MATLAB®并进行可视化(每天和每年的水平)。一个文件夹使用每个资产的活动日常返回使用市场数据创建对象。使用支持a的函数金宝app文件夹对象,高效的前沿直接计算。然后,解决了自定义优化问题以找到具有最大化信息比的资产分配。

使用MATLAB®导入历史数据

进口历史价格的资产宇宙和道琼斯工业平均指数(DJI)市场基准。数据导入到桌子从微软®Excel®电子表格使用MATLAB®readtable函数。

数据=可读取(“dowPortfolio.xlsx”);头(数据,10)
ANS =.表10×32DATES DJI AA AIG AXP BA C CAT DD DIS GE GM HD HON HPQ IBM INTC JNJ JPM KO MCD MCM MO MRK MSFT PFE PG T UTX VZ WMT XOM _____ ________________ _____________________ _____________________ __________________________ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ 03-JAN-2006 10847 28.72 68.41 51.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.6404-JAN-2006 10880 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.58 44.99 56.74 05-JAN-2006 10882 29.12 68.6 51.57 68.53 44.65 57.29 40.38 24.1933.47 19.34 38.67 35.97 28.97 80.56 25.25 59.74 37.67 33.05 39.1 74.85 52.52 31.13 26.34 22.9 56.3 22.92 54.41 27.9 44.38 56.45 06  -  2006年10959 29.02 68.89 51.75 67.57 44.65 58.43 40.55 24.52 19.61 33.7 38.96 36.53 29.8 82.9625.28 60.01 37.94 39.47 33.25 75.47 52.95 31.08 26.26 23.16 56.24 23.21 54.58 28.01 44.56 57.57 09-JAN-2006 11012 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.1244.4 57.54 10-JAN-2006 11012 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.1 25.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-JAN-2006 11043 28.05 69.6 52.59 68.3 44.98 59.2838.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-JAN-2006 10962 27.68 69.04 52.6 67.9 45.02 60.13 38.02 25.41 33.25 19.76 41.05 35.77 30.57 81.61 24.96 59.63 37.87 39.5 33.96 74.5753.23 31.41 26.48 22.9 56.02 23.24 53.9 28.69 44.43 57.77 13-JAN-2006 10960 27.81 68.84 52.5 67.7 44.92 60.24 37.86 25.47 315 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 28.75 54.1 44.1 59.06 17  -  2006年10896 27.97 67.84 52.03 66.93 44.47 60.85 37.75 25.15 18.68 33.2 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基准价格从表中分离出来。可视化显示了所有资产价格从统一开始标准化的演变,即累积收益。

benchPrice = data.DJI;assetNames = data.Properties.VariableNames(3:2:结束);%使用一半的资产显示.Variables assetPrice =数据(:,assetNames);assetP = assetPrice。: / assetPrice (1);benchmarkP = benchPrice / benchPrice(1);图;情节(data.Dates assetP);持有;(数据。日期、benchmarkP“线宽”,3,“颜色”'k');持有离开;包含(“日期”);ylabel ('标准化价格');标题(“标准化资产价格和基准”);网格

图包含轴对象。具有标准化资产价格和基准标记的轴对象包含16个类型的线路。

粗线表示道指市场基准。

计算回报率和风险调整回报率

从价格序列中计算收益序列,并计算资产时刻(历史收益和标准差)。可视化显示了所有资产的风险回报特征和DJI市场基准的散点图。

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

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

规模= 252;assetRiskR = sqrt(scale) * assetRisk;benchRiskR = sqrt(scale) * benchRisk;= size * assetReturnR;benchReturnR = scale * benchRetn;图;散射(assetRiskR assetReturnR 6,“米”'填充');持有散射(benchRiskR benchReturnR 6,‘g’'填充');text(assetRiskR(k) + 0.005, assetReturnR(k), assetNames{k},“字形大小”8);结束text(benchRiskR + 0.005, benchReturnR,“基准”“字形大小”8);持有离开;包含(“风险(发展回报)”);ylabel ('预计年度返回');网格

图包含轴对象。轴对象包含18个类型分散,文本的对象。

建立投资组合优化

通过使用对象来设置投资组合优化问题文件夹.因为目标是优化对基准测试的投资组合分配,所以计算并使用每个资产的主动返回文件夹对象。在这个例子中,投资组合中资产的预期收益和协方差被设置为它们的历史值。

p =组合(“AssetList”, assetNames);

设置默认的投资组合约束(所有权重之和为1不做空,100%投资风险资产)。

p = setDefaultConstraints (p);

添加资产回报和协方差文件夹对象。

activReturn = assetReturn - benchReturn;协议= estimateAssetMoments (p activReturn“missingdata”假)
pAct =资产组合:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [15x1 double] AssetCovar: [15x15 double] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 15 AssetList: {1x15 cell} InitPort: [] ainequal: [] b不等式:[]AEquality: [] bEquality: [] LowerBound:[15x1 double] UpperBound: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: [15x1 category]

使用使用的高效边界文件夹目的

计算20个最优投资组合的均值-方差有效边界。可视化单个资产的风险-回报特征的边界。此外,计算和可视化沿边界的每个投资组合的信息比率。

pwgtAct = estimateFrontier(pAct, 20);%估计权重。[portRiskAct, portRetnAct] = estimatePortMoments(pAct, pwgtAct);获得风险和回报。%提取资产时刻和名称。[assetActRetnDaily, assetActCovarDaily] = getAssetMoments(pAct); / /指定时间assetActRiskDaily =√诊断接头(assetActCovarDaily));assetNames = pAct.AssetList;%重新调节。assetActRiskAnnual = sqrt(scale) * assetActRiskDaily;= sqrt(scale) * portRiskAct;assetActRetnAnnual = scale * assetActRetnDaily;portRetnAnnual = scale * portRetnAct;图;次要情节(2,1,1);情节(portRiskAnnual portRetnAnnual,“bo - - - - - -”“MarkerFaceColor”“b”);持有;散射(assetActRiskAnnual assetActRetnAnnual 12,“米”'填充');持有text(assetActRiskAnnual(k) + 0.005, assetActRetnAnnual(k), assetNames{k},“字形大小”8);结束持有离开;包含(“风险(积极回报的性病发展)”);ylabel (“预期的积极回报”);网格;子图(2,1,2);plot(Portriskannual,portrynannual./portriskannual,“bo - - - - - -”“MarkerFaceColor”“b”);包含(“风险(积极回报的性病发展)”);ylabel (的信息比);网格

图中包含2个轴对象。轴对象1包含17个类型的线,分散,文本。轴对象2包含类型线的对象。

使用最优化工具箱™实现信息比率最大化

运行一个混合优化,沿着信息比率最大的边界找到投资组合。信息比率是相对回报与相对风险的比率(称为“跟踪误差”)。夏普比率着眼于相对于无风险资产的回报,而信息比率则是基于相对于风险基准的回报,在这里指的是大疆基准。这是通过运行一个优化来完成的,该优化找到最优收益约束,对于该约束,投资组合优化问题返回最大信息比率投资组合。投资组合优化函数是从一个目标函数中调用的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协议);optWts optPortRisk = estimatePortRisk(协议)
optPortRisk = 0.0040

绘制最佳的投资组合

验证是否发现的投资组合确实是最大信息比例组合。

%重新调节。OptPortRiskannual = SQRT(比例)* OptPortRisk;OptPortReturnanual = Scale * OptPortRetn;图;次要情节(2,1,1);分散(Assetactriskannual,AssetactretNannual,6,“米”'填充');持有text(assetActRiskAnnual(k) + 0.005,assetActRetnAnnual(k),assetNames{k},“字形大小”8);结束情节(portRiskAnnual portRetnAnnual,“bo - - - - - -”“MarkerSize”4“MarkerFaceColor”“b”);情节(optPortRiskAnnual optPortReturnAnnual,'ro-'“MarkerFaceColor”“r”);持有离开;包含(“风险(积极回报的性病发展)”);ylabel (“预期的积极回报”);网格;子图(2,1,2);情节(Portriskannual,Portrynannual。/ Portickannual,“bo - - - - - -”“MarkerSize”4“MarkerFaceColor”“b”);持有情节(optPortRiskAnnual optPortReturnAnnual. / optPortRiskAnnual,'ro-'“MarkerFaceColor”“r”);持有离开;包含(“风险(积极回报的性病发展)”);ylabel (的信息比);标题('与最佳投资组合的信息比率');网格

图中包含2个轴对象。axis对象1包含18个类型为散点、文本、行的对象。轴对象2与标题信息比例与最优投资组合包含2个类型线对象。

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

展示投资组合优化方案。

assetIndx = optWts > .001;结果= table(assetNames(assetIndx)', optWts(assetIndx)*100,“VariableNames”,{“资产”'重量'});disp (“最大信息比率组合:”
最大信息比率组合:
disp(结果)
资产重  ________ _______ {' AA} 1.539 0.35551{“AXP”}{' C '}{‘弟弟’}4.0684 9.6533 17.698{“hp”}{摩根大通的}21.565 26.736{' ' '}{‘莫’}{“微软”}2.6858 13.648 2.0509{“属下”}
流(“麦克斯主动回来了。信息比率组合为%0.2f%%\n', optPortRetn * 25200);
麦克斯回来了。信息比率投资组合为12.14%
流(“麦克斯的跟踪错误。信息比率组合为%0.2f%%\n'optPortRisk * sqrt (252) * 100);
Max的跟踪误差。信息比率投资组合为6.32%

本地功能

功能[infoRatio,出世]= infoRatioTargetReturn (targetReturn portObj)计算目标回报投资组合的信息比率%有效的边疆。但是= estimateFrontierByReturn (portObj targetReturn);portRiskAct = estimatePortRisk (portObj wts);infoRatio = targetReturn / portRiskAct;结束

另请参阅

||

相关的例子

更多关于

外部网站