Объект PortfolioMAD для оптимизации портфеля MAD. Объект PortfolioCVaR для оптимизации портфеля CVaR. Объект 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