主要内容

estimateMaxSharpeRatio

估计有效投资组合的夏普比率最大化为投资对象

描述

例子

(pwgt,pbuy,psell)= estimateMaxSharpeRatio (obj)估计有效投资组合的夏普比率最大化投资组合对象。在工作流程的详细信息,请参见组合对象的工作流

例子

(pwgt,pbuy,psell)= estimateMaxSharpeRatio (___,名称,值)添加可选名称-值对参数。

例子

全部折叠

估计最大化的有效资产组合的夏普比率。的estimateMaxSharpeRatio函数最大化投资组合的有效边界之间的夏普比率。下面的例子使用了默认值“直接”的方法来估计最大的夏普比率。更多的信息直接方法,看到算法

p =组合(“AssetMean”(0.3,0.1,0.5),“AssetCovar”,[0.01,-0.010,0.004;-0.010、0.040、-0.002;0.004,-0.002,0.023);p = setDefaultConstraints (p);plotFrontier (p, 20);重量= estimateMaxSharpeRatio (p);[风险,ret] = estimatePortMoments (p、重量);持有情节(风险,受潮湿腐烂,“* r”);

图包含一个坐标轴对象。坐标轴对象与标题E f f我E n c t空白f r o n t E r包含2线类型的对象。

估计最大化的有效资产组合的夏普比率。的estimateMaxSharpeRatio函数最大化投资组合的有效边界之间的夏普比率。下面的例子使用了“直接”方法一投资组合对象(p),不指定跟踪误差和只使用线性约束。的setSolver函数是用于控制SolverTypeSolverOptions。在这种情况下,SolverTypequadprog。更多的信息“直接”方法,请参阅算法

p =组合(“AssetMean”(0.3,0.1,0.5),“AssetCovar”,[0.01,-0.010,0.004;-0.010、0.040、-0.002;0.004,-0.002,0.023);p = setDefaultConstraints (p);plotFrontier (p, 20);p = setSolver (p,“quadprog”,“显示”,“关闭”,“ConstraintTolerance”1.0 e-8“OptimalityTolerance”1.0 e-8“StepTolerance”1.0 e-8“MaxIterations”,10000);重量= estimateMaxSharpeRatio (p);[风险,ret] = estimatePortMoments (p、重量);持有情节(风险,受潮湿腐烂,“* r”);

图包含一个坐标轴对象。坐标轴对象与标题E f f我E n c t空白f r o n t E r包含2线类型的对象。

估计最大化的有效资产组合的夏普比率。的estimateMaxSharpeRatio函数最大化投资组合的有效边界之间的夏普比率。下面的例子使用了“直接”方法一投资组合对象(p)指定了一个跟踪误差使用非线性约束。的setSolver函数是用于控制SolverTypeSolverOptions。在这种情况下fminconSolverType

p =组合(“AssetMean”(0.3,0.1,0.5),“AssetCovar”,[0.01,-0.010,0.004;-0.010、0.040、-0.002;0.004,-0.002,0.023),“磅”0,“预算”1);plotFrontier (p, 20);p = setSolver (p,“fmincon”,“显示”,“关闭”,“算法”,“sqp”,“SpecifyObjectiveGradient”,真的,“SpecifyConstraintGradient”,真的,“ConstraintTolerance”1.0 e-8“OptimalityTolerance”1.0 e-8“StepTolerance”1.0 e-8);重量= estimateMaxSharpeRatio (p);te = 0.08;p = setTrackingError (p, te、重量);[风险,ret] = estimatePortMoments (p、重量);持有情节(风险,受潮湿腐烂,“* r”);

图包含一个坐标轴对象。坐标轴对象与标题E f f我E n c t空白f r o n t E r包含2线类型的对象。

estimateMaxSharpeRatio函数最大化投资组合的有效边界之间的夏普比率。无风险资产的投资组合,有效的投资组合有多个夏普比率最大化的资本资产。因为的本质“直接”“迭代”方法,组合权重(pwgts)输出这些方法可能不同,但夏普比率是一样的。这个例子演示了的场景pwgts是不同的,夏普比率是一样的。

负载BlueChipStockMoments状态= MarketMean;mrsk =√MarketVar);cret = CashMean;crsk =√CashVar);p =组合(“AssetList”AssetList,“RiskFreeRate”,CashMean);p = setAssetMoments (p AssetMean AssetCovar);p = setInitPort (p, 1 / p.NumAssets);[ersk, eret] = estimatePortMoments (p, p.InitPort);p = setDefaultConstraints (p);pwgt = estimateFrontier (p, 20);[prsk,现成的]= estimatePortMoments (p, pwgt);pwgtshpr_fully = estimateMaxSharpeRatio (p,“方法”,“直接”);[riskshpr_fully, retshpr_fully] = estimatePortMoments (p, pwgtshpr_fully);q = setBudget (p 0 1);qwgt = estimateFrontier (q, 20);[qrsk, qret] = estimatePortMoments (q, qwgt);

画出有效边界切线(01现金)。

pwgtshpr_direct = estimateMaxSharpeRatio (q,“方法”,“直接”);pwgtshpr_iter = estimateMaxSharpeRatio (q,“方法”,“迭代”);% e-8“TolX”默认为1[riskshpr_diret, retshpr_diret] = estimatePortMoments (q, pwgtshpr_direct);[riskshpr_iter, retshpr_iter] = estimatePortMoments (q, pwgtshpr_iter);clf;portfolioexamples_plot (“有效边界与资本配置线”,{“行”prsk成衣的,{“英孚”},“- r”2},{“行”qrsk qret, {“EF和riskfree”},“- b”1},{“散射”(mrsk crsk、ersk riskshpr_fully, riskshpr_diret, riskshpr_iter),(状态、cret eret、retshpr_fully retshpr_diret, retshpr_iter], {“市场”,“现金”,“平等”,“夏普完全投资”,“夏普diret”,“夏普iter”}},{“散射”,sqrt(诊断接头(p.AssetCovar)), p。AssetMean p.AssetList,“r”});

图包含一个坐标轴对象。坐标轴对象与标题E f f我E n c t空白f r o n t我空白E r w t h空白c p i t l空白l l o c t i o n空白l i n E包含40线类型的对象,散射,文本。这些对象代表英孚,EF riskfree。

当一个无风险资产投资组合是不可用的,换句话说,完全投资组合,有效边界曲线,红线对应上面的图所示。因此,有一个独特的(风险,回报)指出,夏普比率最大化,其中“迭代”“直接”都将找到方法。如果允许投资组合投资于无风险资产,红色的一部分有效边界是取代了资本配置线,导致无风险投资组合的有效边界的(蓝线)。上的所有风险,回报)分直蓝线共享相同的夏普比率。此外,很可能“迭代”“直接”方法得到不同的点,因此有不同的资产配置。

当使用“迭代”方法,您可以使用一个可选的“TolX”名称-值参数。TolX是一个终止宽容,与可能的回报水平的有效边界。如果所选的TolX值是大回报的范围相比,那么解决方案的准确性很差。TolX应该是一个数量小于0.01 * (maxReturn- - - - - -minReturn)。

maxReturn = max (qret);%最大回报投资组合minReturn = min (qret);%分钟返回投资组合显示器(0.01 * (maxReturn-minReturn))
1.5193 e-04

增加终止宽容的目的是加快收敛的速度“迭代”算法。然而,正如前面提到的,解决方案的准确性会降低。你可以看到这个表中。

pwgtshpr_iter_largerTol = estimateMaxSharpeRatio (q,“方法”,“迭代”,“TolX”1的军医);显示(表(pwgtshpr_iter pwgtshpr_iter_largerTol,“VariableNames”,{“默认TolX = 1 e-8”,“TolX = 1的军医”}))
表默认TolX 30 x2 = 1 e-8 TolX = 1的军医___________________ ___________ 0 0 0 0 0 0 0 0 0 0::0 0 0.034997 - 0.034998 0 0 0.1285 0.1285 0.10979 0.10979显示所有30行。

在表中,权重的值略有不同的权重得到默认的公差,如预期。

创建一个投资组合对象为三种资产。

AssetMean = (0.0101110;0.0043532;0.0137058);AssetCovar = [0.00324625 0.00022983 0.00420395;0.00022983 0.00049937 0.00019247;0.00420395 0.00019247 0.00764097);p =组合(“AssetMean”AssetMean,“AssetCovar”,AssetCovar);p = setDefaultConstraints (p);

使用setBounds与半连续约束集=00.02< =< =0.5对所有=1,……NumAssets

p = setBounds (p, 0.02, 0.5,“BoundType”,“条件”,“NumAssets”3);

当处理一个投资组合对象,setMinMaxNumAssets功能使您能够设置基数约束的多头组合。这集的基数约束投资组合对象,分配资产总数满足之间的非零半连续约束MinNumAssetsMaxNumAssets。通过设置MinNumAssets=MaxNumAssets= 2,只有两三个资产投资组合。

p = setMinMaxNumAssets (p, 2 2);

使用estimateMaxSharpeRatio估计有效投资组合的夏普比率最大化。

重量= estimateMaxSharpeRatio (p,“方法”,“迭代”)
重量=3×10.0000 0.5000 0.5000

estimateMaxSharpeRatio函数使用的适应解决来解决这个问题。使用setSolverMINLP功能配置SolverType和选项。

p.solverOptionsMINLP
ans =结构体字段:MaxIterations: 1000 AbsoluteGapTolerance: 1.0000 e-07 RelativeGapTolerance: 1.0000 e-05 NonlinearScalingFactor: 1000 ObjectiveScalingFactor: 1000显示:“关闭”CutGeneration:“基本”MaxIterationsInactiveCut: 30 ActiveCutTolerance: 1.0000 e-07 IntMasterSolverOptions: [1 x1 optim.options。Intlinprog] NumIterationsEarlyIntegerConvergence: 30

输入参数

全部折叠

对象组合,使用指定的投资组合对象。

请注意

无风险利率是获得的财产RiskFreeRate组合对象中。如果你离开RiskFreeRate未设置的,它被认为是0。如果投资组合的最大回报小于RiskFreeRate,解决方案是设置为pwgt在马克斯返回和由此产生的夏普比率将是负的。

创建一个组合对象的更多信息,请参阅

数据类型:对象

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:[pwgt, pbuy psell] = estimateMaxSharpeRatio (p,“方法”,“迭代”)

方法来估计夏普比率,指定为逗号分隔组成的“方法”一个特征向量与下列值之一:

请注意

如果您使用的是estimateMaxSharpeRatio与一个投资组合对象与半连续和基数约束规定setBoundssetMinMaxNumAssets,你可以只使用“迭代”方法。

数据类型:字符

宽容的步长fminbnd当使用收敛“迭代”方法,指定为逗号分隔两人组成的“TolX”和积极的标量。步长与返回水平取得了有效边界和尝试fminbnd。如果指定的TolX大回报的范围相比,解决方案的准确性很差。TolX应该是一个数量小于0.01 * (maxReturn- - - - - -minReturn)。

请注意

如果“直接”方法选择,TolX将被忽略。

数据类型:

输出参数

全部折叠

投资组合有效边界上的一个最大的夏普比率,作为一个返回NumAssets向量。

购买相对于初始投资组合投资组合的有效边界最大Sharpe比率,作为一个返回NumAssets向量。

pbuy返回的投资组合输入对象(obj)。

销售相对于初始投资组合投资组合的有效边界与最大的夏普比率,作为一个返回NumAssets向量。

psell返回的投资组合输入对象(obj)。

更多关于

全部折叠

夏普比率

夏普比率的均值之间的差异的比例是投资组合的回报和无风险利率除以投资组合回报率的标准差。

estimateMaxSharpeRatio函数最大化投资组合的有效边界之间的夏普比率。

提示

您还可以使用点符号来估计一个有效的投资组合,最大化的夏普比率。

[pwgt, pbuy psell] = obj.estimateMaxSharpeRatio;

算法

夏普比率的最大化是通过使用“直接”“迭代”方法。为“直接”方法,考虑下面的场景。夏普比率是最大化:

一个 x z e μ T x r f x T C x , 年代 t x = 1 , 0 x 1 ,

在哪里μC均值和协方差矩阵,rf是无风险利率。

如果μTx- - - - - -rf≤0为所有x最大化的投资组合的夏普比率是最大的回报。

如果μTx- - - - - -rf> 0,让 t = 1 μ T x r f

y=tx8.2节(Cornuejols [1])。一些替换之后,您可以将原始问题转换为以下形式

n z e y T C y , 年代 t y = t , t > 0 , 0 y t, μ T y r f t = 1。

只有一个优化需要解决,因此得名“直接”。投资组合权重可以恢复了x*=y*/t*

“迭代”迭代方法,这个想法是为了探索有效边界上的投资组合在不同的回报水平和定位的最大的夏普比率。因此,多个优化问题解决过程中,而不是只有一个“直接”方法。因此,“迭代”方法是比较缓慢“直接”方法。

引用

[1]Cornuejols、g和Reha Tutuncu。优化的融资方法。剑桥大学出版社,2007年。

版本历史

介绍了R2011b