The PortfolioMAD
объект предназначен для оптимизации портфеля MAD. The PortfolioCVaR
объект предназначен для оптимизации портфеля CVaR. The Portfolio
объект предназначен для оптимизации портфеля средних дисперсий. Иногда можно хотеть изучить задачи оптимизации портфеля в соответствии с различными комбинациями прокси по возврату и риску. Распространенным примером является то, что вы хотите сделать оптимизацию портфеля MAD, а затем хотите работать в основном с моментами возвратов портфеля. Предположим, что вы настраиваете задачу оптимизации портфеля MAD с:
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 ]; pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = PortfolioMAD; p = setAssetList(p, 'Bonds','Large-Cap Equities','Small-Cap Equities','Emerging Equities'); p = setInitPort(p, pwgt0); p = simulateNormalScenariosByMoments(p, m, C, 20000); p = setDefaultConstraints(p);
Чтобы работать с той же задачей в среде средних дисперсий, можно использовать сценарии из PortfolioMAD
объект для настройки объекта Portfolio таким образом, чтобы p
содержит задачу оптимизации MAD и q
содержит задачу оптимизации средних дисперсий, основанную на тех же данных.
q = Portfolio('AssetList', p.AssetList);
q = estimateAssetMoments(q, p.getScenarios);
q = setDefaultConstraints(q);
pwgt = estimateFrontier(p);
qwgt = estimateFrontier(q);
Поскольку каждый объект имеет различный прокси риска, сравнивать результаты один за другим невозможно. Для получения средств и стандартных отклонений возвратов портфеля можно использовать функции, связанные с каждым объектом, чтобы получить:
pret = estimatePortReturn(p, pwgt); pstd = estimatePortStd(p, pwgt); qret = estimatePortReturn(q, qwgt); qstd = estimatePortStd(q, qwgt); [pret, qret] [pstd, qstd]
ans = 0.0592 0.0590 0.0730 0.0728 0.0868 0.0867 0.1006 0.1005 0.1145 0.1143 0.1283 0.1282 0.1421 0.1420 0.1559 0.1558 0.1697 0.1697 0.1835 0.1835 ans = 0.0767 0.0767 0.0829 0.0828 0.0989 0.0987 0.1208 0.1206 0.1461 0.1459 0.1732 0.1730 0.2042 0.2040 0.2453 0.2452 0.2929 0.2928 0.3458 0.3458
Для получения сопоставимых результатов можно использовать возвраты или риски от оптимизации одного портфеля в качестве целевой прибыли или рисков для оптимизации другого портфеля.
qwgt = estimateFrontierByReturn(q, pret); qret = estimatePortReturn(q, qwgt); qstd = estimatePortStd(q, qwgt); [pret, qret] [pstd, qstd]
ans = 0.0592 0.0592 0.0730 0.0730 0.0868 0.0868 0.1006 0.1006 0.1145 0.1145 0.1283 0.1283 0.1421 0.1421 0.1559 0.1559 0.1697 0.1697 0.1835 0.1835 ans = 0.0767 0.0767 0.0829 0.0829 0.0989 0.0989 0.1208 0.1208 0.1461 0.1461 0.1732 0.1732 0.2042 0.2042 0.2453 0.2453 0.2929 0.2929 0.3458 0.3458