Pro Access

Volatility-Scaled Momentum is part of the expanded Pro strategy library. The guide stays public, but running it in backtest, compare, paper tracking, and source-code view is a Pro capability. Pro currently unlocks 8 additional pre-built strategies.

The Intuition

Volatility-scaled momentum keeps the core momentum idea but changes the position sizing logic. The direction still comes from medium-horizon trend persistence. What changes is exposure: when realized volatility rises, the strategy automatically cuts size; when volatility falls, it allows larger exposure up to a cap.

This matters because momentum crashes often arrive after volatility spikes. A raw trend rule can stay directionally correct on average but still suffer large drawdowns because it carries too much size into turbulent periods. Volatility scaling tries to make the same signal more survivable.

The approach is common in institutional systematic trading because it separates alpha from risk budgeting. Momentum decides the sign. Realized volatility decides how much balance-sheet usage the position deserves. That usually produces a smoother path than fixed one-unit exposure.

The cost is that sizing can cut exposure just before a strong move resumes, especially after sharp but temporary volatility spikes. Volatility targeting improves robustness more reliably than raw return, not necessarily headline return maximization in every sample.

The Math

Read this as a compact model summary: what the signal sees, what it ignores, and where fragility can creep in.

Momentum(t)    = Close(t) / Close(t-h) - 1
sigma_real(t)  = std(log returns[t-v : t]) × sqrt(252)
scale(t)       = min(target_vol / sigma_real(t), max_leverage)

Position(t) = +scale(t)  if Momentum(t) > 0
            = -scale(t)  if Momentum(t) < 0
            =  0         otherwise

Parameters

ParameterTypeDefaultDescription
lookback int 126 Momentum lookback window in trading days
vol_window int 20 Realized-volatility estimation window
target_vol float 0.15 Annualized volatility target used for position scaling
max_leverage float 1.5 Maximum absolute exposure allowed after scaling

Source Code

Source access for this built-in strategy is included with Pro.

Further Reading

  • Barroso, P. & Santa-Clara, P. (2015). Momentum Has Its Moments. Journal of Financial Economics, 116(1), 111-120.
  • Moskowitz, T., Ooi, Y. & Pedersen, L. (2012). Time Series Momentum. Journal of Financial Economics, 104(2), 228-250.
  • Moreira, A. & Muir, T. (2017). Volatility-Managed Portfolios. Journal of Finance, 72(4), 1611-1644.

When It Works / When It Fails

Works
  • Trending markets where vol targeting improves risk-adjusted returns
  • Portfolios where consistent vol budgeting matters
  • When realized vol predicts near-term vol reasonably well
Fails
  • Mean-reverting markets — wrong direction signal same as TSMOM
  • When realized vol is a poor predictor of future vol
  • max_leverage cap binding — clips intended vol scaling

Regime Fit

Bull / Bear Trend (any vol)
Best conditions for direction signal (same as TSMOM). Vol scaling adjusts size continuously with realized vol.
Bull or Bear / Stressed vol
Reduced sizing via vol scaling. Max_leverage cap may bind, limiting gross exposure in extreme vol regimes.
Transition (any vol)
Worst fit for direction. Vol scaling adds no value when the momentum signal itself is unreliable.
No overlay defined
Qualitative fit matches MA Crossover/TSMOM family for direction; vol scaling modifies position size, not regime fit.

Compared to Alternatives

vs TSMOM
TSMOM uses a binary ±1 position; VSM scales position size to hit a target vol. VSM adds a risk management layer without changing the underlying direction logic.
vs Mean Variance
MV estimates expected return AND variance; VSM uses only return sign + realized vol. VSM is simpler; MV tries to optimize the full risk/return ratio.
vs Dual Momentum
Dual Momentum adds a relative momentum filter; VSM adds vol scaling. Both extend base momentum in different directions and can in principle be combined.
Unlock This Strategy →