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
Now it is possible to compare standard deviations of portfolio returns from either type of portfolio optimization.

See Also

|

Related Examples

More About

External Websites