针对基准的投资组合优化

此示例演示如何使用投资组合对象在金融工具箱™。

特别地,这个例子演示了如何优化一个投资组合,使相对于市场基准的信息比率最大化。具体来说,财务数据包含在a中表格是读入MATLAB®和可视化(在每天和每年的水平)进行。投资组合对象是使用市场数据创建的,使用的是每项资产的活跃日回报。利用支持投资组合对象的函数,可以金宝app直接计算有效边界。然后,通过求解一个自定义优化问题,得到信息比最大的资产配置。

使用MATLAB®导入历史数据

为资产世界和道琼斯工业平均指数(DJI)市场基准导入历史价格。数据被导入到表格从Microsoft®Excel®电子表格使用MATLAB®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.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.7944.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.58 44.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.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 - 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.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 - 1月- 200611043 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.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.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.3733.65 74.38 53.29 31.4 26.53 56.49 23.27 54.06 17- jani -2006 10896 27.97 67.84 56.93 44.47 60.85 37.75 25.15 33.2 18.68 40.11 35.56 31.2 81.05 24.52 39.11 33.77 73.99 52.85 31.16 26.34 22.25 56.25 54.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”);持有;包含(“日期”);ylabel (“正常价格”);标题(“正常资产价格与基准”);datetick (“x”);网格;

粗体线表示DJIA市场基准。

计算回报和风险调整后的回报

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

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

计算历史数据并绘制年度风险收益。请注意,该图处于年度级别,因此对每日收益进行缩放。

规模= 252;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *本chriskr = sqrt(scale) *基准风险;资产净值=规模*资产净值;benchReturnR = scale * benchRetn;图;散射(assetRiskR assetReturnR 6,“米”,“填充”);持有散射(benchRiskR benchReturnR 6,‘g’,“填充”);k = 1:length(assetNames) text(assetRiskR(k) + 0.005, assetReturnR(k), assetNames{k},“字形大小”8);结束文本(benchRiskR + 0.005, benchReturnR,“基准”,“字形大小”8);持有;包含(“风险(Std发展及回报)”);ylabel (的预期年收益率);网格;

建立一个投资组合优化

通过使用填充对象来设置投资组合优化问题投资组合。由于目标是根据基准优化投资组合配置,因此在投资组合对象。在这个例子中,投资组合中资产的预期收益和协方差被设置为它们的历史值。

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

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

p = setDefaultConstraints (p);

将资产收益和协方差添加到投资组合对象。

资产回报率-基准回报率;协议= estimateAssetMoments (p activReturn“missingdata”假)
协议=组合的属性:BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: x1双[15]AssetCovar: [15 x15双]TrackingError: [] TrackingPort:[]营业额:[]BuyTurnover: [] SellTurnover:[]的名字:[]NumAssets: 15 AssetList:{1连接细胞}InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality:[]下界:x1双[15]UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio:[] MinNumAssets: [] MaxNumAssets: [] BoundType: [15x1 categorical]

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

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

pwgtAct =预估边界(pAct, 20);%的估计重量[iskact, portRetnAct] = estimatePortMoments(pAct, pwgtAct);得到风险和回报提取资产时刻和名称* * * * * * * * * * * * * * * * * * * * * * * * * *assetActRiskDaily =√诊断接头(assetActCovarDaily));assetNames = pAct.AssetList;%重新调节* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *iskannual = sqrt(scale) * iskact;*每日*总资产;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);结束持有;包含(“风险(Std开发的积极回报)”);ylabel (“预期的积极回报”);网格;次要情节(2,1,2);情节(portRiskAnnual portRetnAnnual. / portRiskAnnual,“bo - - - - - -”,“MarkerFaceColor”,“b”);包含(“风险(Std开发的积极回报)”);ylabel (的信息比);网格;

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

运行混合优化,以找到投资组合沿边界与最大的信息比例。信息比率是相对回报与相对风险的比率(称为“跟踪误差”)。夏普比率关注的是相对于无风险资产的回报率,而信息比率则是基于相对于高风险基准(在本例中为DJI基准)的回报率。这是通过运行一个优化来实现的,该优化可以找到投资组合优化问题所返回的最大信息比投资组合的最优回报约束。从目标函数中调用投资组合优化函数infoRatioTargetReturn通过优化工具箱™函数进行优化fminbnd。当地的函数infoRatioTargetReturn计算最小(主动)风险组合给定一个目标主动回报。

infoRatioTargetReturn局部函数在优化例程中称为目标函数(fminbnd),以寻求最大化信息比率和最小化负信息比率的目标回报。

objFun = @(targetReturn) -infoRatioTargetReturn(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

绘制最优投资组合

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

%重新调节optiskannual = sqrt(scale) * optisk;optPortReturnAnnual = scale * optPortRetn;图;次要情节(2,1,1);散射(assetActRiskAnnual assetActRetnAnnual 6,“米”,“填充”);持有k = 1:length(assetNames) text(assetActRiskAnnual(k) + 0.005,assetActRetnAnnual(k),assetNames{k},“字形大小”8);结束情节(portRiskAnnual portRetnAnnual,“bo - - - - - -”,“MarkerSize”4“MarkerFaceColor”,“b”);情节(optPortRiskAnnual optPortReturnAnnual,“ro - - - - - -”,“MarkerFaceColor”,“r”);持有;包含(“风险(Std开发的积极回报)”);ylabel (“预期的积极回报”);网格;次要情节(2,1,2);情节(portRiskAnnual portRetnAnnual. / portRiskAnnual,“bo - - - - - -”,“MarkerSize”4“MarkerFaceColor”,“b”);持有情节(optPortRiskAnnual optPortReturnAnnual. / optPortRiskAnnual,“ro - - - - - -”,“MarkerFaceColor”,“r”);持有;包含(“风险(Std开发的积极回报)”);ylabel (的信息比);标题(“最优投资组合的信息比率”);网格;

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

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

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

本地函数

函数[infoRatio,出世]= infoRatioTargetReturn (targetReturn portObj)%计算目标收益组合的信息比率%有效边界但是= estimateFrontierByReturn (portObj targetReturn);portRiskAct = estimatePortRisk (portObj wts);infoRatio = targetReturn / portRiskAct;结束