Получить эффективные портфели, которые предназначались для портфельных рисков, 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 = PortfolioMAD; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); pwgt = estimateFrontierByRisk(p, [0.12, 0.14, 0.16]); display(pwgt);
pwgt = 0.2102 0.0621 0 0.3957 0.4723 0.4305 0.1051 0.1204 0.1291 0.2889 0.3452 0.4404
Иногда, можно запросить риск, для которого не существует никакой эффективный портфель. На основе предыдущего примера предположите, что вы хотите портфель с 6%-м риском (отдельные активы в этой вселенной имеют риски в пределах от 7% к 42,5%). Оказывается, что портфель с 6%-м риском не может быть сформирован с этими четырьмя активами. estimateFrontierByRisk
предупреждает, если ваши целевые риски вне области значений рисков эффективного портфеля, и заменяет его на конечную точку границы эффективности, самой близкой к вашему целевому риску:
pwgt = estimateFrontierByRisk(p, 0.06)
Warning: One or more target risk values are outside the feasible range [ 0.0610574, 0.278711 ]. Will return portfolios associated with endpoints of the range for these values. > In PortfolioMAD.estimateFrontierByRisk at 82 pwgt = 0.8867 0.0396 0.0404 0.0332
estimateFrontierLimits
и estimatePortRisk
(см. конечные точки получения границы эффективности и оцените границы эффективности для объекта PortfolioMAD).prsk = estimatePortRisk(p, p.estimateFrontierLimits); display(prsk);
prsk = 0.0611 0.2787
Начиная с начального портфеля, 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.2102 0.0621 0 0.3957 0.4723 0.4305 0.1051 0.1204 0.1291 0.2889 0.3452 0.4404 pbuy = 0 0 0 0.0957 0.1723 0.1305 0 0 0 0.1889 0.2452 0.3404 psell = 0.0898 0.2379 0.3000 0 0 0 0.0949 0.0796 0.0709 0 0 0
0
.
PortfolioMAD
| estimateFrontier
| estimateFrontierByReturn
| estimateFrontierByRisk
| estimateFrontierByRisk
| estimateFrontierLimits
| estimatePortReturn
| estimatePortRisk
| setSolver