Estimate Efficient Frontiers for PortfolioCVaR Object
Whereas Estimate Efficient Portfolios for Entire Frontier for PortfolioCVaR Object focused on
estimation of efficient portfolios, this topic focuses on the estimation of efficient
frontiers. For information on the workflow when using PortfolioCVaR
objects, see PortfolioCVaR Object Workflow.
Obtaining CVaR Portfolio Risks and Returns
This example shows how to use the functions estimatePortReturn
and estimatePortRisk
with a PortfolioCVaR
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 = PortfolioCVaR; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.95); pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = setInitPort(p, pwgt0); pwgt = estimateFrontier(p);
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.0577
display(pret0)
pret0 = 0.0071
display(prsk)
prsk = 10×1
0.0404
0.0439
0.0526
0.0646
0.0786
0.0937
0.1121
0.1363
0.1638
0.1932
display(pret)
pret = 10×1
0.0050
0.0061
0.0072
0.0083
0.0093
0.0104
0.0115
0.0126
0.0136
0.0147
Obtaining Portfolio Standard Deviation and VaR
This example shows how to compute standard deviations of portfolio returns and the value-at-risk of portfolios for a PortfolioCVaR
object with the functions estimatePortStd
and estimatePortVaR
. These functions work with any PortfolioCVaR 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, standard deviation, and value-at-risk. 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 = PortfolioCVaR('initport', pwgt0);
p = simulateNormalScenariosByMoments(p, m, C, 20000);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.9);
pwgt = estimateFrontier(p, 5);
pret = estimatePortReturn(p, [pwgt0, pwgt]);
prsk = estimatePortRisk(p, [pwgt0, pwgt]);
pstd = estimatePortStd(p, [pwgt0, pwgt]);
pvar = estimatePortVaR(p, [pwgt0, pwgt]);
[pret, prsk, pstd, pvar]
ans = 6×4
0.0206 0.0454 0.0377 0.0276
0.0949 0.0215 0.0658 -0.0096
0.1086 0.0219 0.0738 -0.0130
0.1223 0.0229 0.0821 -0.0161
0.1360 0.0246 0.0907 -0.0189
0.1497 0.0272 0.0999 -0.0205
See Also
PortfolioCVaR
| estimatePortReturn
| plotFrontier
| estimatePortStd
| estimatePortVaR
Topics
- Plotting the Efficient Frontier for a PortfolioCVaR Object
- Creating the PortfolioCVaR Object
- Working with CVaR Portfolio Constraints Using Defaults
- Asset Returns and Scenarios Using PortfolioCVaR Object
- Estimate Efficient Portfolios for Entire Frontier for PortfolioCVaR Object
- Postprocessing Results to Set Up Tradable Portfolios
- Hedging Using CVaR Portfolio Optimization
- Compute Maximum Reward-to-Risk Ratio for CVaR Portfolio
- PortfolioCVaR Object
- Portfolio Optimization Theory
- PortfolioCVaR Object Workflow