主要内容

estimateFrontierByRisk

评估目标投资组合风险的最佳投资组合

描述

例子

pwgtpbuypsell) = estimateFrontierByRisk (objTargetRisk用目标投资组合风险估计最佳投资组合投资组合PortfolioCVaR,或PortfolioMAD对象。有关使用这些不同对象时各自工作流的详细信息,请参见组合对象的工作流PortfolioCVaR对象的工作流,PortfolioMAD对象的工作流

例子

pwgtpbuypsell) = estimateFrontierByRisk (___名称,值添加名称-可选的名称-值对参数投资组合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

当来自'的约束条件的任意一个或任意组合有条件的BoundTypeMinNumAssets,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用半连续约束来设定西00.02< =西< =0.5对所有1,……NumAssets

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

当与投资组合对象,setMinMaxNumAssets函数使您能够设置对投资资产数量的限制(称为基数约束)。这将设置满足之间绑定约束的已分配资产的总数MinNumAssets而且MaxNumAssets.通过设置MinNumAssetsMaxNumAssets= 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而且SolverOptionsfmincon

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

为了获得具有目标投资组合风险的有效投资组合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 年代 e e d )重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。

为了获得具有目标投资组合风险的有效投资组合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 年代 e e d )重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。

为了获得具有目标投资组合风险的有效投资组合estimateFrontierByRisk函数接受一个或多个目标投资组合风险,并获得具有指定风险的有效投资组合。假设您有一个由四种资产组成的宇宙,您希望获得有效的投资组合,目标投资组合风险分别为12%、20%和25%。本例使用默认值“直接”具有目标投资组合风险的最优投资组合估计方法。的“直接”方法使用fmincon以目标风险为二次非线性约束,求解投资组合收益最大化的优化问题。setSolver指定的年代olverType而且SolverOptionsfmincon

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);

图中包含一个axes对象。标题为E f f i c in t空f r nt的axis对象包含一个类型为line的对象。

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

输入参数

全部折叠

对象,指定使用投资组合PortfolioCVaR,或PortfolioMAD对象。有关创建投资组合对象的更多信息,请参见

请注意

中未指定初始投资组合obj。InitPort,它被认为是0pwgt pbuy = max (0)而且-pwgt psell = max (0).有关设置初始投资组合的更多信息,请参见setInitPort

数据类型:对象

投资组合风险的目标值,指定为NumPorts向量。

请注意

如果有任何TargetRisk如果值超出有效组合的风险范围,则根据目标风险低于或高于有效组合风险的范围,将目标风险替换为最小或最大有效组合风险。

数据类型:

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:[pwgt, pbuy psell] = estimateFrontierByRisk (p,“方法”,“直接”)

用风险估计边界的方法投资组合PortfolioMAD对象,指定为逗号分隔的对,由“方法”和具有以下值之一的字符向量:

数据类型:字符

输出参数

全部折叠

在有效边界上具有指定目标收益的最优投资组合TargetRisk,作为NumAssets——- - - - - -NumPorts矩阵。pwgt返回为投资组合PortfolioCVaR,或PortfolioMAD输入对象(obj).

对于有效边界上的最优投资组合,相对于初始投资组合的购买,返回为NumAssets——- - - - - -NumPorts矩阵。

请注意

中未指定初始投资组合obj。InitPort,该值假设为0这样pwgt pbuy = max (0)而且-pwgt psell = max (0)

pbuy返回为投资组合PortfolioCVaR,或PortfolioMAD输入对象(obj).

对于有效边界上的最优投资组合,相对于初始投资组合的销售额,返回为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