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 Portfolio
objects, see Portfolio 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 = Portfolio('InitPort', pwgt0); p = setAssetList(p, 'Bonds','Large-Cap Equities','Small-Cap Equities','Emerging Equities'); p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); 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 88.906 51.216 13.525 0 0 Large-Cap Equities 3.6875 24.387 45.086 27.479 0 Small-Cap Equities 4.0425 7.7088 11.375 13.759 0 Emerging Equities 3.364 16.689 30.014 58.762 100
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 = Portfolio('InitPort', pwgt0); p = setAssetList(p, 'Bonds','Large-Cap Equities','Small-Cap Equities','Emerging Equities'); p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); [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 20.299 0 9.7007 Large-Cap Equities 30 41.366 11.366 0 Small-Cap Equities 20 10.716 0 9.2838 Emerging Equities 10 27.619 17.619 0
dataset
object to obtain
shares and shares to be traded. For an example, see Asset Allocation Case Study.See Also
Portfolio
| estimateAssetMoments
| checkFeasibility
Related Examples
- Troubleshooting Portfolio Optimization Results
- Creating the Portfolio Object
- Working with Portfolio Constraints Using Defaults
- Estimate Efficient Portfolios for Entire Efficient Frontier for Portfolio Object
- Estimate Efficient Frontiers for Portfolio Object
- Asset Allocation Case Study
- Portfolio Optimization Examples Using Financial Toolbox
- Portfolio Optimization with Semicontinuous and Cardinality Constraints
- Black-Litterman Portfolio Optimization Using Financial Toolbox
- Portfolio Optimization Using Factor Models
- Portfolio Optimization Using Social Performance Measure
- Diversify Portfolios Using Custom Objective