Для получения эффективных портфелей, имеющих целевые портфельные риски, 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 ]; p = Portfolio; p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]); display(pwgt)
pwgt = 0.3984 0.2659 0.1416 0.3064 0.3791 0.4474 0.0882 0.1010 0.1131 0.2071 0.2540 0.2979
Иногда можно запросить риск, для которого нет эффективного портфеля. Основываясь на предыдущем примере, предположим, что вы хотите портфель с риском 7% (отдельные активы в этой вселенной имеют риски в диапазоне от 8% до 35%). Получается, что портфель с 7% -ным риском не может быть сформирован с этими четырьмя активами. estimateFrontierByRisk
предупреждает, находятся ли ваши целевые риски вне области значений эффективных портфельных рисков, и заменяет его конечной точкой наиболее близкой к вашему целевому риску эффективной границы:
pwgt = estimateFrontierByRisk(p, 0.07)
Warning: One or more target risk values are outside the feasible range [ 0.0769288, 0.35 ]. Will return portfolios associated with endpoints of the range for these values. > In Portfolio.estimateFrontierByRisk at 82 pwgt = 0.8891 0.0369 0.0404 0.0336
estimateFrontierLimits
и estimatePortRisk
(см. «Получение конечных точек эффективной границы и получение портфельных рисков и возвратов»).prsk = estimatePortRisk(p, p.estimateFrontierLimits); display(prsk)
prsk = 0.0769 0.3500
Начиная с начального портфеля, 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.3984 0.2659 0.1416 0.3064 0.3791 0.4474 0.0882 0.1010 0.1131 0.2071 0.2540 0.2979 pbuy = 0.0984 0 0 0.0064 0.0791 0.1474 0 0 0 0.1071 0.1540 0.1979 psell = 0 0.0341 0.1584 0 0 0 0.1118 0.0990 0.0869 0 0 0
0
.
estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierLimits
| estimateMaxSharpeRatio
| estimatePortMoments
| estimatePortReturn
| estimatePortRisk
| Portfolio
| setSolver