Skip to content
All library documents

Targeting Portfolio Volatility Within Constrained Optimization

Article Quant Q&A · Author: PyRsquared

Summary

The document considers how to target a desired portfolio volatility when optimizing a dollar-neutral long-short portfolio with leverage and per-asset weight limits. Scaling optimized weights afterward by the ratio of target volatility to recent realized volatility may violate those constraints, so post-optimization scaling does not necessarily preserve the intended portfolio limits.

The proposed alternative is to minimize portfolio variance subject to a specified expected return and the existing constraints, then vary that return target until the resulting portfolio reaches the desired risk level. The response cautions that a direct risk constraint is generally not supported in a standard quadratic program with only linear constraints. This is a suggested optimization procedure, not a demonstrated result; its practical suitability depends on the optimization setup and available solver.

Key ideas

  • Post-optimization volatility scaling can cause asset weights to exceed portfolio constraints.
  • Minimize variance subject to a chosen expected return and the existing portfolio limits.
  • Vary the expected-return target and trace the resulting portfolios to find the desired risk level.
  • A standard quadratic program with linear constraints does not generally allow a direct volatility constraint.

Tags

Full text
# When / how do I vol-scale portfolio weights when optimizing the portfolio?


# When / how do I vol-scale portfolio weights when optimizing the portfolio?












I have a set of portfolio weights $w$. I'm using `cvxpy` to optimise the portfolio sharpe, subject to a set of constraints.

$$ \text{maximize} \hspace{10mm} \mu^Tw - w^T\Sigma w $$ $$ \text{subject to:} \hspace{5mm} 1^Tw = 0 \hspace{5mm} \text{(Long/Short cash neutral)} $$ $$ ||w||_1 \leq L_{max} \hspace{5mm} \text{(Leverage limit)} $$ $$ |w_i| \leq c, \forall i $$

where $\mu$ are the expected returns, $w$ are the target weights, $\Sigma$ is the covariance matrix of returns, $1$ is a vector of ones, $c$ is a maximimum concentration limit per asset (e.g. 1%), and $L_{max}$ is the maximum allowable leverage.

The issue now is, I want to scale the position sizes by a portfolio volatility target in this process, and I am not sure how. In other words, I would like to target, say, an 10% annualised volatility.

I could scale $w$ using a standard method:

$$ w_{\text{vol scaled}} = w \times \frac{\text{vol target}}{std(r)} $$

where $std(r)$ is the standard deviation of the returns over the last $n$ periods (e.g. 12 months). The problem with this method is that some weights will break the constraints above after having optimised the portfolio.

How can I meet a volatility target, either before, as part of or after portfolio optimisation?

## Answer by Kermittfrog (score 1)

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

You can try

$$ \min \frac{1}{2}w^T\Sigma w \quad \mathrm{s.t.} \quad w^T\mu=\mu_c $$

and subject to your other constraints. Then, trace out $\mu_c$ until the optimal solution reaches your target risk level.

You cannot add a constraint on risk to a standard quadratic program as these commonly work only under linear constraints.

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.