estimateFrontierByRisk
评估目标投资组合风险的最佳投资组合
语法
描述
[
用目标投资组合风险估计最佳投资组合pwgt
,pbuy
,psell
) = estimateFrontierByRisk (obj
,TargetRisk
)投资组合
,PortfolioCVaR
,或PortfolioMAD
对象。有关使用这些不同对象时各自工作流的详细信息,请参见组合对象的工作流,PortfolioCVaR对象的工作流,PortfolioMAD对象的工作流.
例子
为一个投资组合对象获取具有目标投资组合风险的投资组合
为了获得具有目标投资组合风险的有效投资组合estimateFrontierByRisk
函数接受一个或多个目标投资组合风险,并获得具有指定风险的有效投资组合。假设您有一个由四种资产组成的宇宙,您希望获得有效的投资组合,目标投资组合风险分别为12%、14%和16%。本例使用默认值“直接”
具有目标投资组合风险的最优投资组合估计方法。
M = [0.05;0.1;0.12;0.18);C = [0.0064 0.00408 0.00192 0;0.00408 0.0289 0.0204 0.0119;0.00192 0.0204 0.0576 0.0336;0 0.0119 0.0336 0.1225];p =投资组合;p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]); display(pwgt);
pwgt =4×30.3984 0.2659 0.1416 0.3064 0.3791 0.4474 0.0882 0.1010 0.1131 0.2071 0.2540 0.2979
获取具有目标投资组合风险的投资组合投资组合
对象与BoundType
,MinNumAsset
,MaxNumAsset
约束
当来自'的约束条件的任意一个或任意组合有条件的
BoundType
,MinNumAssets
,MaxNumAssets
是主动的,将组合问题表述为混合整数规划问题,并使用MINLP求解器。
创建一个投资组合
对象用于三个资产。
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
用半连续约束来设定西=0
或0.02
< =西
< =0.5
对所有我=1
,……NumAssets
.
p = setBounds(p, 0.02, 0.7,“BoundType”,“条件”,“NumAssets”3);
当与投资组合
对象,setMinMaxNumAssets
函数使您能够设置对投资资产数量的限制(称为基数约束)。这将设置满足之间绑定约束的已分配资产的总数MinNumAssets
而且MaxNumAssets
.通过设置MinNumAssets
=MaxNumAssets
= 2时,三种资产中只有两种被投资到投资组合中。
p = setMinMaxNumAssets(p, 2,2);
使用estimateFrontierByRisk
评估具有目标投资组合风险的最优投资组合。
[pwgt, pbuy, psell] = estimateFrontierByRisk(p,[0.0324241, 0.0694534])
pwgt =3×20 0.5000 0.6907 0.0000 0.3093 0.5000
pbuy =3×20 0.5000 0.6907 0.0000 0.3093 0.5000
psell =3×20 0 0 0 0 0 0
的estimateFrontierByRisk
函数使用MINLP求解器来解决这个问题。使用setSolverMINLP
命令,配置SolverType
和选项。
p.solverTypeMINLP
ans = ' OuterApproximation '
p.solverOptionsMINLP
ans =结构体字段:maxiteration: 1000 AbsoluteGapTolerance: 1.0000e-07 RelativeGapTolerance: 1.0000e-05 NonlinearScalingFactor: 1000 ObjectiveScalingFactor: 1000 Display: 'off' CutGeneration: 'basic' maxiterationsinactivcut: 30 activecutttolerance: 1.0000e-07 IntMasterSolverOptions: [1x1 optim.options.]Intlinprog] NumIterationsEarlyIntegerConvergence: 30
使用直接方法和求解选项为一个组合对象获取带有目标组合风险的组合
为了获得具有目标投资组合风险的有效投资组合estimateFrontierByRisk
函数接受一个或多个目标投资组合风险,并获得具有指定风险的有效投资组合。假设您有一个由四种资产组成的宇宙,您希望获得有效的投资组合,目标投资组合风险分别为12%、14%和16%。本例使用默认值“直接”
具有目标投资组合风险的最优投资组合估计方法。的“直接”
方法使用fmincon
以目标风险为二次非线性约束,求解投资组合收益最大化的优化问题。setSolver
指定的年代olverType
而且SolverOptions
为fmincon
.
M = [0.05;0.1;0.12;0.18);C = [0.0064 0.00408 0.00192 0;0.00408 0.0289 0.0204 0.0119;0.00192 0.0204 0.0576 0.0336;0 0.0119 0.0336 0.1225];p =投资组合;p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); p = setSolver(p,“fmincon”,“显示”,“关闭”,“算法”,“sqp”,...“SpecifyObjectiveGradient”,真的,“SpecifyConstraintGradient”,真的,...“ConstraintTolerance”1.0 e-8“OptimalityTolerance”1.0 e-8“StepTolerance”1.0 e-8);pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]);显示(pwgt);
pwgt =4×30.3984 0.2659 0.1416 0.3064 0.3791 0.4474 0.0882 0.1010 0.1131 0.2071 0.2540 0.2979
为PortfolioCVaR对象获取具有目标投资组合风险的投资组合
为了获得具有目标投资组合风险的有效投资组合estimateFrontierByRisk
函数接受一个或多个目标投资组合风险,并获得具有指定风险的有效投资组合。假设您有一个由四种资产组成的宇宙,您希望获得有效的投资组合,目标投资组合风险分别为12%、20%和30%。
M = [0.05;0.1;0.12;0.18);C = [0.0064 0.00408 0.00192 0;0.00408 0.0289 0.0204 0.0119;0.00192 0.0204 0.0576 0.0336;0 0.0119 0.0336 0.1225];rng (11);p = PortfolioCVaR; p = simulateNormalScenariosByMoments(p, m, C, 2000); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.95); pwgt = estimateFrontierByRisk(p, [0.12, 0.20, 0.30]); display(pwgt);
pwgt =4×30.5363 0.1387 0 0.2655 0.4991 0.3830 0.0570 0.1239 0.1461 0.1412 0.2382 0.4709
这个函数rng
(
)重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。
为一个PortfolioMAD对象获取具有目标投资组合风险的投资组合
为了获得具有目标投资组合风险的有效投资组合estimateFrontierByRisk
函数接受一个或多个目标投资组合风险,并获得具有指定风险的有效投资组合。假设您有一个由四种资产组成的宇宙,您希望获得有效的投资组合,目标投资组合风险分别为12%、20%和25%。本例使用默认值“直接”
具有目标投资组合风险的最优投资组合估计方法。
M = [0.05;0.1;0.12;0.18);C = [0.0064 0.00408 0.00192 0;0.00408 0.0289 0.0204 0.0119;0.00192 0.0204 0.0576 0.0336;0 0.0119 0.0336 0.1225];rng (11);p = PortfolioMAD; p = simulateNormalScenariosByMoments(p, m, C, 2000); p = setDefaultConstraints(p); pwgt = estimateFrontierByRisk(p, [0.12, 0.20, 0.25]); display(pwgt);
pwgt =4×30.1610 00 0.4784 0.2137 0.0047 0.1116 0.1384 0.1200 0.2490 0.6480 0.8753
这个函数rng
(
)重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。
使用直接方法和求解器选项为PortfolioMAD对象获取带有目标投资组合风险的投资组合
为了获得具有目标投资组合风险的有效投资组合estimateFrontierByRisk
函数接受一个或多个目标投资组合风险,并获得具有指定风险的有效投资组合。假设您有一个由四种资产组成的宇宙,您希望获得有效的投资组合,目标投资组合风险分别为12%、20%和25%。本例使用默认值“直接”
具有目标投资组合风险的最优投资组合估计方法。的“直接”
方法使用fmincon
以目标风险为二次非线性约束,求解投资组合收益最大化的优化问题。setSolver
指定的年代olverType
而且SolverOptions
为fmincon
.
M = [0.05;0.1;0.12;0.18);C = [0.0064 0.00408 0.00192 0;0.00408 0.0289 0.0204 0.0119;0.00192 0.0204 0.0576 0.0336;0 0.0119 0.0336 0.1225];rng (11);p = PortfolioMAD; p = simulateNormalScenariosByMoments(p, m, C, 2000); p = setDefaultConstraints(p); p = setSolver(p,“fmincon”,“显示”,“关闭”,“算法”,“sqp”,...“SpecifyObjectiveGradient”,真的,“SpecifyConstraintGradient”,真的,...“ConstraintTolerance”1.0 e-8“OptimalityTolerance”1.0 e-8“StepTolerance”1.0 e-8);plotFrontier (p);
pwgt = estimateFrontierByRisk(p, [0.12 0.20, 0.25]);显示(pwgt);
pwgt =4×30.1613 0.000 -0.0000 0.4777 0.2139 0.0037 0.1118 0.1381 0.1214 0.2492 0.6480 0.8749
输入参数
obj
- - - - - -对象组合
对象
对象,指定使用投资组合
,PortfolioCVaR
,或PortfolioMAD
对象。有关创建投资组合对象的更多信息,请参见
请注意
中未指定初始投资组合obj。InitPort
,它被认为是0
这pwgt pbuy = max (0)
而且-pwgt psell = max (0)
.有关设置初始投资组合的更多信息,请参见setInitPort
.
数据类型:对象
TargetRisk
- - - - - -投资组合风险的目标值
向量
投资组合风险的目标值,指定为NumPorts
向量。
请注意
如果有任何TargetRisk
如果值超出有效组合的风险范围,则根据目标风险低于或高于有效组合风险的范围,将目标风险替换为最小或最大有效组合风险。
数据类型:双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:[pwgt, pbuy psell] = estimateFrontierByRisk (p,“方法”,“直接”)
方法
- - - - - -用风险估计边界的方法投资组合
或PortfolioMAD
对象
“直接”
(默认)|带值的字符向量“直接”
或“迭代”
用风险估计边界的方法投资组合
或PortfolioMAD
对象,指定为逗号分隔的对,由“方法”
和具有以下值之一的字符向量:
“直接”
-构造一个以目标风险为非线性约束的投资组合收益最大化优化问题,用直接求解fmincon
,而不是迭代地探索有效的边界。的例子“直接”
选项,看到使用直接方法和求解选项为一个组合对象获取带有目标组合风险的组合而且使用直接方法和求解器选项为PortfolioMAD对象获取带有目标投资组合风险的投资组合.“迭代”
-一维优化使用fminbnd
求实际风险与目标风险之差最小的边界上收益最小与最大之间的组合收益。然后通过求解收益边界问题得到组合权重。因此,“迭代”
方法的速度比“直接”
.
数据类型:字符
输出参数
pwgt
-具有指定目标风险的有效边界上的最优投资组合
矩阵
在有效边界上具有指定目标收益的最优投资组合TargetRisk
,作为NumAssets
——- - - - - -NumPorts
矩阵。pwgt
返回为投资组合
,PortfolioCVaR
,或PortfolioMAD
输入对象(obj
).
pbuy
-购买相对于初始投资组合在有效边界上的最优投资组合
矩阵
对于有效边界上的最优投资组合,相对于初始投资组合的购买,返回为NumAssets
——- - - - - -NumPorts
矩阵。
请注意
中未指定初始投资组合obj。InitPort
,该值假设为0
这样pwgt pbuy = max (0)
而且-pwgt psell = max (0)
.
pbuy
返回为投资组合
,PortfolioCVaR
,或PortfolioMAD
输入对象(obj
).
psell
-在有效边界上的最优投资组合相对于初始投资组合的销售额
矩阵
对于有效边界上的最优投资组合,相对于初始投资组合的销售额,返回为NumAssets
——- - - - - -NumPorts
矩阵。
请注意
中未指定初始投资组合obj。InitPort
,该值假设为0
这样pwgt pbuy = max (0)
而且-pwgt psell = max (0)
.
psell
返回的投资组合
,PortfolioCVaR
,或PortfolioMAD
输入对象(obj
).
提示
您还可以使用点符号来估计具有目标投资组合风险的最佳投资组合。
[pwgt, pbuy psell] = obj.estimateFrontierByRisk (TargetRisk);
或
[pwgt, pbuy psell] = obj.estimateFrontierByRisk (TargetRisk、名称、值);
版本历史
介绍了R2011a
MATLAB명령
다음matlab명령에해당하는링크를클릭했습니다。
명령을실행하려면matlab명령창에입력하십시오。웹브라우저는matlab명령을지원하지않습니다。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。