Существует два способа посмотреть на задачу оптимизации портфеля, которая зависит от того, что вы пытаетесь сделать. Одна цель состоит в том, чтобы оценить, что эффективные портфели и другой должны оценить границы эффективности. Этот раздел фокусируется на бывших Границах эффективности цели и Оценки для особого внимания Объекта PortfolioCVaR на последней цели. Для получения информации о рабочем процессе при использовании объектов PortfolioCVaR смотрите Рабочий процесс Объекта PortfolioCVaR.
Самый основной способ получить оптимальные портфели состоит в том, чтобы получить точки в целой области значений границы эффективности. Учитывая задачу оптимизации портфеля в PortfolioCVaR
объект, estimateFrontier
функция вычисляет эффективные портфели, расположенные с интервалами равномерно согласно прокси возврата от минимума до максимальных эффективных портфелей возврата. Количеством оцененных портфелей управляет скрытое свойство defaultNumPorts
который установлен в 10
. Различное значение для количества оцененных портфелей задано, как введено к estimateFrontier
. Этот пример показывает количество по умолчанию эффективных портфелей в целой области значений границы эффективности:
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 ]; m = m/12; C = C/12; AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioCVaR; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.95); pwgt = estimateFrontier(p); disp(pwgt)
Columns 1 through 8 0.8670 0.7046 0.5421 0.3825 0.2236 0.0570 0.0000 0.0000 0.0413 0.1193 0.1963 0.2667 0.3392 0.4159 0.3392 0.1753 0.0488 0.0640 0.0811 0.1012 0.1169 0.1427 0.1568 0.1754 0.0429 0.1120 0.1806 0.2496 0.3203 0.3844 0.5040 0.6493 Columns 9 through 10 0.0000 0.0000 0.0230 0.0000 0.1777 0.0000 0.7993 1.0000
pwgt = estimateFrontier(p, 4); disp(pwgt)
0.8670 0.3825 0.0000 0.0000 0.0413 0.2667 0.3392 0.0000 0.0488 0.1012 0.1568 0.0000 0.0429 0.2496 0.5040 1.0000
Запуск с начального портфеля, estimateFrontier
также возвращает покупки и продажи, чтобы добраться от вашего начального портфеля до каждого эффективного портфеля на границе эффективности. Например, учитывая начальный портфель в pwgt0
, можно получить покупки и продажи:
pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = setInitPort(p, pwgt0); [pwgt, pbuy, psell] = estimateFrontier(p); display(pwgt) display(pbuy) display(psell)
pwgt = Columns 1 through 8 0.8670 0.7046 0.5421 0.3825 0.2236 0.0570 0.0000 0.0000 0.0413 0.1193 0.1963 0.2667 0.3392 0.4159 0.3392 0.1753 0.0488 0.0640 0.0811 0.1012 0.1169 0.1427 0.1568 0.1754 0.0429 0.1120 0.1806 0.2496 0.3203 0.3844 0.5040 0.6493 Columns 9 through 10 0.0000 0.0000 0.0230 0.0000 0.1777 0.0000 0.7993 1.0000 pbuy = Columns 1 through 8 0.5670 0.4046 0.2421 0.0825 0 0 0 0 0 0 0 0 0.0392 0.1159 0.0392 0 0 0 0 0 0 0 0 0 0 0.0120 0.0806 0.1496 0.2203 0.2844 0.4040 0.5493 Columns 9 through 10 0 0 0 0 0 0 0.6993 0.9000 psell = Columns 1 through 8 0 0 0 0 0.0764 0.2430 0.3000 0.3000 0.2587 0.1807 0.1037 0.0333 0 0 0 0.1247 0.1512 0.1360 0.1189 0.0988 0.0831 0.0573 0.0432 0.0246 0.0571 0 0 0 0 0 0 0 Columns 9 through 10 0.3000 0.3000 0.2770 0.3000 0.0223 0.2000 0 0
0
. estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierByRisk
| estimateFrontierLimits
| estimatePortReturn
| estimatePortRisk
| PortfolioCVaR
| setSolver