Constraining the maximum asset-portfolio correlation gave bigger returns and smaller volatility.

## Previously

“Portfolio diversity” introduced the topic of asset-portfolio correlations. It also generated four sets of long-only random portfolios as of the start of 2011 using constituents of the S&P 500:

- exactly 20 names, weights between 1% and 10%
- exactly 20 names, maximum asset-portfolio correlation of 60%
- exactly 200 names, weights between 0.1% and 1%
- exactly 200 names, maximum asset-portfolio correlation of 60%

Here we see how those random portfolios performed during 2011.

## 2011 returns

Figures 1 and 2 show the distributions of the returns during the year. The correlation constraint added substantial return for the year.

Figure 1: Distribution of 2011 returns of 20-name random portfolios: weight-constrained (gold) and correlation-constrained (blue).

Figure 2: Distribution of 2011 returns of 200-name random portfolios: weight-constrained (gold) and correlation-constrained (blue).

## 2011 realized volatility

The low correlation portfolios are also — in general — low volatility. Perhaps that is the explanation of the high returns?

Figure 3: Distribution of 2011 realized volatility of 20-name random portfolios: weight-constrained (gold) and correlation-constrained (blue).

Figure 4: Distribution of 2011 realized volatility of 200-name random portfolios: weight-constrained (gold) and correlation-constrained (blue).

## 2011 information ratio

Figure 5: Distribution of 2011 information ratio of 20-name random portfolios: weight-constrained (gold) and correlation-constrained (blue).

Figure 6: Distribution of 2011 information ratio of 200-name random portfolios: weight-constrained (gold) and correlation-constrained (blue).

## Summary

Adding the correlation constraint at the start of 2011 would have been quite useful. I doubt that it is a magic bullet though.

## Appendix R

The commands to generate the random portfolios were given in “Portfolio diversity”.

#### portfolio returns

The returns for the full year can be computed by giving `valuation`

a two-row price matrix that has the first and last prices for the period.

> require(PortfolioProbe) > divrp.20w.ret11 <- valuation(divrp.20w, + sp5.close11[c(1,253),], returns='simple')

#### portfolio volatilities

Computing the volatilities is only slightly more complicated. We get the daily returns for the portfolios and then compute the standard deviation on the returns for each portfolio.

> divrp.20w.vol11 <- 100 * sqrt(252) * apply(valuation( + divrp.20w, sp5.close11, returns='simple'), 2, sd)