主要内容

estimateFrontier

在有效边界上估计指定数量的最优投资组合

描述

例子

pwgtpbuypsell= estimateFrontier(obj的有效边界上估计指定数量的最优投资组合投资组合PortfolioCVaR,或PortfolioMAD对象。有关使用这些不同对象时各自工作流的详细信息,请参见投资组合对象工作流对象工作流,PortfolioMAD对象工作流

例子

pwgtpbuypsell= estimateFrontier(objNumPorts用指定的附加选项,在有效边界上估计指定数量的最优投资组合NumPorts

例子

全部折叠

创建有效的投资组合:

负载CAPMuniversep =投资组合(“AssetList”、资产(1:12));p = estimateAssetMoments(p, Data(:,1:12),“missingdata”,真正的);p = setDefaultConstraints(p);plotFrontier (p);

图中包含一个轴对象。标题为E f f i i E nt空白f r on i E r的axis对象包含一个类型为line的对象。

pwgt = estimateFrontier(p, 5);Pnames = cell(1,5);I = 1:5 pnames{I} = sprintf(的端口% d ',我);结束Blotter = dataset([{pwgt},pnames],“obsnames”, p.AssetList);disp(流水帐);
端口1端口2端口3端口4 Port5 apple 0.017926 0.058247 0.097816 0.12955 0 amazon 0 0 0 0 0 cisco戴尔0.0041906 0 0 0 0 0 0 0 0 0 EBAY 0 0 0 0 0 google 0.16144 0.35678 0.55228 0.75116 1 hp IBM 0.46422 0.36045 0.25577 0.11928 0.052566 0.032302 0.011186 0 0 0 intel 0 0 0 0 0 microsoft 0.29966 0.19222 0.082949 0 0 ORCL 0 0 0 0 0 yahoo 0 0 0 0 0

创建一个投资组合对象为12只个股基础CAPMuniverse.mat

负载CAPMuniversep0 =投资组合(“AssetList”、资产(1:12));p0 = estimateAssetMoments(p0, Data(:,1:12),“missingdata”,真正的);p0 = setDefaultConstraints(p0);

使用setMinMaxNumAssets定义3个资产的最大数目。

p1 = setMinMaxNumAssets(p0, [], 3);

使用setBounds定义一个上下限和一个BoundType“条件”

p1 = setBounds(p1, 0.1, 0.5,“BoundType”“条件”);pwgt = estimateFrontier(p1, 5);

从下表可以看出,优化后的配置最多只投资3个资产,避免了小于0.1的小仓位。

Result = table(p0. 0)AssetList ', pwgt)
结果=12×2表Var1 pwgt  ________ ___________________________________________________ {' apple '} 0 0 0 0.14308 0 {amazon的}0 0 0 0 0 {cisco的}0 0 0 0 0{“戴尔”}0 0 0 0 0{“易趣”}0 0 0 0 0.5 0.16979 0.29587 0.42213 0.49998 0.5{“google”}{“hp”}0 0 0 0 0{“IBM”}0.49602 0.4363 0.37309 0.35694 0 {intel的}0 0 0 0 0{“微软”}0.33419 0.26783 0.20479 0 0{‘ORCL} 0 0 0 0 0{“yahoo”}0 0 0 0 0

estimateFrontier函数使用MINLP求解器来解决这个问题。使用setSolverMINLP函数配置SolverType和选项。

p1.solverTypeMINLP
ans = 'OuterApproximation'
p1.solverOptionsMINLP
ans =带字段的结构:MaxIterations: 1000 AbsoluteGapTolerance: 1.0000 -07 RelativeGapTolerance: 1.0000 -05 NonlinearScalingFactor: 1000 ObjectiveScalingFactor: 1000 Display: 'off' CutGeneration: 'basic' MaxIterationsInactiveCut: 30 activecutttolerance: 1.0000 -07 IntMasterSolverOptions: [1x1 optimal .options. 07。Intlinprog] NumIterationsEarlyIntegerConvergence: 30

创建有效的投资组合:

负载CAPMuniversep = PortfolioCVaR(“AssetList”、资产(1:12));p = simulateNormalScenariosByData(p, Data(:,1:12), 20000,“missingdata”,真正的);p = setDefaultConstraints(p);p = setProbabilityLevel(p, 0.95);plotFrontier (p);

图中包含一个轴对象。标题为E f f i i E nt空白f r on i E r的axis对象包含一个类型为line的对象。

pwgt = estimateFrontier(p, 5);Pnames = cell(1,5);I = 1:5 pnames{I} = sprintf(的端口% d ',我);结束Blotter = dataset([{pwgt},pnames],“obsnames”, p.AssetList);disp(流水帐);
端口1端口2端口3端口4 Port5 apple 0.010562 0.07364 0.11931 0.13073 0 amazon 0 0 0 0 0 cisco戴尔0.022649 0 0 0 0 0 0 0 0 0 EBAY 0 0 0 0 0 google 0.203 0.38011 0.56202 0.75919 1 hp IBM 0.44444 0.36456 0.26305 0.11009 0.042772 - 0.0094711 0 0 0 0 intel 0 0 0 0 0 microsoft 0.27658 0.17222 0.055624 0 0 ORCL 0 0 0 0 0 yahoo 0 0 0 0 0

创建有效的投资组合:

负载CAPMuniversep = portfolio omad (“AssetList”、资产(1:12));p = simulateNormalScenariosByData(p, Data(:,1:12), 20000,“missingdata”,真正的);p = setDefaultConstraints(p);plotFrontier (p);

图中包含一个轴对象。标题为E f f i i E nt空白f r on i E r的axis对象包含一个类型为line的对象。

pwgt = estimateFrontier(p, 5);Pnames = cell(1,5);I = 1:5 pnames{I} = sprintf(的端口% d ',我);结束Blotter = dataset([{pwgt},pnames],“obsnames”, p.AssetList);disp(流水帐);
端口1端口2端口3端口4 Port5 apple 0.029787 0.076199 0.11265 0.13397 0 amazon 0 0 0 0 0 cisco戴尔0.0089177 0 0 0 0 0 0 0 0 0 EBAY 0 0 0 0 0 google 0.16094 0.3516 0.54479 0.74898 1 hp IBM 0.46074 0.37919 0.29379 0.11705 0.056856 - 0.023073 0 0 0 0 intel 0 0 0 0 0 microsoft 0.28277 0.16994 0.048762 0 0 ORCL 0 0 0 0 0 yahoo 0 0 0 0 0

在有效边界的整个范围内获得有效投资组合的默认数量。

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 = estimateFrontier(p); disp(pwgt);
1 ~ 7列0.8891 0.7215 0.5540 0.3865 0.2190 0.0515 0 0.0369 0.1289 0.2209 0.3129 0.4049 0.4969 0.4049 0.0404 0.0567 0.0730 0.0893 0.1056 0.1219 0.1320 0.0336 0.0929 0.1521 0.2113 0.2705 0.3297 0.4630 8 ~ 10列0000 0.2314 0.0579 0 0.1394 0.1468 0 0.6292 0.7953 1.0000

从最初的投资组合开始estimateFrontier函数返回从初始投资组合到有效边界上每个有效投资组合的购买和销售。给定一个初始投资组合pwgt0,你可以获得购买和销售。

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); pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = setInitPort(p, pwgt0); [pwgt, pbuy, psell] = estimateFrontier(p); display(pwgt);
pwgt =4×100.8891 0.7215 0.5540 0.3865 0.2190 0.0515 0000 00 0.0369 0.1289 0.2209 0.3129 0.4049 0.4969 0.4049 0.2314 0.0579 0 0.0404 0.0567 0.0730 0.0893 0.1056 0.1219 0.1320 0.1394 0.1468 0 0.0336 0.0929 0.1521 0.2113 0.2705 0.3297 0.4630 0.292 0.7953 1.0000
显示(pbuy);
pbuy =4×100.5891 0.4215 0.2540 0.0865 000 000 000 00 0.0129 0.1049 0.1969 0.1049 000 000 000 000 000 000 000 0.0521 0.1113 0.1705 0.2297 0.3630 0.5292 0.6953 0.9000
显示(psell);
psell =4×10000 00 0.0810 0.2485 0.3000 0.3000 0.3000 0.3000 0.2631 0.1711 0.0791 000 00 0.0686 0.2421 0.3000 0.1596 0.1433 0.1270 0.1107 0.0944 0.0781 0.0680 0.0606 0.0532 0.2000 0.0664 0.0071 000 000 000 000 000 000

在有效边界的整个范围内获得有效投资组合的默认数量。

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];M = M /12;C = C/12; rng(11); AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioCVaR; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.95); pwgt = estimateFrontier(p); disp(pwgt);
1 ~ 7列0.8451 0.6849 0.5159 0.3541 0.1903 0.0323 0 0.0613 0.1429 0.2291 0.3165 0.3983 0.4721 0.3528 0.0451 0.0634 0.0944 0.1082 0.1340 0.1580 0.1736 0.0485 0.1089 0.1606 0.2213 0.2775 0.3376 0.4736 8 ~ 10列000 0.1804 00 0.1918 0.2212 0 0.6277 0.7788 1.0000

这个函数rng 年代 e e d )重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。

从最初的投资组合开始estimateFrontier函数返回从初始投资组合到有效边界上每个有效投资组合的购买和销售。给定一个初始投资组合pwgt0,你可以获得购买和销售。

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];M = M /12;C = C/12; rng(11); AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioCVaR; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.95); pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = setInitPort(p, pwgt0); [pwgt, pbuy, psell] = estimateFrontier(p); display(pwgt);
pwgt =4×100.8451 0.6849 0.5159 0.3541 0.1903 0.0323 0000 0 0.0613 0.1429 0.2291 0.3165 0.3983 0.4721 0.3528 0.1804 00 0.0451 0.0634 0.0944 0.1082 0.1340 0.1580 0.1736 0.1918 0.2212 0 0.0485 0.1089 0.1606 0.2213 0.2775 0.3376 0.4736 0.6277 0.7788 1.0000
显示(pbuy);
pbuy =4×100.5451 0.3849 0.2159 0.0541 000 000 000 000 000 0165 0.0983 0.1721 0.0528 000 000 000 000 000 000 000 000 000 000 0089 0.0606 0.1213 0.1775 0.2376 0.3736 0.5277 0.6788 0.9000
显示(psell);
psell =4×10000 00 0.1097 0.2677 0.3000 0.3000 0.3000 0.3000 0.2387 0.1571 0.0709 000 00 0.1196 0.3000 0.3000 0.1549 0.1366 0.1056 0.0918 0.0660 0.0420 0.0264 0.0082 0 0.2000 0.0515 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

这个函数rng 年代 e e d )重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。

在有效边界的整个范围内获得有效投资组合的默认数量。

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];M = M /12;C = C/12; rng(11); AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioMAD; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); pwgt = estimateFrontier(p); disp(pwgt);
1 ~ 7列0.8817 0.7150 0.5488 0.3812 0.2167 0.0494 0 0.0431 0.1285 0.2127 0.2993 0.3832 0.4679 0.354 0.0826 0.1047 0.1237 0.1499 0.0366 0.0961 0.1559 0.2148 0.2763 0.3348 0.4601 8 ~ 10列000 0.1758 00 0.2091 0.2266 0 0.6151 0.7734 1.0000

这个函数rng 年代 e e d )重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。

从最初的投资组合开始estimateFrontier函数返回从初始投资组合到有效边界上每个有效投资组合的购买和销售。给定一个初始投资组合pwgt0,你可以获得购买和销售。

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];M = M /12;C = C/12; rng(11); AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioMAD; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = setInitPort(p, pwgt0); [pwgt, pbuy, psell] = estimateFrontier(p); display(pwgt);
pwgt =4×100.8817 0.7150 0.5488 0.3812 0.2167 0.0494 0000 00 0.0431 0.1285 0.2127 0.2993 0.3832 0.4679 0.3599 0.1758 00 0.0387 0.0604 0.0826 0.1047 0.1237 0.1480 0.1799 0.2091 0.2266 0 0.0366 0.0961 0.1559 0.2148 0.2763 0.3348 0.4601 0.6151 0.7734 1.0000
显示(pbuy);
pbuy =4×100.5817 0.4150 0.2488 0.0812 000 000 000 000 000 000 832 0.1679 0.0599 000 000 000 000 000 0 0.0091 0.0266 000 0 0.0559 0.1148 0.1763 0.2348 0.3601 0.5151 0.6734 0.9000
显示(psell);
psell =4×100 0 0 0 0.0833 0.2506 0.3000 0.3000 0.3000 0.3000 0.2569 0.1715 0.0873 0.0007 0 0 0 0.1242 0.3000 0.3000 0.1613 0.1396 0.1174 0.0953 0.0763 0.0520 0.0201 0 0 0.2000 0.0634 0.0039 0 0 0 0 0 0 0 0

这个函数rng 年代 e e d )重置随机数生成器以产生记录的结果。不需要重置随机数生成器来模拟场景。

输入参数

全部折叠

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

数据类型:对象

有效边界上要获得的点数,指定为标量整数。

请注意

如果没有指定NumPorts,则从hidden属性中获取默认值defaultNumPorts(默认值为10).如果NumPorts1,此函数返回由hidden属性指定的投资组合defaultFrontierLimit(当前默认值为“最小值”).

数据类型:

输出参数

全部折叠

在有效边界上的最优投资组合,具有指定数量的投资组合,从最小到最大的投资组合收益相等,返回为aNumAssets——- - - - - -NumPorts矩阵。pwgt返回。投资组合PortfolioCVaR,或PortfolioMAD输入对象(obj).

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

请注意

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

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

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

请注意

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

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

提示

  • 您还可以使用点符号来估计整个有效边界上的最优投资组合的指定数量。

    [pwgt, pbuy, psell] = obj.estimateFrontier(NumPorts);

  • 当引入交易成本和周转约束时投资组合PortfolioCVaR,或PortfolioMAD对象时,投资组合优化目标包含一个具有绝对值的项。有关财务工具箱™如何以算法处理此类情况的详细信息,请参见参考文献

参考文献

[1] Cornuejols, G., R. Tutuncu。财务优化方法。剑桥大学出版社,2007年。

在R2011a中引入