Получить эффективные портфели, которые предназначались для портфельных рисков, 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
.
Portfolio
| estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierLimits
| estimateMaxSharpeRatio
| estimatePortMoments
| estimatePortReturn
| estimatePortRisk
| setSolver