This is the fifth in my Hedge Fund Hacks series in which I dig below the surface of some of the common challenges of hedge fund performance analysis. For many, this may seem like very basic obvious stuff. But even if you have plenty of experience, take 5 minutes to scan through this post – we can all benefit from being reminded of the basics.

## Anti Lake Wobegone

In Lake Wobegone, according to the Prairie Home Companion, all the children are above average. We know this cannot be so. We know that some folks are above average and some below and that’s just how averages work.

Or is it? We know that such a thing as an average monthly return exists. Mean variance portfolio optimization uses it combined with variance of monthly returns to build “optimum” portfolios. We shall shortly see that because rates of return vary up and down each month, on average, everyone is below average!

When it comes to investment returns, we live in Anti Lake Wobegone.

## Compounding vs Volatility

What rate should we expect our assets to grow if they return R% each month?

### Compounding

When I was at Cage Green Primary School in the UK I had a savings account with a building society and the yield was about 15%. Every Saturday I would go into the building society and deposit my savings from my allowance and a teller would update my little savings account book. To my amazement and joy, I earned more than 12 x R% in a year, I actually earned ((1 + R%)^12 – 1).

For anyone younger than about thirty, I do indeed mean 15%, NOT 1.5%! A building society was a mutual savings bank that used its members’ deposits to fund mortgages. Think: George Bailey and Bailey Brothers Building & Loan (surely you know “It’s a Wonderful Life”?). This was before commercial banks were allowed to write mortgages in the UK. Oh, and savings, that’s what you have when you spend less than you earn.

Arithmetic averages arise from an additive process. Compounding is a geometric or multiplicative process.

Consider 2 month’s of returns at 1%:

Let’s start with 100 units of capital and say we gain 1% simple interest per month for 2 months. We end up with

100.(1 + 1/100 + 1/100) = 100.(1 + 2/100) = 102

However, if we gain 1% compound interest we end up with

100.(1 + 1/100).(1 + 1/100) = 100.(1 + 2/100 + 1/10000) = 102.01

That extra 1/10000? That right there is compounding. “The most powerful force in the universe” – something Einstein never said.

### Volatility

If we have an asset that delivers an average return of 1% per month, then we should make

(1 + 0.01)^12 – 1 = 12.68% per year

Well, not exactly. The problem is that the return of 1% is simply an arithmetic average of all the monthly returns. Some months we only get 0.5%, others we get 2%, and of course we probably have some months where we lose some.

This is volatility and it affects our overall compound rate of return. We are not going to get a nice neat (1 + 0.01)^12, we are going to get (1 + 0.01).(1 – 0.005).(1 + 0.015)…. We are going to earn the geometric average of the returns each month, NOT the arithmetic average.

Let’s go back to our 2-month toy example and we will use “e” to represent some volatility of returns (note the arithmetic average remains 1%):

(1 + 1/100 + e).(1 + 1/100 – e) = (1 + 0.02 + 1/10000 – e^2) < (1 + 1/100)^2

It should be clear that the only time a series of returns with an arithmetic average of R% per month delivers (1 + R%)^12 over the course of a year is when the volatility is zero. Furthermore, this is the highest return a series with an arithmetic average of R% per month can possibly deliver. Every other series will be below the average R% – Anti Lake Wobegone.

## How Volatility Affects Compounding

I am going to consider a variety of return series with an arithmetic average monthly return of 1% but with different volatilities. In this experiment I explore a range of annualized volatilities from 0% to 40% in 5% increments. Monthly volatility is annual volatility divided by square root of 12.

We know that when volatility is zero, over the course of a year we are going to earn (1 + 1/100)^12 – 1 = 12.68%. For each of the other volatility levels I generate a 100,000 series of returns using R’s random normal distribution (with mean=0 and standard deviation = monthly volatility). Since the returns are random, any given series of 12 months will not average to 1%, so I simply re-center the return series by subtracting the actual average and adding back 1%.

For each return series I figure out the compound average growth rate (i.e. the compounded return). I then take the average of all 100,000 return series for that volatility level. For each volatility level, I plot the return. Here’s what we get:

To take away a single data point, consider that a volatility of around 25% gives a Sharpe Ratio of about 0.5. At that point, the compounded yield has dropped from almost 13% to 9.5%, a decline of around 25%. Furthermore, the decline accelerates with increasing volatility.

Here’s the R code used to generate the above:

CAGR <- function(rets) prod(1 + rets)^(12 / length(rets)) - 1 mcCount <- 100000 # Number of MC simulations to run months <- 12 expReturn <- 0.01 # 1% per month arithmetic average return compRet <- (1 + expReturn)^months - 1 # Compounded return with 0 vol annVol <- seq(0.05, 0.40, by=0.05) # Range of vols to test actRets <- matrix(ncol=length(annVol), nrow=mcCount) # Matrix to store results for (i in 1:length(annVol)){ # For each vol randomly generate returns and store in mcCount rows of matrix returns <- matrix(rnorm(months * mcCount, 0, annVol[i] / sqrt(12)), ncol=months) # Each row represents 12 months returns. Recenter them to expReturn returns <- returns - apply(returns, 1, mean) + expReturn # Figure the compound annual growth rate for each 12 months series actRets[ , i] <- apply(returns, 1, CAGR) } dev.new() # Plot the mean of CAGRs (in columns) vs the annualized vols. plot(100 * c(0, annVol), c(compRet, apply(actRets, 2, mean)), pch=16, col="#ff2b00", bty="n", ylim=c(0.0, compRet), main=paste0("Compound Return vs. Volatility"), xlab="Annualized Volatility (%)", ylab="Compound Ann. Return") text(0, 0.04, paste0(100 * expReturn, "% Avg. Mo. Return = ", round(100 * compRet, 2), "% Compounded @ 0 Vol."), pos=4)

## Conclusions

Think about what this means at the portfolio level, both in terms of returns you get and the portfolio optimization process.

- Your main objective in selecting managers is to build a set who, together, will reduce volatility as much as possible.
- Focus on how each manager controls the volatility of their return stream.
- Consider the implications of this well-known phenomenon for the way you optimize your portfolios – instead of using a monthly time-frame, perhaps your rebalancing interval should be used.

The bottom line is that controlling volatility is vital to getting the returns you expect.

Image Credit: Photo by Marc Sendra Martorell on Unsplash

## Share

If you found this post informative, please share it!