Объект PortfolioCVaR для оптимизации портфеля CVaR. Объект Portfolio для оптимизации портфеля среднего отклонения. Иногда, вы можете хотеть исследовать задачи оптимизации портфеля согласно различным комбинациям прокси риска и возврата. Типичный пример - то, что вы хотите сделать, оптимизация портфеля CVaR и затем хотеть работать, в основном, с моментами портфеля возвращается. Предположим, что вы настраиваете задачу оптимизации портфеля CVaR с:
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 = PortfolioCVaR; 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); p = setProbabilityLevel(p, 0.9);
Чтобы работать с той же проблемой в среде среднего отклонения, можно использовать сценарии от объекта PortfolioCVaR настроить объект Portfolio так, чтобы p содержал задачу оптимизации CVaR, и 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.0665 0.0585
0.0787 0.0716
0.0910 0.0848
0.1033 0.0979
0.1155 0.1111
0.1278 0.1243
0.1401 0.1374
0.1523 0.1506
0.1646 0.1637
0.1769 0.1769
ans =
0.0797 0.0774
0.0912 0.0835
0.1095 0.0995
0.1317 0.1217
0.1563 0.1472
0.1823 0.1746
0.2135 0.2059
0.2534 0.2472
0.2985 0.2951
0.3499 0.3499Чтобы привести к сопоставимым результатам, можно использовать возвраты или риски от одной оптимизации портфеля, когда цель возвращает или рискует для другой оптимизации портфеля.
qwgt = estimateFrontierByReturn(q, pret); qret = estimatePortReturn(q, qwgt); qstd = estimatePortStd(q, qwgt); [pret, qret] [pstd, qstd]
ans =
0.0665 0.0665
0.0787 0.0787
0.0910 0.0910
0.1033 0.1033
0.1155 0.1155
0.1278 0.1278
0.1401 0.1401
0.1523 0.1523
0.1646 0.1646
0.1769 0.1769
ans =
0.0797 0.0797
0.0912 0.0912
0.1095 0.1095
0.1317 0.1317
0.1563 0.1563
0.1823 0.1823
0.2135 0.2135
0.2534 0.2534
0.2985 0.2985
0.3499 0.3499