Skip to content
All library documents

Finding Equal Risk Contribution Weights at a Target Volatility

Article Quant Q&A · Author: Amy Clark

Summary

This exchange concerns how to construct an equal risk contribution portfolio when the investor also wants a specified total volatility. It defines portfolio volatility from the covariance matrix and weights, and frames the allocation as minimizing squared differences between each asset’s risk contribution and an equal share of total portfolio risk.

The response recommends gradient descent on the stated objective, updating portfolio weights iteratively until convergence. It interprets the target volatility as the total portfolio volatility used in the equal-risk-contribution objective, rather than as a separate scaling step after the weights are found. The discussion is brief and does not show derivative calculations, constraints such as long-only weights or a budget normalization, convergence criteria, or a worked numerical example. Those details matter in implementation, and the response’s gradient-descent outline alone does not establish that the chosen setup will yield a valid or stable portfolio for every covariance matrix.

Key ideas

  • Equal risk contribution seeks to make each asset’s risk contribution match an equal share of total portfolio volatility.
  • The objective can be optimized iteratively with gradient descent over portfolio weights.
  • The response treats the target volatility as part of the total-risk expression in the objective.
  • The answer omits implementation details such as weight constraints, normalization, and convergence checks.

Tags

Full text
# How to construct a risk parity Portfolio by fixing the portfolio volatility on a desired level?


# How to construct a risk parity Portfolio by fixing the portfolio volatility on a desired level?












I would like to get the weights of a risk parity portfolio (equal risk contribution). Therefore I use following formulas:

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

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

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

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

$\underset{w}{\arg \min} \sum_{i=1}^N [\frac{\sqrt{w^T \Sigma w}}{N} - w_i \cdot c(w)_i]^2$

probably I need to calculate and then scale the portfolio volatility $\sigma(w)$ on a desired value, e.g. $\sigma(w)$=5%, but I dont know how to do it. Thanks for your help already! Best

## Answer by numerairX (score 1)

https://quant.stackexchange.com/a/42805

your goal is to find the weight vector, $w$, which minimized your "utility" function $\sum_{i}^{N} [\frac{\sqrt{w^{T}\Sigma w}}{N} - w_i\cdot c(w_i))] ^{2}$. A general approach is to use gradient descent algo to find the optimal vector. What gradient descent does is it assumed finding best possible solution on each direction (in your case in each $w_i$) is equivalent to find a global best minimizer. And if you noticed, the whole$\sqrt{w^{T}\Sigma w}$ is just 5% as you specified.

There are lots of documentation on how to perform gradient descent online, but the general idea is to initialize a random vector of your desired variable ($w_i$), and until convergence, choose an index from 1 to n and a step size $a$, update $w_i$ to $w_i - a * $derivatives of utility function w.r.t $w_i$.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.