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

Получить эффективные портфели, которые предназначались для портфельных рисков, 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 = PortfolioMAD;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);

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

display(pwgt);
pwgt =

    0.2102    0.0621         0
    0.3957    0.4723    0.4305
    0.1051    0.1204    0.1291
    0.2889    0.3452    0.4404

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

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

pwgt =

    0.8867
    0.0396
    0.0404
    0.0332
Лучший способ избежать этой ситуации состоит в том, чтобы заключить в скобки ваши целевые портфельные риски с estimateFrontierLimits и estimatePortRisk (см. конечные точки получения границы эффективности и оцените границы эффективности для объекта PortfolioMAD).
prsk = estimatePortRisk(p, p.estimateFrontierLimits);

display(prsk);
prsk =

    0.0611
    0.2787
Этот результат показывает, что эффективные портфели имеют риски, которые лежат в диапазоне от 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.2102    0.0621         0
    0.3957    0.4723    0.4305
    0.1051    0.1204    0.1291
    0.2889    0.3452    0.4404


pbuy =

         0         0         0
    0.0957    0.1723    0.1305
         0         0         0
    0.1889    0.2452    0.3404


psell =

    0.0898    0.2379    0.3000
         0         0         0
    0.0949    0.0796    0.0709
         0         0         0
Если вы не задаете начальный портфель, веса покупки и продажи принимают, что вашим начальным портфелем является 0.

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

| | | | | | | |

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

Больше о