Working with Other Portfolio Objects
The PortfolioCVaR
object is for CVaR portfolio optimization. The
Portfolio
object is for mean-variance portfolio optimization.
Sometimes, you might want to examine portfolio optimization problems according to
different combinations of return and risk proxies. A common example is that you want to
do a CVaR portfolio optimization and then want to work primarily with moments of
portfolio returns. Suppose that you set up a CVaR portfolio optimization problem
with:
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 ]; pwgt0 = [ 0.3; 0.3; 0.2; 0.1 ]; p = PortfolioCVaR; p = setAssetList(p, 'Bonds','Large-Cap Equities','Small-Cap Equities','Emerging Equities'); p = setInitPort(p, pwgt0); p = simulateNormalScenariosByMoments(p, m, C, 20000); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.9);
To work with the same problem in a mean-variance framework, you can use the scenarios
from the PortfolioCVaR
object to set up a
Portfolio
object so that p
contains a CVaR
optimization problem and q
contains a mean-variance optimization
problem based on the same
data.
q = Portfolio('AssetList', p.AssetList);
q = estimateAssetMoments(q, p.getScenarios);
q = setDefaultConstraints(q);
pwgt = estimateFrontier(p);
qwgt = estimateFrontier(q);
Since each object has a different risk proxy, it is not possible to compare results side by side. To obtain means and standard deviations of portfolio returns, you can use the functions associated with each object to obtain:
pret = estimatePortReturn(p, pwgt); pstd = estimatePortStd(p, pwgt); qret = estimatePortReturn(q, qwgt); qstd = estimatePortStd(q, qwgt); [pret, qret] [pstd, qstd]
ans = 0.0665 0.0585 0.0787 0.0716 0.0910 0.0848 0.1033 0.0979 0.1155 0.1111 0.1278 0.1243 0.1401 0.1374 0.1523 0.1506 0.1646 0.1637 0.1769 0.1769 ans = 0.0797 0.0774 0.0912 0.0835 0.1095 0.0995 0.1317 0.1217 0.1563 0.1472 0.1823 0.1746 0.2135 0.2059 0.2534 0.2472 0.2985 0.2951 0.3499 0.3499
To produce comparable results, you can use the returns or risks from one portfolio optimization as target returns or risks for the other portfolio optimization.
qwgt = estimateFrontierByReturn(q, pret); qret = estimatePortReturn(q, qwgt); qstd = estimatePortStd(q, qwgt); [pret, qret] [pstd, qstd]
ans = 0.0665 0.0665 0.0787 0.0787 0.0910 0.0910 0.1033 0.1033 0.1155 0.1155 0.1278 0.1278 0.1401 0.1401 0.1523 0.1523 0.1646 0.1646 0.1769 0.1769 ans = 0.0797 0.0797 0.0912 0.0912 0.1095 0.1095 0.1317 0.1317 0.1563 0.1563 0.1823 0.1823 0.2135 0.2135 0.2534 0.2534 0.2985 0.2985 0.3499 0.3499
See Also
Related Examples
- Creating the Portfolio 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
- Estimate Efficient Frontiers for PortfolioCVaR Object
- Hedging Using CVaR Portfolio Optimization
- Compute Maximum Reward-to-Risk Ratio for CVaR Portfolio
More About
- PortfolioCVaR Object
- Portfolio Optimization Theory
- PortfolioCVaR Object Workflow
- Portfolio Object Workflow