exponenta event banner

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

Для получения эффективных портфелей, которые имеют целевые портфельные риски, 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.

См. также

| | | | | | | |

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

Подробнее

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