Volatility Targeting (波动率目标 / 波动率缩放)

Position-sizing rule: scale exposure inversely to a forecast of return volatility so each asset (or strategy leg) contributes a target risk budget to the portfolio. The outer layer beneath any alpha signal.

Definition

Given a signal-driven weight f(s_t) (possibly the output of a Nonlinear Signal Mapping), the dollar position in contract i at time t is:

\text{pos}_{i,t} = f(s_{i,t}) \cdot \frac{\sigma_{target}}{\hat\sigma_{i,t}}

where:

  • \sigma_{target} is the annualized volatility target for this strategy (e.g., 12% in Moskowitz et al., 2025).
  • \hat\sigma_{i,t} is the ex-ante forecast of contract i's annualized volatility (typically a rolling 60-day or 252-day estimate, or a GARCH(1,1) conditional variance).

This produces a risk-balanced book: if everything else is equal, each contract contributes equal risk, regardless of its native volatility.

Why it matters

  • Without volatility scaling, a high-vol commodity (e.g., natural gas) and a low-vol bond future would have wildly different risk contributions, even at the same signal strength.
  • Volatility targeting is the standard inner loop of every CTA / managed-futures book. It is conceptually separate from the outer loop (signal generation) and from the combination layer (how individual contract weights are aggregated into the book).
  • In Moskowitz et al. (2025), the appraisal-ratio decomposition shows that volatility scaling alone raises the Sharpe of a 12-month TSMOM from a comparable cross-sectional momentum SR of 0.48 to ~0.55 — about half the total TSMOM-vs-XSMOM gain; the rest comes from the mean-forecasting component.

Implementation variants

1. Constant-volatility scaling (Barroso & Santa-Clara, 2015)

\text{pos}_{i,t} = f(s_{i,t}) \cdot \frac{c}{\hat\sigma_{i,t}}

with c a constant chosen so the average portfolio volatility equals the target. This is the standard CTA recipe. Improves over variance scaling (which divides by \hat\sigma_{i,t}^2 and tends to over-allocate to low-vol assets).

2. Dynamic GARCH-based scaling (Daniel & Moskowitz, 2016)

For cross-sectional momentum timing:

\text{pos}_{i,t} = f(s_{i,t}) \cdot \frac{\hat\mu_{i,t}}{\hat\sigma_{i,t}^2}

where \hat\mu_{i,t} is a regression-predicted conditional mean and \hat\sigma_{i,t} is GARCH-predicted. The DM "momentum crashes" correction is essentially a defensive variant that downweights in bear-market regimes.

3. Equal-risk contribution (ERC)

A more sophisticated variant: choose weights such that each position contributes equally to portfolio variance. Solved via a constrained optimization (e.g., Spinu, 2013). Closer to true risk parity but harder to combine with a signal.

Common pitfalls

  • Volatility estimate lag: \hat\sigma_{i,t} uses past data; in a vol regime shift, sizing lags reality.
  • Correlation breakdown: targeting marginal vol ignores cross-sectional correlations; in a crisis, vol targets can understate portfolio risk.
  • Leverage amplification: when many contracts have low vol simultaneously (e.g., post-2017 bond vol), the position sizes inflate and leverage blows up. Many CTAs add a leverage cap.
  • Turnover: rescaling on every signal update can churn; in practice, target vol is updated daily but signals may be slower-moving.

Relationship to risk parity

Volatility targeting at the single-contract level is the building block of Risk Parity portfolios. Risk parity extends the same idea to the portfolio level by also considering cross-correlations. Vol targeting = diagonal risk parity; full risk parity = full covariance risk parity.

References

  • Moskowitz, T.J., Sabbatucci, R., Tamoni, A., & Uhl, B. (2025). "Nonlinear Time Series Momentum." Working paper, §3.4.
  • Barroso, P. & Santa-Clara, P. (2015). "Momentum and Its Moments." Journal of Financial Economics, 116, 111–120.
  • Daniel, K. & Moskowitz, T.J. (2016). "Momentum Crashes." Journal of Financial Economics, 122.
  • Spinu, F. (2013). "An Algorithm for Computing Risk Parity Weights." SSRN.