主要内容

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

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

rng (1)为可重复性设置种子。负载CAPMuniversep = portfolio var (“AssetList”、资产(1:12));p = simulateNormalScenariosByData(p, Data(:,1:12), 20000,“missingdata”,真正的);p = setProbabilityLevel(p, 0.95);p = setDefaultConstraints(p);disp (p)
[] SellCost: [] RiskFreeRate: [] ProbabilityLevel: 0.9500 Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: 20000 Name: [] NumAssets: 12 AssetList: {1x12 cell} InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] grouppa: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] BoundType:(12 x1分类)

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

- 投资组合 返回 - 风险 免费的 投资组合 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);获取与所取得的回报相关联的投资组合权重%为最大回报风险比。pwgt = estimateFrontierByReturn(p,optret)
pwgt =12×10.0885 0 0 0 0 0.9115 0 0 0 0 0

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

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

图中包含一个axes对象。标题为E f f i c E nt空白f r on E r的轴对象包含两个类型为行、散的对象。

本地函数

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

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

另请参阅

|||||||

相关的例子

更多关于

外部网站