Существует два способа посмотреть на задачу оптимизации портфеля, которая зависит от того, что вы пытаетесь сделать. Одна цель состоит в том, чтобы оценить, что эффективные портфели и другой должны оценить границы эффективности. Этот раздел фокусируется на бывших Границах эффективности цели и Оценки для особого внимания Объекта PortfolioMAD на последней цели. Для получения информации о рабочем процессе при использовании объектов PortfolioMAD смотрите Рабочий процесс Объекта PortfolioMAD.
Самый основной способ получить оптимальные портфели состоит в том, чтобы получить точки в целой области значений границы эффективности. Учитывая задачу оптимизации портфеля в PortfolioMAD объект, 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 = PortfolioMAD;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);
pwgt = estimateFrontier(p);
disp(pwgt) Columns 1 through 8
0.8907 0.7289 0.5614 0.3946 0.2257 0.0612 0 0.0000
0.0330 0.1163 0.2119 0.3042 0.3998 0.4876 0.4400 0.3125
0.0420 0.0469 0.0472 0.0505 0.0534 0.0580 0.0374 0.0018
0.0343 0.1079 0.1794 0.2507 0.3211 0.3933 0.5226 0.6857
Columns 9 through 10
0.0000 0.0000
0.1570 0.0000
0.0000 0.0000
0.8430 1.0000pwgt = estimateFrontier(p, 4); disp(pwgt)
0.8907 0.3946 0 0.0000 0.0330 0.3042 0.4401 0.0000 0.0420 0.0505 0.0373 0.0000 0.0343 0.2507 0.5227 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.8907 0.7289 0.5614 0.3946 0.2257 0.0612 0 0.0000
0.0330 0.1163 0.2119 0.3042 0.3998 0.4876 0.4400 0.3125
0.0420 0.0469 0.0472 0.0505 0.0534 0.0580 0.0374 0.0018
0.0343 0.1079 0.1794 0.2507 0.3211 0.3933 0.5226 0.6857
Columns 9 through 10
0.0000 0.0000
0.1570 0.0000
0.0000 0.0000
0.8430 1.0000
pbuy =
Columns 1 through 8
0.5907 0.4289 0.2614 0.0946 0 0 0 0
0 0 0 0.0042 0.0998 0.1876 0.1400 0.0125
0 0 0 0 0 0 0 0
0 0.0079 0.0794 0.1507 0.2211 0.2933 0.4226 0.5857
Columns 9 through 10
0 0
0 0
0 0
0.7430 0.9000
psell =
Columns 1 through 8
0 0 0 0 0.0743 0.2388 0.3000 0.3000
0.2670 0.1837 0.0881 0 0 0 0 0
0.1580 0.1531 0.1528 0.1495 0.1466 0.1420 0.1626 0.1982
0.0657 0 0 0 0 0 0 0
Columns 9 through 10
0.3000 0.3000
0.1430 0.3000
0.2000 0.2000
0 00. estimateFrontier | estimateFrontierByReturn | estimateFrontierByRisk | estimateFrontierByRisk | estimateFrontierLimits | estimatePortReturn | estimatePortRisk | PortfolioMAD | setSolver