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

Получить эффективные портфели, которые предназначались для портфельных рисков, 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.

Смотрите также

| | | | | | | |

Связанные примеры

Больше о

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