主要内容

计算CVaR投资组合的最大回报风险比

创建一个PortfolioCVaR对象并合并来自的资源列表CAPMUniverse.mat.使用simulateNormalScenariosByData为每个资产模拟场景。这些投资组合约束要求完全投资于只做多头的投资组合(非负权重必须之和为1).

rng (1)为重现性设置种子。负载CAPMuniversep = PortfolioCVaR (“AssetList”、资产(1:12));p = simulatenormalscenario bydata (p, Data(:,1:12), 20000,“missingdata”,真正的);p = setProbabilityLevel(p, 0.95);p = setDefaultConstraints (p);disp (p)
portfolio var with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] ProbabilityLevel: 0.9500 Turnover: [] BuyTurnover: [] SellTurnover: [] numscenario: 20000 Name: [] NumAssets: 12 AssetList: {1x12 cell} InitPort: [] ainequal: [] b不等式:[]AEquality: [] bEquality: [] LowerBound: [12x1 double] UpperBound: [] LowerBudget:1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: [12x1 category]

为了得到报酬风险比最大化的投资组合(相当于均值-方差投资组合的夏普比率),在有效前沿上迭代搜索报酬风险比负最小化的投资组合:

- 投资组合 返回 - 风险 免费的 投资组合 CVaR

要做到这一点,使用sratio函数中定义的本地函数部分,以回报负的回报风险比为目标回报。然后,将这个函数传递给fminbndfminbnd遍历可能的返回值并评估其相关的回报风险比。fminbnd获得最大回报/风险比(或使负回报/风险比最小化)的最优回报。

获得投资组合的最小和最大收益。pwgtLimits = estimateFrontierLimits (p);retLimits = estimatePortReturn (p, pwgtLimits);minret = retLimits (1);maxret = retLimits (2);%在边界上迭代搜索。找到最小化的返回值回报风险比的负%。Fhandle = @(ret) iterative_local_obj(ret,p);选择= optimset (“显示”“关闭”“TolX”1.0 e-8);Optret = fminbnd(fhandle, minret, maxret, options);获得与所获得回报相关的投资组合权重%最大回报风险比。optret pwgt = estimateFrontierByReturn (p)
pwgt =12×10.0885 0 0 0 0.9115 0 0 0 0⋮

使用plotFrontier绘制有效边界和estimatePortRisk估计投资组合的最大回报风险比。

plotFrontier (p);持有计算最大回报风险比投资组合的风险水平。optrsk = estimatePortRisk (p, pwgt);散射(optrsk optret 50,“红色”“填充”)举行

图中包含一个坐标轴。标题为\ befficient Frontier的轴包含两个类型为line, scatter的对象。

本地函数

计算目标回报水平的负回报风险比的局部函数。

函数Sratio = iterative_local_obj(ret, obj)将目标函数设为回报风险比的负值。风险= estimatePortRisk (obj, estimateFrontierByReturn (obj, ret));如果~isempty(obj.RiskFreeRate) sratio = -(ret - obj.RiskFreeRate)/风险;其他的sratio = ret /风险;结束结束

另请参阅

|||||||

相关的例子

更多关于

外部网站