exponenta event banner

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

Для получения эффективных портфелей, которые имеют целевую доходность портфеля, estimateFrontierByReturn функция принимает один или несколько целевых портфельных возвратов и получает эффективные портфели с указанными возвратами. Например, предположим, что имеется совокупность из четырех активов, в которых требуется получить эффективные портфели с целевой доходностью портфеля 7%, 10% и 12%:

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.95);

pwgt = estimateFrontierByReturn(p, [0.07,  0.10, .12]);
display(pwgt)
pwgt =

    0.7526    0.3773    0.1306
    0.1047    0.3079    0.4348
    0.0662    0.1097    0.1426
    0.0765    0.2051    0.2920

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

 pwgt = estimateFrontierByReturn(p, [0.04]);
Warning: One or more target return values are outside the feasible range [
0.066388, 0.178834 ].
	Will return portfolios associated with endpoints of the range for these values. 
> In PortfolioCVaR.estimateFrontierByReturn at 93 
Лучший способ избежать этой ситуации заключается в том, чтобы привязать возврат целевого портфеля к estimateFrontierLimits и estimatePortReturn (см. Получение конечных точек эффективной границы и получение рисков и возвратов портфеля CVaR).
pret = estimatePortReturn(p, p.estimateFrontierLimits);

display(pret)
pret =

    0.0664
    0.1788
Этот результат указывает на то, что эффективные портфели имеют доходность в диапазоне от 6,5% до 17,8%. Обратите внимание, что результаты для этих примеров могут отличаться из-за случайной генерации сценариев.

Если у вас есть начальный портфель, estimateFrontierByReturn также возвращает покупки и продажи, чтобы получить из первоначального портфеля в целевые портфели на эффективной границе. Например, с учетом первоначального портфеля в pwgt0, для получения покупок и продаж с целевой доходностью 7%, 10% и 12%:

pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ];
p = setInitPort(p, pwgt0);
[pwgt, pbuy, psell] = estimateFrontierByReturn(p, [0.07,  0.10, .12]);

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

    0.7526    0.3773    0.1306
    0.1047    0.3079    0.4348
    0.0662    0.1097    0.1426
    0.0765    0.2051    0.2920


pbuy =

    0.4526    0.0773         0
         0    0.0079    0.1348
         0         0         0
         0    0.1051    0.1920


psell =

         0         0    0.1694
    0.1953         0         0
    0.1338    0.0903    0.0574
    0.0235         0         0
Если у вас нет начального портфеля, веса покупки и продажи предполагают, что ваш первоначальный портфель 0.

См. также

| | | | | | | |

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

Подробнее

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