Quant Memo
Core

Volatility-Scaled Return Targets

Dividing a forward return by the asset's own recent volatility before using it as a training label, so a model learns which moves were genuinely surprising rather than just which assets happen to be the most volatile.

Prerequisites: Choosing the Prediction Target: Return, Rank or Direction

A model trained across both a sleepy utility stock and a wild small-cap biotech, using raw forward returns as its target, faces an awkward problem: the biotech's routine, unremarkable 5% daily swings dwarf the utility's genuinely notable 1% move, so a squared-error loss will fixate almost entirely on getting the biotech's giant, mostly-random swings a little less wrong, while barely bothering to learn anything about the quieter, more predictable utility stock. Volatility-scaled targets fix this by expressing each return relative to that asset's own typical size of move, so the loss function treats a surprising move as surprising regardless of which asset it happened to occur in.

How the scaling works

A volatility-scaled target divides the forward return by a measure of that asset's recent volatility, typically an estimate like a trailing realized or exponentially weighted standard deviation of returns:

zt=rt+1σ^t,z_t = \frac{r_{t+1}}{\hat{\sigma}_t} ,

where rt+1r_{t+1} is the forward return being labeled, and σ^t\hat{\sigma}_t is the volatility estimate computed using only data available up to time tt. In plain English: instead of asking the model to predict "how big was the return," you ask it to predict "how many typical-sized moves was this return, relative to how much this specific asset normally moves" — a question whose scale is comparable across a sleepy utility and a wild biotech, even though their raw return sizes are nowhere close.

Worked example: two stocks, one shared model

Suppose the utility stock has a trailing daily volatility of 0.5% and today's forward return is +1.0%+1.0\%; the biotech has a trailing daily volatility of 6% and today's forward return is +9%+9\%. The raw returns make the biotech's move look nine times larger. But the volatility-scaled targets are 1.0/0.5=2.01.0 / 0.5 = 2.0 for the utility and 9/6=1.59 / 6 = 1.5 for the biotech — on a relative basis, the utility's move was actually the more surprising one (two standard deviations versus 1.5), which is exactly the comparison a shared cross-sectional model needs to make sensible use of both stocks' data. Training on raw returns, a squared-error loss would have devoted almost all its attention to the biotech's much larger absolute number and effectively ignored the utility's genuinely more unusual move.

Why this matters for cross-sectional models

Pooling many assets into one model (rather than training a separate model per asset) is one of the main ways machine learning adds value in alpha research — more data, shared structure. But pooling only works if the target is on a comparable footing across assets; otherwise the highest-volatility names dominate the loss and the model effectively becomes a specialist in whichever handful of names move the most, at the expense of everything else. Volatility scaling is the standard fix, playing the same role for return targets that per-series scaling plays for general forecasting targets.

Distribution · normal
-2.000.002.00μvalue →
Within ±1σ 68.3%mean μ 0.00std σ 1.00

Try widening the standard deviation above and picture the same absolute move landing at very different points on a wide versus narrow distribution — volatility scaling recenters every asset's return onto a common, standardized version of that same picture.

What this means in practice

Volatility-scaled targets are near-universal in cross-sectional equity and futures alpha models, since the alternative — pooling raw returns across assets of very different typical volatility — reliably produces models that are secretly just volatility-chasers. The main design choice is the lookback and weighting used to estimate σ^t\hat{\sigma}_t, which must use only past information to avoid leaking the very volatility that's partly determined by the return being predicted.

Volatility-scaled return targets divide each forward return by that asset's own recent volatility before training, so a model pooling data across assets learns which moves were genuinely surprising rather than simply learning to chase whichever assets happen to be the most volatile.

A common leakage mistake is estimating σ^t\hat{\sigma}_t using a window that includes the very return being labeled (or a symmetric, centered window), which lets information about the outcome quietly leak into the scaling factor. The volatility estimate must be computed strictly from data available before the forecast point.

Related concepts

Practice in interviews

Further reading

  • Gu, Kelly & Xiu, Empirical Asset Pricing via Machine Learning
  • de Prado, Advances in Financial Machine Learning, ch. 3
ShareTwitterLinkedIn