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
This example shows how to use the functions estimatePortReturn
and estimatePortRisk
with a PortfolioMAD
object to provide estimates for the return (or return proxy), risk (or the risk proxy). These functions have the same input syntax but have 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 = 4×10
0.8823 0.7156 0.5497 0.3854 0.2199 0.0530 0 0 0 0
0.0427 0.1427 0.2404 0.3378 0.4365 0.5342 0.4710 0.3338 0.1681 0
0.0392 0.0434 0.0490 0.0518 0.0553 0.0628 0.0404 0.0029 0 0
0.0358 0.0982 0.1608 0.2250 0.2883 0.3500 0.4886 0.6633 0.8319 1.0000
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);
You obtain these risks and returns:
display(prsk0)
prsk0 = 0.0252
display(pret0)
pret0 = 0.0071
display(prsk)
prsk = 10×1
0.0175
0.0190
0.0228
0.0279
0.0338
0.0401
0.0473
0.0568
0.0678
0.0796
display(pret)
pret = 10×1
0.0049
0.0060
0.0071
0.0082
0.0093
0.0104
0.0115
0.0125
0.0136
0.0147
Obtaining the PortfolioMAD Standard Deviation
This example shows how to compute standard deviations of portfolio returns for a PortfolioMAD
object with the function estimatePortStd
. These functions work with any PortfolioMAD portfolios, not necessarily efficient portfolios.
For example, the following code 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 = 6×3
0.0206 0.0300 0.0377
0.0196 0.0321 0.0403
0.0521 0.0365 0.0459
0.0847 0.0480 0.0603
0.1172 0.0629 0.0790
0.1497 0.0796 0.0999
See Also
PortfolioMAD
| estimatePortReturn
| plotFrontier
| estimatePortStd
Topics
- 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
- PortfolioMAD Object
- Portfolio Optimization Theory
- PortfolioMAD Object Workflow