Существует два способа посмотреть на задачу оптимизации портфеля, которая зависит от того, что вы пытаетесь сделать. Одна цель состоит в том, чтобы оценить, что эффективные портфели и другой должны оценить границы эффективности. Этот раздел фокусируется на бывших Границах эффективности цели и Оценки для особого внимания Объекта Портфеля на последней цели. Для получения информации о рабочем процессе при использовании Portfolio
объекты, смотрите Рабочий процесс Объекта Портфеля.
Самый основной способ получить оптимальные портфели состоит в том, чтобы получить точки в целой области значений границы эффективности. Учитывая задачу оптимизации портфеля в Portfolio
объект, 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 ]; p = Portfolio; p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); pwgt = estimateFrontier(p); disp(pwgt)
0.8891 0.7215 0.5540 0.3865 0.2190 0.0515 0 0 0 0 0.0369 0.1289 0.2209 0.3129 0.4049 0.4969 0.4049 0.2314 0.0579 0 0.0404 0.0567 0.0730 0.0893 0.1056 0.1219 0.1320 0.1394 0.1468 0 0.0336 0.0929 0.1521 0.2113 0.2705 0.3297 0.4630 0.6292 0.7953 1.0000
pwgt = estimateFrontier(p, 4); disp(pwgt)
0.8891 0.3865 0 0 0.0369 0.3129 0.4049 0 0.0404 0.0893 0.1320 0 0.0336 0.2113 0.4630 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 = 0.8891 0.7215 0.5540 0.3865 0.2190 0.0515 0 0 0 0 0.0369 0.1289 0.2209 0.3129 0.4049 0.4969 0.4049 0.2314 0.0579 0 0.0404 0.0567 0.0730 0.0893 0.1056 0.1219 0.1320 0.1394 0.1468 0 0.0336 0.0929 0.1521 0.2113 0.2705 0.3297 0.4630 0.6292 0.7953 1.0000 pbuy = 0.5891 0.4215 0.2540 0.0865 0 0 0 0 0 0 0 0 0 0.0129 0.1049 0.1969 0.1049 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0521 0.1113 0.1705 0.2297 0.3630 0.5292 0.6953 0.9000 psell = 0 0 0 0 0.0810 0.2485 0.3000 0.3000 0.3000 0.3000 0.2631 0.1711 0.0791 0 0 0 0 0.0686 0.2421 0.3000 0.1596 0.1433 0.1270 0.1107 0.0944 0.0781 0.0680 0.0606 0.0532 0.2000 0.0664 0.0071 0 0 0 0 0 0 0 0
0
. estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierByRisk
| estimateFrontierLimits
| estimateMaxSharpeRatio
| estimatePortMoments
| estimatePortReturn
| estimatePortRisk
| Portfolio
| setSolver