Risk Parity portfolio construction

If I would like to construct a fully invested long only portfolio with two asset classes (Bonds $B$ and Stocks $S$) based on the concept of 'risk parity' the weights $W$ of my portfolio would be the following:

Then the weight of the bonds $W_B = \textrm{Vol}(S)/[\textrm{Vol(S)}+\textrm{Vol(B)}]$ and the weights of the stocks $W_S = 1 - W_B$.

Based on this I am going to overweigh the low volatility asset and underweight the high volatility asset. My question is: How to calculate the weights for a portfolio with multiple asset classes, 5 for example, so that each asset class will have the same volatility and contribute the same amount of risk into my portfolio. From historical data I can extract the volatility of each asset class and the correlation between them.

-

– Bob Jansen Mar 22 '12 at 21:35
You can offset some of the "diversification" (it's diversification only if the numbers hold during high stress periods) by raising the leverage on the low volatility assets. – bill_080 Mar 22 '12 at 22:24
@Bootvis: I don't think it's OT. But the formatting could certainly be improved. But the subject is non-trivial. – SRKX♦ Mar 23 '12 at 7:10
It certainly is an interesting topic but the question, as it is now, does not seem to be written by a professional quant. I would edit the question if I had the time. – Bob Jansen Mar 23 '12 at 8:05

1 Answer

Risk Parity is not about "having the same volatility", it is about having each asset contributing in the same way to the portfolio overall volatility.

The volatility of the portfolio is defined as:

$$\sigma(w)=\sqrt{w' \Sigma w}$$

The risk contribution of asset $i$ is computed as follows:

$$\sigma_i(w)= w_i \times \partial_{w_i} \sigma(w)$$

You can then show that:

$$\sigma(w)=\sum_{i=1}^n \sigma_i(w)$$

The vector of the marginal contributions ($\partial_{w_i} \sigma(w)$) is computed as follows:

$$c(w)= \frac{\Sigma w}{\sqrt{w' \Sigma w}}$$

You can then find the solution by running the following optimization:

$$\underset{w}{\arg \min} \sum_{i=1}^N [\frac{\sqrt{w^T \Sigma w}}{N} - c(w)_i]^2$$ This article contains all the developments you require to understand how the formulas above are derived.

-
Can you explain what techniques are needed to run that optimization? – nxstock-trader Mar 28 '12 at 22:09

1
– SRKX♦ Mar 28 '12 at 22:13
I meant what packages/routines to use if I were doing this in R? – nxstock-trader Mar 29 '12 at 1:01
@nxstock-trader: you should be able to find something on this page. I haven't used R for optimization for a long time. You can ask on Mathematics or Stack Overflow as well. – SRKX♦ Mar 29 '12 at 6:09
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 7, "mathjax_display_tex": 5, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": false, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9362728595733643, "perplexity_flag": "middle"}