When I worked at Bridgewater Associates, I regularly came across marketing materials about the theory behind risk parity and evidence that risk parity portfolios perform better than traditional portfolios on a risk-adjusted basis. The theory and evidence was quite convincing.

The story goes that Ray Dalio, the founder of Bridgewater, wanted a passive investing strategy that would manage the money in his family trust. He wanted the strategy to be able to weather any kind of economic environment, even the most extreme ones. The ideas eventually became known in the industry as risk parity, and Bridgewater launched the first risk parity fund in 1996.

This prompted me to do some more research on exactly how to implement a risk parity strategy for my personal account. In this post, I provide some code that allows a retail investor to implement a simple risk parity strategy using low-cost ETFs. But first, I provide some background information for the uninitiated.

# Traditional Portfolios Are Not Diversified

It’s easier to understand risk parity by first understanding what’s wrong with traditional portfolios. Here, traditional portfolios mean any portfolio where the assets are chosen in quantities such that there is some balance in the dollar allocation. Everyone uses the 60% equities, 40% bond portfolio as an example here. According to conventional thinking, this portfolio is diversified because the dollar amount invested in equities is roughly equal to the dollar amount invested in bonds.

The risk parity school of thought says that since equities are much riskier than bonds, the overall portfolio volatility is dominated by the equity portion. Something like 90% of the portfolio volatility comes from equities.

It’s easier to see this by plotting the returns of equities, bonds, and the traditional portfolio comprised of 60% equities and 40% bonds. For these asset returns, I am using the low-cost ETFs SPY for equities and AGG for bonds. The idea is that the traditional portfolio (the blue line) still behaves a lot like only equities (the green line) simply because equities have around four times the volatility of bonds.

Seen through this lens, the traditional portfolio is not diversified. The portfolio does poorly during the same periods that equities do poorly. You don’t want a portfolio where a single asset can tank the entire portfolio. And there is little positive impact to the portfolio when bonds do well.

Different assets perform differently depending on economic conditions. The entire purpose of a diversified portfolio is to combine asset classes together that can weather a range of economic outcomes. But the high volatility asset classes (like equities) have so much more volatility than low volatility asset classes (like bonds) that it gets in the way of diversification.

A balanced dollar allocation across asset classes doesn’t translate to a balanced risk allocation across asset classes. Understanding this concept is key to understanding risk parity, and you will see this example used almost every time sometime introduces risk parity ideas.

# Risk Parity Equalizes Risk Exposure Across Asset Classes

Financial risk can be reduced by diversifying across uncorrelated asset classes, but volatility isn’t the same across asset classes. The risk parity approach chooses asset allocations such that the risk contribution of each asset to the overall portfolio volatility is equal. This means that lower risk assets (like bonds) will generally have a higher allocation than higher risk assets (like equities).

Each asset class performs differently depending on economic conditions and by equalizing risk exposure to many asset classes, the risk parity portfolio can weather a range of economic outcomes. No one asset can tank the entire portfolio.

The traditional approach chooses allocations based on a trade off between risk and return. Want more return? Then choose a high allocation to higher-return assets (like equities) and become less diversified. Want less risk? Then choose a high allocation to low volatility assets (like bonds) and live with a lower expected return. The traditional portfolio changes the allocation to asset classes to match the investor’s risk and return preferences.

The risk parity approach, on the other hand, first constructs a portfolio that balances risk across asset classes without leverage. Then, if the expected return of this portfolio is too low, and it probably will be too low, apply leverage to the entire portfolio instead of shifting allocation toward higher-return assets. The amount of leverage applied is the thing that changes to match the investor’s risk and return preferences rather than changing the asset allocation.

The application of leverage allows the construction of a portfolio that has high expected return but retains the benefits of diversification. Again, it’s easier to see this by plotting the returns of equities, bonds, and an illustrative risk parity portfolio.

First, I constructed a portfolio that balances risk across asset classes without leverage. This yields a portfolio of roughly 20% equities and 80% bonds because equities have around four times the volatility of bonds over this time period. Then, I levered the portfolio by 33% to yield final weights of 27% equities and 106% bonds. Levering the portfolio by 33% makes the risk parity portfolio equal the return of the 60% equity and 40% bond portfolio above.

Comparing the risk parity portfolio in the plot above to the traditional portfolio illustrates that the risk parity portfolio has significantly less volatility than the traditional portfolio but with the same cumulative return. It’s more of a straight line going up instead of something that resembles just equities. Risk parity portfolios can achieve a high expected return will retaining the benefits of diversification.

# How to Construct a Risk Parity Portfolio

First, there are many implementations of risk parity in the industry and no one method is considered superior to others. It all depends on how you measure risk and an asset’s risk contribution to the portfolio.

In this section, I will provide some code that implements a simple risk parity strategy using equities, bonds, and gold via the ETFs SPY, AGG, and GLD. The implementation is to set each asset’s weight to be proportional to the inverse of the asset’s one year rolling standard deviation. This makes low volatility assets have a high weight.

In an actual implementation of risk parity, the asset’s correlation to other assets will be considered and other measures of risk beyond volatility will be used, but this simple implementation is more to develop intuition and as a starting point for more advanced implementations.

Here’s the code.

source("./Code/1.001 Initial Functions and Libraries.R") # 1. Load data. data_raw <- getSymbolsYahooMany(c("SPY", "AGG", "GLD")) # 2. Calculate returns. data <- data_raw %>% group_by(ticker) %>% mutate(daily_return = adjusted_close / lag(adjusted_close, 1) - 1, sd_ma12 = runSD(daily_return, n = 252) * sqrt(252)) %>% filter(date >= "2006-01-01") %>% select(date, ticker, daily_return, sd_ma12) # 3. Calculate risk parity weightings. sd_ma12 <- data %>% dcast(date ~ ticker, value.var = "sd_ma12") %>% mutate(total = (1 / AGG) + (1 / SPY) + (1 / GLD), AGG_weight = (1 / AGG) / total, SPY_weight = (1 / SPY) / total, GLD_weight = (1 / GLD) / total) %>% select(date, AGG_weight, SPY_weight, GLD_weight)

And here is what the weights look like over time. On average, it’s roughly a 70% allocation to bonds, 15% to equities, and 15% to gold.

The code underlying this post can be viewed at my Github repository.

I have an email list where I occasionally send updates to readers on the trading systems that I’m developing. If you are interested, please enter your email below.

Great article, Kevin, thanks!

I have implemented an R code to compute, among other formulations, the formulation proposed by Spinu (2013). Check out the package here: https://github.com/dppalomar/riskParityPortfolio

I would like to add that I’ve also been developing a Python version for this problem. Check it out here: https://github.com/mirca/riskparity.py

Guys, how do I down this source code and run on my laptop? What programming environment I need. Code appears to be a Python code. I am also interested down loading the financial data so that I can experiment.

Thanks in advance

similar concept in trading with regards to volatility adjusted notional equivalency used in portfolio management and pairs trades.

Dumb question, but how does “lever the portfolio to final weights of 27% equities and 106% bonds” actually work in practise? For example, I have 100k capital, so I borrow 30k for the leverage, giving me total available to invest of 130k. Do I invest 27/130 of the capital into equities and 106/130 into bonds?

Kevi, thank you for the post and R code. The next step is to lever portfolio to a target return. What is the best way to implement leverage for a retail investor? Particular when there are more than 3 assets to get a better diversification for different growth/inflation regimes.

A lot of managers in managed futures (CTAs) use this concept from 60s. Sometimes it is called “fixed fractional sizing”. It is quite amusing to observe how the old concept gets a new fancy name a few decades later on.

Kevin!

Great article. This is EXACTLY what I do with my 401k portfolio and my friends think I’m NUTS because of my very large allocation to fixed income. Essentially I built out a model similar to your code with some minor differences (optimized to maximize Sharpe). Historical Stdevs and returns were used as proxies for future metrics, although I would love to have an opinion on future expected stdevs and returns, I don’t have an good educated guess and historical averages are the best I can go by.

My model yielded a similar 80/20 makeup of bonds/equities. At first I was shocked by that ratio, but realized that the big difference is probably because bonds have had a humongous runup for the past 40 or so years, and with interest rates at no where to go but up, I’m afraid that runup may stop. Nonetheless, I have implemented my portfolio and I’m literally up ~8% YTD whereas I have buddies who have a much larger allocation to equity and they have similar YTD results, but obviously much higher risk.

Great article, and I look forward to your future articles. Got some ideas I would love for you to research if you have the capacity/skillset for.

I’ve been investigating sharpe/sortino and volatility lately and would be interested in a discussion about how one measures “risk.” Since volatility (up and down ) is generally higher when price is under a falling moving average, I’m just not convinced that standard deviation is the end all and be all it is made out to be. It is more like cholesterol: cheap and easy to get, therefore widely used, regardless of its efficacy. How should one measure risk for risk parity?

Hey Jon, good question. There’s no good answer for this. Any quantitative measure of risk is based on what’s happened in the past, and what’s happened the past is only a subset of what could happen. So you use these measures of risk and observations of what’s happened in the past, combined with economic principles, to inform you on what the true distribution of any asset is. If you know the true distribution of an asset, then you know how risky it is, but you can never know the true distribution.

So, load up on bonds at negative real interest rates?

Nick de Peyster

http://undervaluedstocks.info

Thanks. Do you know where we can find the more “advanced” implementation, one which accouts for the cross variance as well?

Hi Eran,

One version I’ve seen that accounts for covariance is Equal Risk Contribution. This article describes the objective function along with a convex analogue:

http://gestaltu.com/2014/05/spinu-improving-equal-risk-contribution.html/

Regards.

Here’s another paper that describes the equal risk contribution approach. http://www.thierry-roncalli.com/download/erc.pdf

Pingback: Quantocracy's Daily Wrap for 10/11/2016 | Quantocracy