estismsfrontier.

估计有效前沿上的指定数量的最佳投资组合

描述

[PWGT.pbuyPSELL.] = estmityFrontier(obj.估计有效前沿的指定数量的最佳投资组合投资组合portfoliocvar., 要么Portfoliomad.对象。有关使用这些不同对象时相应工作流的详细信息,请参阅投资组合对象工作流程portfoliocvar对象工作流程,和portfoliomad对象工作流程

[PWGT.pbuyPSELL.] = estmityFrontier(obj.号码估计有效边界的指定数量的最佳投资组合,其中包含了另外的选项号码

例子

全部收缩

创建有效的投资组合:

加载Capmuniverse.p = portfolio('assetlist',资产(1:12));p = vieltaDeaSetMoments(P,数据(:,1:12),'缺失数据',真正);p = setDefaultConstraints(p);PlotFrontier(P);

PWGT = estmateFrontier(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 AAPL 0.017926 0.058247 0.097816 0.12955 0 AMZN 0 0 0 0 0 CSCO 0 0 0 0 0 DELL 0.0041906 0 0 0 0 EBAY 0 0 0 0 0 GOOG 0.16144 0.35678 0.55228 0.75116 1 HPQ 0.052566 0.032302 0.011186 0 0 IBM 0.46422 0.360450.25577 0.11928 0 INTC 0 0 0 0 0 MSFT 0.29966 0.19222 0.082949 0 0 ORCL 0 0 0 0 0 YHOO 0 0 0 0 0

创建一个投资组合基于的12股股票的对象Capmuniverse.mat

加载Capmuniverse.p0 = portfolio('assetlist',资产(1:12));p0 = emplateaSetMoments(P0,数据(:,1:12),'缺失数据',真正);p0 = setDefaultConstraints(p0);

利用setminmaxnumassets.定义最多3个资产。

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

利用setBound.定义较低和上限和一个边界'条件'

P1 = SetBounds(P1,0.1,0.5,'Fundype''条件');PWGT = estmateFrontier(P1,5);

下表表明,优化的分配只投入最多3个资产,避免了小于0.1的小位置。

结果=表(p0.assetlist',pwgt)
结果=12×2表var1 pwgt ________ ____________________________________________ {'aapl'} 0 0 0 0 0 0 {'戴尔'} 0 0 0 0 0 {'eBay'} 00 0 0 0.5 {'GOOG'} 0.16981 0.29588 0.42214 0.49999 0.5 {HPQ'0 0 0 0 0 {'IBM'0.43629 0.37308 0.37308 0.37308 0.37308 0.37308 0.37308 0.37308 0.37308 0.37308 0.37308 0.35629 0 {'INTC'} 0 0 0 0 0 0 0 0 0 0 0 {“MSFT”} 0.334260.26783 0.20478 0 0 {'ORCL'} 0 0 0 0 0 {'YHOO'} 0 0 0 0 0

estismsfrontier.功能使用MINLP求解器来解决此问题。使用setsolverminlp.配置配置索尔弗蒂和选择。

p1.solvertypeminlp.
ans ='senforpoximation'
p1.solveroptionsminlp.
ans =.结构与字段:MaxIltations:1000 Absolutegapolerance:1.0000E-07非线性导致物质:1.0000E-05 NonlinearScalingFactor:1000 objectiveScalingFactor:1000显示:'Off'Cutgeneration:'Basic'MaxIrlationSinaCtiveCut:30 ActiveCuttolerance:1.0000E-07 Intmastersolveroptions:[1x1 Optim.Options.Intlinprog]NumiterationseArlyinteConvergence:30

创建有效的投资组合:

加载Capmuniverse.p = portfoliocvar('assetlist',资产(1:12));p = simulatenormalscenariosbydata(p,数据(:,1:12),20000,'缺失数据',真正);p = setDefaultConstraints(p);p = setProbabyLevel(p,0.95);PlotFrontier(P);

PWGT = estmateFrontier(P,5);pnames = cell(1,5);对于i = 1:5 pnames {i} = sprintf('端口%d',一世);结束Blotter = DataSet([{PWGT},Pnames],'obsnames',p.assetlist);DISP(遮光剂);
PORT1 PORT3 PORT3 PORT4 PORT4 PORT5 AAPL 0.010562 0.13073 0 AMZN 0 0 0 0 0 eBay 0 0 0 0 0 0 0 eBay 0 0 0 0 0 GOOG 0.203 0.38011 0 0 0 0 0 0 eBay 0 0 0 0 0 GOOG 0.203 0.56202 0.75919 1 HPQ 0.04272 0.0094711 0 0 0 IBM 0.4444 0.364560.26305 0.11009 0 INTC 0 0 0 0 0 MSFT 0.27658 0.17222 0.17222 0.055624 0 0 ORCL 0 0 0 0 0 YHOO 0 0 0 0 0

创建有效的投资组合:

加载Capmuniverse.p = portfoliomad('assetlist',资产(1:12));p = simulatenormalscenariosbydata(p,数据(:,1:12),20000,'缺失数据',真正);p = setDefaultConstraints(p);PlotFrontier(P);

PWGT = estmateFrontier(P,5);pnames = cell(1,5);对于i = 1:5 pnames {i} = sprintf('端口%d',一世);结束Blotter = DataSet([{PWGT},Pnames],'obsnames',p.assetlist);DISP(遮光剂);
PORT1 PORT2 PORT3 PORT3 PORT3 PORT5 AAPL 0.07619 0 0 0 0 0 0 0 0 0 eBay 0 0 0 0 0 0 0 0 eBay 0 0 0 0 0 GOOG 0.16094 0.3516 0.540 0.3516 0.023073 0 0 0 IBM 0.46074 0.37919 0.37919 0.379190.29379 0.11705 0 INTC 0 0 0 0 0 MSFT 0.28277 0.16994 0.048762 0 0 ORCL 0 0 0 0 0 YHOO 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 0 0 0 0.2314 0.0579 0 0.1394 0.1468 0 0.6292 0.7953 1.0000

从初始投资组合开始,estismsfrontier.函数返回购买和销售,从您的初始投资组合到高效前沿的每个有效投资组合。鉴于初始投资组合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 0 0 0 0 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.0336 0 0.0929 0.1521 0.2113 0.2705 0.3297 0.4630 0.6292 0.7953 1.0000
显示(PBUY);
pbuy =4×100.5891 0.4215 0.2540 0.0865 0 0 0 0 0 0 0 0 0.0129 0.1049 0.0129 0.1049 0.109 0.1049 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0521 0.1113 0.10.2297 0.3630 0.5292 0.6953 0.9000
显示(PSELL);
Psell =4×100 0 0 0.0810 0.2485 0.3000 0.3000 0.3000 0.3000 0.260 0.2631 0.1711 0.0791 0 0 0 0 0.0 0.0.0 0.0.0 0.1.1596 0.1433 0.1270 0.1107 0.0944 0.070 0.0680 0.00060 0.0532 0.2000 0.0 0.0 0.0 0.0 0.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];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 0 0 0 0.1804 0 0 0.1918 0.2212 0 0.6277 0.7788 1.0000

功能RNG. S. E. E. D. )重置随机数生成器以产生记录的结果。没有必要重置随机数生成器以模拟场景。

从初始投资组合开始,estismsfrontier.函数返回购买和销售,从您的初始投资组合到高效前沿的每个有效投资组合。鉴于初始投资组合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 0 0 0 0 0.0613 0.1429 0.2291 0.3165 0.3983 0.4721 0.3528 0.1804 0 0 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 0 0 0 0 0 0 0 0 0 0.0165 0. 0. 0. 0. 0. 0 0 0 0 0 0 0.0212 0 0 0.0089 0.060 0 0 0 0 0. 0.0606 0.12 0 0.0089 0.2376 0.3736 0.2376 0.3736 0.5277 0.6788 0.5277 0.6788 0.9000
显示(PSELL);
Psell =4×100 0 0 0 0.1097 0.2677 0.3000 0.3000 0.3000 0.3000 0.2387 0.1571 0.0709 0 0 0 0 0 0.1196 0.3000 0.130 0.1549 0.1366 0.1056 0.0918 0. 0. 0. 0.0420 0.0264 0.0082 0 0.2000 0. 0 0 0 0

功能RNG. S. 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.3599 0.0387 0.0604 0.0826 0.1047 0.1237 0.1480 0.1799 0.0366 0.0961 0.1559 0.2148 0.2763 0.3348 0.4601列8至10 0 0 0 0.1758 0 0 0.2091 0.2266 0 0.6151 0.7734 1.0000

功能RNG. S. E. E. D. )重置随机数生成器以产生记录的结果。没有必要重置随机数生成器以模拟场景。

从初始投资组合开始,estismsfrontier.函数返回购买和销售,从您的初始投资组合到高效前沿的每个有效投资组合。鉴于初始投资组合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 0 0 0 0 0.0431 0.1285 0.2127 0.2993 0.3832 0.4679 0.3599 0.1758 0 0 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 0 0 0 0 0 0 0 0 0 0 0.0832 0.1679 0.0599 0 0 0 0 0 0 0 0 0 0 0.0091 0.0266 0 0 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.10 0.11000 0.2569 0.1715 0.0873 0.0007 0 0 0 0.1242 0.130 0.110 0.1613 0.07630 0.090 0.0 0.0 0.0 0 0 0 0 0 0 0.20 0 0 0 0 0 0

功能RNG. S. E. E. D. )重置随机数生成器以产生记录的结果。没有必要重置随机数生成器以模拟场景。

输入参数

全部收缩

对对象的投资组合,指定使用投资组合portfoliocvar., 要么Portfoliomad.目的。有关创建投资组合对象的详细信息,请参阅

数据类型:目的

在高效前沿获取的点数,指定为标量整数。

注意

如果未指定任何值号码,默认值是从隐藏属性获取的defaultnumports.(默认值是10.)。如果号码=1,此函数返回隐藏属性指定的投资组合defaultfrontierlimit.(当前默认值是'min')。

数据类型:

输出参数

全部收缩

高效前沿的最佳投资组合,具有指定的投资组合数与最小值相等为最大投资组合返回,返回为anumassets.-通过-号码矩阵。PWGT.回来了投资组合portfoliocvar., 要么Portfoliomad.输入对象(obj.)。

购买相对于初始投资组合以获得高效前沿的最佳投资组合,返回numassets.-通过-号码矩阵。

注意

如果未指定初始投资组合obj.initport.,假设价值是0.这样pbuy = max(0,pwgt)psell = max(0,-pwgt)

pbuy回来了投资组合portfoliocvar., 要么Portfoliomad.输入对象(obj.)。

销售相对于初始投资组合,以获得高效前沿的最佳投资组合,返回ASnumassets.-通过-号码矩阵。

注意

如果未指定初始投资组合obj.initport.,假设价值是0.这样pbuy = max(0,pwgt)psell = max(0,-pwgt)

PSELL.被退回投资组合portfoliocvar., 要么Portfoliomad.输入对象(obj.)。

提示

  • 您还可以使用DOT表示法来估计整个高效前沿的指定的最佳投资组合数。

    [PWGT,PBUY,PSELL] = OBJ.TITIONSFRONTIER(NUMPORTS);

  • 在引入交易成本和营业额限制时投资组合portfoliocvar., 要么Portfoliomad.对象,投资组合优化目标包含具有绝对值的术语。有关金融工具箱™如何处理此类案例的更多信息,请参阅参考资料

参考资料

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

在R2011A介绍