Для получения эффективных портфелей, имеющих целевые портфельные риски, 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 = PortfolioCVaR; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.9); pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]); display(pwgt)
pwgt = 0.3594 0.2524 0.1543 0.3164 0.3721 0.4248 0.1044 0.1193 0.1298 0.2199 0.2563 0.2910
Иногда можно запросить риск, для которого нет эффективного портфеля. Основываясь на предыдущем примере, предположим, что вы хотите портфель с 6% риском (отдельные активы в этой вселенной имеют риски в диапазоне от 7% до 42,5%). Получается, что портфель с 6% -ным риском не может быть сформирован с этими четырьмя активами. estimateFrontierByRisk
предупреждает, находятся ли ваши целевые риски вне области значений эффективных портфельных рисков, и заменяет его конечной точкой наиболее близкой к вашему целевому риску эффективной границы:
pwgt = estimateFrontierByRisk(p, 0.06)
Warning: One or more target risk values are outside the feasible range [ 0.0735749, 0.436667 ]. Will return portfolios associated with endpoints of the range for these values. > In PortfolioCVaR.estimateFrontierByRisk at 80 pwgt = 0.7899 0.0856 0.0545 0.0700
estimateFrontierLimits
и estimatePortRisk
(см. «Получение конечных точек эффективной границы и получение портфельных рисков и возвратов CVaR»).prsk = estimatePortRisk(p, p.estimateFrontierLimits); display(prsk)
prsk = 0.0736 0.4367
Начиная с начального портфеля, 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.3594 0.2524 0.1543 0.3164 0.3721 0.4248 0.1044 0.1193 0.1298 0.2199 0.2563 0.2910 pbuy = 0.0594 0 0 0.0164 0.0721 0.1248 0 0 0 0.1199 0.1563 0.1910 psell = 0 0.0476 0.1457 0 0 0 0.0956 0.0807 0.0702 0 0 0
0
.
estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierByRisk
| estimateFrontierLimits
| estimatePortReturn
| estimatePortRisk
| PortfolioCVaR
| setSolver