Estimate Efficient Frontiers for PortfolioMAD Object
Whereas Estimate Efficient Portfolios Along the Entire Frontier for PortfolioMAD Object focused on estimation of efficient
portfolios, this section focuses on the estimation of efficient frontiers. For
information on the workflow when using PortfolioMAD
objects, see
PortfolioMAD Object Workflow.
Obtaining MAD Portfolio Risks and Returns
Given any portfolio and, in particular, efficient portfolios,
the functions estimatePortReturn
and estimatePortRisk
provide estimates for
the return (or return proxy), risk (or the risk proxy). Each function
has the same input syntax but with different combinations of outputs.
Suppose that you have this following portfolio optimization problem
that gave you a collection of portfolios along the efficient frontier
in pwgt
:
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 ]; m = m/12; C = C/12; AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioMAD; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = setInitPort(p, pwgt0); pwgt = estimateFrontier(p)
pwgt = Columns 1 through 8 0.8954 0.7264 0.5573 0.3877 0.2176 0.0495 0.0000 0 0.0310 0.1239 0.2154 0.3081 0.4028 0.4924 0.4069 0.2386 0.0409 0.0524 0.0660 0.0792 0.0907 0.1047 0.1054 0.1132 0.0328 0.0973 0.1613 0.2250 0.2890 0.3534 0.4877 0.6482 Columns 9 through 10 0 0.0000 0.0694 0.0000 0.1221 0.0000 0.8084 1.0000
Note
Remember that the risk proxy for MAD portfolio optimization is mean-absolute deviation.
Given pwgt0
and pwgt
,
use the portfolio risk and return estimation functions to obtain risks
and returns for your initial portfolio and the portfolios on the efficient
frontier:
prsk0 = estimatePortRisk(p, pwgt0); pret0 = estimatePortReturn(p, pwgt0); prsk = estimatePortRisk(p, pwgt); pret = estimatePortReturn(p, pwgt); display(prsk0) display(pret0) display(prsk) display(pret)
prsk0 = 0.0256 pret0 = 0.0072 prsk = 0.0178 0.0193 0.0233 0.0286 0.0348 0.0414 0.0489 0.0584 0.0692 0.0809 pret = 0.0047 0.0059 0.0072 0.0084 0.0096 0.0108 0.0120 0.0133 0.0145 0.0157
Obtaining the PortfolioMAD Standard Deviation
The PortfolioMAD
object has a function to compute standard deviations of
portfolio returns, estimatePortStd
. This function
works with any portfolios, not necessarily efficient portfolios. For example, the
following example obtains five portfolios (pwgt
) on the efficient
frontier and also has an initial portfolio in pwgt0
. Various
portfolio statistics are computed that include the return, risk, and standard
deviation. The listed estimates are for the initial portfolio in the first row
followed by estimates for each of the five efficient portfolios in subsequent rows.
m = [ 0.0042; 0.0083; 0.01; 0.15 ];
C = [ 0.005333 0.00034 0.00016 0;
0.00034 0.002408 0.0017 0.000992;
0.00016 0.0017 0.0048 0.0028;
0 0.000992 0.0028 0.010208 ];
pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ];
p = PortfolioMAD('initport', pwgt0);
p = simulateNormalScenariosByMoments(p, m, C, 20000);
p = setDefaultConstraints(p);
pwgt = estimateFrontier(p, 5);
pret = estimatePortReturn(p, [pwgt0, pwgt]);
prsk = estimatePortRisk(p, [pwgt0, pwgt]);
pstd = estimatePortStd(p, [pwgt0, pwgt]);
[pret, prsk, pstd]
ans = 0.0212 0.0305 0.0381 0.0187 0.0326 0.0407 0.0514 0.0369 0.0462 0.0841 0.0484 0.0607 0.1168 0.0637 0.0796 0.1495 0.0807 0.1009
See Also
PortfolioMAD
| estimatePortReturn
| plotFrontier
| estimatePortStd
Related Examples
- Plotting the Efficient Frontier for a PortfolioMAD Object
- Creating the PortfolioMAD Object
- Working with MAD Portfolio Constraints Using Defaults
- Estimate Efficient Portfolios Along the Entire Frontier for PortfolioMAD Object
- Asset Returns and Scenarios Using PortfolioMAD Object
- Postprocessing Results to Set Up Tradable Portfolios