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