Существует два способа взглянуть на задачу оптимизации портфеля, которая зависит от того, что вы пытаетесь сделать. Одна цель заключается в оценке эффективных портфелей, а другая - в оценке эффективных границ. Этот раздел посвящен прежней цели, а Оценка эффективных границ для объекта PortfolioCVaR особое внимание второй цели. Для получения информации о рабочем процессе при использовании объектов Portfolio CV a R, смотрите Рабочий процесс объекта Portfolio CV a R.
Самый основной способ получить оптимальные портфели - получить точки по всей области значений эффективной границы. Учитывая задачу оптимизации портфеля в 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