在有效边界上估计指定数量的最优投资组合
文件夹
目标和确定有效的投资组合创建高效的投资组合:
负载大写字母p=投资组合(“资产清单”,资产(1:12));p=估计资产时刻(p,数据(:,1:12),“丢失数据”,对);p=设置默认约束(p);(p);
pwgt=估计边界(p,5);pnames=单元(1,5);为i=1:5 pnames{i}=sprintf('端口%d',i);结束Blotter=数据集([{pwgt},pnames],“名字”,p.AssetList);吸墨纸;
端口1端口2端口3端口4端口5 AAPL 0.017926 0.058247 0.097816 0.12955 0 AMZN 0 0 0 0 0 0 0 0 CSCO 0 0 0戴尔0.0041906 0 0 0 0易趣0 0 0 0 0 0 0 GOOG 0.16144 0.35678 0.55228 0.75116 1 HPQ 0.052566 0.032302 0.0111860 0 IBM 0.46422 0.36045 0.25577 0.11928 0 0 0 0 0 0 0 0 0 0 0国际信托0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.299620 0.19222 0.082990
文件夹
反对边界类型
和最大质量集
约束和确定有效的投资组合创建一个文件夹
对象,用于基于盖面层
.
负载大写字母p0=投资组合(“资产清单”,资产(1:12));p0=估计资产时刻(p0,数据(:,1:12),“丢失数据”,真);p0=setDefaultConstraints(p0);
使用setMinMaxNumAssets
定义最多3个资产。
p1=setMinMaxNumAssets(p0,[],3);
使用挫折
定义下限和上限以及边界类型
属于“有条件的”
.
p1=立根(p1,0.1,0.5,“BoundType”,“有条件的”); pwgt=估计前沿(p1,5);
下表显示,优化配置最多只投资了3项资产,避免了小于0.1的小头寸。
结果=表格(p0.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 000{'YHOO'} 0 0 0 0 0
这个estimateFrontier
函数使用MINLP求解器来解决这个问题。使用SetSolverinlp
函数来配置溶剂型
和选择。
p1.solverTypeMINLP
ans='OuterApproximation'
p1.solverOptionsMINLP
ans =带字段的结构:MaxIterations:1000绝对公差:1.0000e-07相对公差:1.0000e-05非线性比例因子:1000目标比例因子:1000显示:“关闭”剪切生成:“基本”MaxIterations不活动剪切:30活动剪切公差:1.0000e-07 IntMasterSolutionRoptions:[1x1 optim.options.Intlinprog]NumiteRationalSearlyIntegerConvergence:30
创建高效的投资组合:
负载大写字母p=PortfolioCVaR(“资产清单”,资产(1:12));p=SimulationNormalScenariosByData(p,数据(:,1:12)),20000,“丢失数据”,对);p=设置默认约束(p);p=设定概率水平(p,0.95);(p);
pwgt=估计边界(p,5);pnames=单元(1,5);为i=1:5 pnames{i}=sprintf('端口%d',i);结束Blotter=数据集([{pwgt},pnames],“名字”,p.AssetList);吸墨纸;
端口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
门静脉瘤
目标和确定有效的投资组合创建高效的投资组合:
负载大写字母p=门静脉瘤(“资产清单”,资产(1:12));p=SimulationNormalScenariosByData(p,数据(:,1:12)),20000,“丢失数据”,对);p=设置默认约束(p);(p);
pwgt=估计边界(p,5);pnames=单元(1,5);为i=1:5 pnames{i}=sprintf('端口%d',i);结束Blotter=数据集([{pwgt},pnames],“名字”,p.AssetList);吸墨纸;
端口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.0119 0.0336 0.1225];p=投资组合;p=设定资产时刻(p,m,C);p=设置默认约束(p);pwgt=估计边界(p);disp(pwgt);
第1列至第7列0.8891 0.7215 0.5540 0.3865 0.2190 0.0515 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.0336 0.0929 0.1521 0.2113 0.2705 0.3297 0.4630第8列至第10 0 0 0 0 0 0 0 0.2314 0.0579 0.1394 0.1468 0.6290.7953 0.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 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 0.0336 0.0929 0.1521 0.2113 0.2705 0.3297 0.4630 0.6292 0.7953 1.0000
显示(pbuy);
pbuy=4×100.0521 0.1113 0.1705 0.2297 0.3630 0.5292 0.6953 0.9000 .0 000 000 000 000 0
显示(psell);
普赛尔=4×100 0 0 0 0.0810 0.2485 0.3000 0.3000 0.3000 0.3000 0.2631 0.1711 0.0791 0 0 0 0 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 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.0119 0.0336 0.1225];m=m/12;C=C/12;rng(11);资产组合收益率=mvnrnd(m,C,20000);p=PortfolioCVaR;p=setScenarios(p,AssetScenarios);p=DefaultLip=SetBilip;概率(SetBilip,SetStylep)pwgt=估计前沿(p);disp(pwgt);
第1列至第7列0.8451 0.6849 0.5159 0.3541 0.1903 0.0323 0.0613 0.1429 0.2291 0.3165 0.3983 0.4721 0.3528 0.0451 0.0634 0.0944 0.1082 0.1340.1580 0.1736 0.0485 0.1089 0.1606 0.2213 0.2775 0.3376 0.4736第8列至第10 0 0 0 0 0 0 0.1804 0.0 0.1918 0.2212 0.6277 0.7781.0000列
功能rng
(
)重置随机数生成器以产生记录的结果。没有必要重新设置随机数生成器来模拟场景。
从最初的投资组合开始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 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 000 000 000 0 0.0165 0.0983 0.1721 0.0528 000 000 000 00 0.0212 000 0.0089 0.0606 0.1213 0.1775 0.2376 0.3736 0.5277 0.6788 0.9000
显示(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.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 0 0 0 0 0 0 0 0 0
功能rng
(
)重置随机数生成器以产生记录的结果。没有必要重新设置随机数生成器来模拟场景。
获取整个有效边界范围内有效投资组合的默认数量。
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.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.1799 0.0366 0.0961 0.1559 0.2148 0.2763 0.3348 0.4601列8至10 0.1758 0.0.0 0 0 0.2091 0.2266 0.6150.7734 0.0000
功能rng
(
)重置随机数生成器以产生记录的结果。没有必要重新设置随机数生成器来模拟场景。
从最初的投资组合开始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.0119 0.0336 0.1225];m=m/12;C=C/12;rng(11);AssetCenarios=mvnrnd(m,C,20000);p=PortfolioMAD;p=SetCenarios(p,AssetCenarios);p=Setp=GTP=DefaultConstraints(默认值);端口2;Setp=0.0.0.0;初始端口1;pW0.0](p,pwgt0);[pwgt,pbuy,psell]=估计边界(p);显示(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 000 000 000 00 0.1679 0.0599 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);
普赛尔=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
(
)重置随机数生成器以产生记录的结果。没有必要重新设置随机数生成器来模拟场景。
obj
—投资组合对象纽波特
—在有效边界上获得的点数defaultNumPorts
(默认值是10
)(默认)|标量整数在有效边界上获得的点数,指定为标量整数。
笔记
如果没有为指定值纽波特
,默认值从隐藏属性中获取defaultNumPorts
(默认值是10
).如果纽波特
=1.
,此函数返回隐藏属性指定的公文包默认前沿限制
(当前默认值为“最小值”
).
数据类型:双重的
pwgt
-有效边界上的最优投资组合,指定数量的投资组合从最小收益到最大收益的间隔相等有效边界上的最优投资组合,指定数量的投资组合从最小到最大投资组合回报等距分布,作为NumAssets
-借-纽波特
矩阵。pwgt
被退回一个月文件夹
,PortfolioCVaR
或门静脉瘤
输入对象(obj
).
pbuy
-有效边界上最优投资组合相对于初始投资组合的购买购买相对于初始投资组合的最优投资组合在有效边界,回报为NumAssets
-借-纽波特
矩阵。
笔记
如果中未指定初始投资组合obj。InitPort
,则假定该值为0
这样pbuy=最大值(0,pwgt)
和psell=最大值(0,-pwgt)
.
pbuy
被退回一个月文件夹
,PortfolioCVaR
或门静脉瘤
输入对象(obj
).
普赛尔
-有效边界上最优投资组合相对于初始投资组合的销售额相对于有效边界上最优投资组合的初始投资组合的销售额,作为NumAssets
-借-纽波特
矩阵。
笔记
如果中未指定初始投资组合obj。InitPort
,则假定该值为0
这样pbuy=最大值(0,pwgt)
和psell=最大值(0,-pwgt)
.
普赛尔
退换货文件夹
,PortfolioCVaR
或门静脉瘤
输入对象(obj
).
您还可以使用点表示法来估计整个有效边界上指定数量的最优投资组合。
[pwgt,pbuy,psell]=对象估计边界(NumPorts);
将交易成本和营业额约束引入文件夹
,PortfolioCVaR
或门静脉瘤
对象,投资组合优化目标包含一个绝对值项。有关Financial Toolbox™如何以算法方式处理此类案例的更多信息,请参见工具书类.
Cornuejols, G.和R. Tutuncu。金融优化方法。剑桥大学出版社,2007年。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区站点不适合您所在位置的访问。