Объект 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