Postprocessing Results to Set Up Tradable Portfolios
After obtaining efficient portfolios or estimates for expected portfolio risks and
returns, use your results to set up trades to move toward an efficient portfolio. For
information on the workflow when using PortfolioCVaR
objects, see
PortfolioCVaR Object Workflow.
Setting Up Tradable Portfolios
Suppose that you set up a portfolio optimization problem and obtained portfolios
on the efficient frontier. Use the dataset
object from
Statistics and Machine Learning Toolbox™ to form a blotter that lists your portfolios with the names for each
asset. For example, suppose that you want to obtain five portfolios along the
efficient frontier. You can set up a blotter with weights multiplied by 100 to view
the allocations for each portfolio:
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); pwgt = estimateFrontier(p, 5); pnames = cell(1,5); for i = 1:5 pnames{i} = sprintf('Port%d',i); end Blotter = dataset([{100*pwgt},pnames],'obsnames',p.AssetList); display(Blotter)
Blotter = Port1 Port2 Port3 Port4 Port5 Bonds 78.84 43.688 8.3448 0 1.2501e-12 Large-Cap Equities 9.3338 29.131 48.467 23.602 9.4219e-13 Small-Cap Equities 4.8843 8.1284 12.419 16.357 8.281e-14 Emerging Equities 6.9419 19.053 30.769 60.041 100
Note
Your results may differ from this result due to the simulation of scenarios.
This result indicates that you would invest primarily in bonds at the
minimum-risk/minimum-return end of the efficient frontier
(Port1
), and that you would invest completely in emerging equity
at the maximum-risk/maximum-return end of the efficient frontier
(Port5
). You can also select a particular efficient
portfolio, for example, suppose that you want a portfolio with 15% risk and you add
purchase and sale weights outputs obtained from the “estimateFrontier”
functions to set up a trade
blotter:
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); [pwgt, pbuy, psell] = estimateFrontierByRisk(p, 0.15); Blotter = dataset([{100*[pwgt0, pwgt, pbuy, psell]}, ... {'Initial','Weight', 'Purchases','Sales'}],'obsnames',p.AssetList); display(Blotter)
Blotter = Initial Weight Purchases Sales Bonds 30 15.036 0 14.964 Large-Cap Equities 30 45.357 15.357 0 Small-Cap Equities 20 12.102 0 7.8982 Emerging Equities 10 27.505 17.505 0
dataset
object to obtain
shares and shares to be traded. See Also
PortfolioCVaR
| estimateScenarioMoments
| checkFeasibility
Related Examples
- Troubleshooting CVaR Portfolio Optimization Results
- 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