Получение эффективных портфелей для целевых рисков

Для получения эффективных портфелей, имеющих целевые портфельные риски, estimateFrontierByRisk функция принимает один или несколько целевых портфельных рисков и получает эффективные портфели с заданными рисками. Предположим, что у вас есть вселенная из четырех активов, где вы хотите получить эффективные портфели с целевыми рисками портфеля 12%, 14% и 16%.

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 ];

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioCVaR;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.9);

pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]);

display(pwgt)
pwgt =

    0.3594    0.2524    0.1543
    0.3164    0.3721    0.4248
    0.1044    0.1193    0.1298
    0.2199    0.2563    0.2910

Иногда можно запросить риск, для которого нет эффективного портфеля. Основываясь на предыдущем примере, предположим, что вы хотите портфель с 6% риском (отдельные активы в этой вселенной имеют риски в диапазоне от 7% до 42,5%). Получается, что портфель с 6% -ным риском не может быть сформирован с этими четырьмя активами. estimateFrontierByRisk предупреждает, находятся ли ваши целевые риски вне области значений эффективных портфельных рисков, и заменяет его конечной точкой наиболее близкой к вашему целевому риску эффективной границы:

pwgt = estimateFrontierByRisk(p, 0.06)
Warning: One or more target risk values are outside the feasible range [
0.0735749, 0.436667 ].
	Will return portfolios associated with endpoints of the range for these values. 
> In PortfolioCVaR.estimateFrontierByRisk at 80 

pwgt =

    0.7899
    0.0856
    0.0545
    0.0700
Лучший способ избежать этой ситуации - скобить целевые риски портфеля с estimateFrontierLimits и estimatePortRisk (см. «Получение конечных точек эффективной границы и получение портфельных рисков и возвратов CVaR»).
prsk = estimatePortRisk(p, p.estimateFrontierLimits);

display(prsk)
prsk =

    0.0736
    0.4367
Этот результат показывает, что эффективные портфели имеют риски, которые варьируются от 7% до 42,5%. Обратите внимание, что ваши результаты для этих примеров могут быть различными из-за случайной генерации сценариев.

Начиная с начального портфеля, estimateFrontierByRisk также возвращает покупки и продажи, чтобы получить от вашего начального портфеля к целевым портфелям на эффективной границе. Для примера, учитывая начальный портфель в pwgt0, можно получить покупки и продажи из примера с целевыми рисками 12%, 14% и 16%:

pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ];
p = setInitPort(p, pwgt0);
[pwgt, pbuy, psell] = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]);

display(pwgt)
display(pbuy)
display(psell)
pwgt =

    0.3594    0.2524    0.1543
    0.3164    0.3721    0.4248
    0.1044    0.1193    0.1298
    0.2199    0.2563    0.2910


pbuy =

    0.0594         0         0
    0.0164    0.0721    0.1248
         0         0         0
    0.1199    0.1563    0.1910


psell =

         0    0.0476    0.1457
         0         0         0
    0.0956    0.0807    0.0702
         0         0         0
Если вы не задаете начальный портфель, веса купли-продажи предполагают, что ваш начальный портфель 0.

См. также

| | | | | | | |

Похожие примеры

Подробнее о

Внешние веб-сайты