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