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

Чтобы получить эффективные портфели, которые имеют целевые возвраты портфеля, estimateFrontierByReturn функция принимает один или несколько целевых возвратов портфелей и получает эффективные портфели с заданными возвратами. Например, предположим, что у вас есть вселенная из четырех активов, где вы хотите получить эффективные портфели с целевыми возвратами портфеля 6%, 9% и 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 ];
 
p = Portfolio;
p = setAssetMoments(p, m, C);
p = setDefaultConstraints(p);
pwgt = estimateFrontierByReturn(p, [0.06, 0.09, 0.12]);

display(pwgt)
pwgt =

    0.8772    0.5032    0.1293
    0.0434    0.2488    0.4541
    0.0416    0.0780    0.1143
    0.0378    0.1700    0.3022

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

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 ];
 
p = Portfolio;
p = setAssetMoments(p, m, C);
p = setDefaultConstraints(p);
pwgt = estimateFrontierByReturn(p, [0.05, 0.09, 0.12]);

display(pwgt)
Warning: One or more target return values are outside the feasible range [ 0.0590468, 0.18 ].
	Will return portfolios associated with endpoints of the range for these values. 
> In Portfolio.estimateFrontierByReturn at 70 

pwgt =

    0.8891    0.5032    0.1293
    0.0369    0.2488    0.4541
    0.0404    0.0780    0.1143
    0.0336    0.1700    0.3022
Лучший способ избежать этой ситуации - поставить целевые возвраты портфеля в скобки с estimateFrontierLimits и estimatePortReturn (см. «Получение конечных точек эффективной границы и получение портфельных рисков и возвратов»).
pret = estimatePortReturn(p, p.estimateFrontierLimits);

display(pret)
pret =

    0.0590
    0.1800
Этот результат указывает, что эффективные портфели имеют возвраты, которая варьируется от 5,9% до 18%.

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

pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ];
p = setInitPort(p, pwgt0);
[pwgt, pbuy, psell] = estimateFrontierByReturn(p, [0.06, 0.09, 0.12]);

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

    0.8772    0.5032    0.1293
    0.0434    0.2488    0.4541
    0.0416    0.0780    0.1143
    0.0378    0.1700    0.3022

pbuy =

    0.5772    0.2032         0
         0         0    0.1541
         0         0         0
         0    0.0700    0.2022

psell =

         0         0    0.1707
    0.2566    0.0512         0
    0.1584    0.1220    0.0857
    0.0622         0         0
Если у вас нет начального портфеля, веса купли-продажи предполагают, что ваш начальный портфель 0.

См. также

| | | | | | | | | |

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

Подробнее о

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