Skip to main content
2026-05-22 · 3 min read · ← 5 · volatility · feature · regime

Vol ratio as cross-symbol regime gate

what you'll learn · Why the vol_5/vol_60 ratio is more useful than vol_5 or vol_60 alone for cross-sectional regime classification, and how to use it as a gate.

Realised vol is a level. Vol-of-vol is its second derivative. The vol_5/vol_60 ratio is neither — it's a dimensionless regime classifier that works the same across a 1%-daily ETF and a 5%-daily small-cap. Why scale-invariance matters when classifying regime across heterogeneous universes.

The feature library now has three vol features at different horizons (vol_5, vol_20, vol_60) plus a second-order vol (realized_vol_of_vol_20). They all measure level — a number attached to a symbol that says how big the recent moves are.

vol_ratio_5_60 is different. It’s the ratio:

vol_5(t) / vol_60(t)

A pure ratio between two estimates of the same symbol’s vol at two horizons. The number isn’t a level; it’s a regime classifier:

  • ratio > 1: short-term vol exceeds long-term — accelerating
  • ratio ≈ 1: stable regime — vol is what it has been
  • ratio < 1: short-term vol is below long-term — decelerating

The cross-symbol property

The interesting thing about a ratio is what cancels.

vol_60 for a low-vol bond ETF might be 0.005 (50 bps daily). For a high-vol small-cap it might be 0.05 (5%). The bond and the small-cap aren’t comparable on the level axis — operators sensible thresholds wildly differ per universe.

On the ratio axis they ARE comparable:

  • Bond ETF in stable regime: ratio ≈ 1.0.
  • Bond ETF during a Treasury auction spike: ratio = 1.8.
  • Small-cap in stable regime: ratio ≈ 1.0.
  • Small-cap during earnings: ratio = 1.8.

A 1.8 ratio means the same thing on both: the short-term vol is 80% above the structural baseline. The cross-symbol regime gate is the same threshold (say 1.5) for both. Cross-sectional ranking and gating on vol_ratio_5_60 produce dollar-neutral, volatility-bucket-agnostic comparisons across a heterogeneous universe.

Three concrete use cases

1. Size gate

position_size = base_size * min(1.0, 1.0 / max(1.0, vol_ratio_5_60))

Halves position size when ratio = 2.0; goes flat at very high values. Same threshold works for bonds, equities, and crypto.

2. Cross-sectional regime sort

Rank universe by vol_ratio_5_60. The top quintile is the “regime accelerating” bucket — typical names in this bucket right now include earnings-week names, news-driven names, and sector-rotation outliers. Strategies that target regime change (volatility breakout, mean reversion on first-day spikes) can restrict their universe to this bucket.

3. Strategy compositor

vol_ratio_5_60 ≤ 1 → run a momentum strategy (regime stable, trend should persist). vol_ratio_5_60 > 1.3 → switch to mean-reversion (regime transitioning, recent moves are likely overreactions). vol_ratio_5_60 > 2 → flat (no strategy works in transitioning regimes without symbol-specific calibration).

The thresholds are operator-tunable but the structure (ratio gates compositor) works without per-symbol calibration.

What it doesn’t do

  • Not a level estimator. Two symbols with the same vol_ratio_5_60 can have wildly different dollar-vol levels; one might be a sleepy bond and the other a meme stock that just doubled. Use vol_20 to set the dollar-risk budget; use vol_ratio_5_60 to classify the regime.

  • Not a direction signal. Vol acceleration says regime change, not regime direction. Acceleration happens in both crash and rally scenarios — the ratio doesn’t distinguish. Compose with momentum features to get direction.

  • Not free of look-ahead. Lag 61 (matches vol_60). Plan the warmup window.

Why not just take a log or a difference?

log(vol_5 / vol_60) is cleaner mathematically (symmetric around 0, addable across symbols). The current implementation returns the raw ratio because:

  1. Interpretation: “ratio = 1.5” is more readable than “log ratio = +0.405”.
  2. Threshold semantics: gate-at-1.5 reads more directly than gate-at-log(1.5).
  3. Composition: when feeding into a multiplicative size gate (use case #1 above), the raw ratio is the natural unit.

The log form would be a useful follow-up if operators wanted to build a Z-score of the log-ratio across a universe (the symmetric form behaves better in averages). Out of scope for now.

The discipline rule

Use level features (vol_20, momentum_20) for level decisions. Use ratio features (vol_ratio_5_60) for cross- symbol regime gates. Level features need per-symbol or per-universe calibration; ratio features work the same across the panel.

A corollary: when proposing a new feature, ask “does this need universe-specific tuning to be useful, or does it work the same across symbols?” Ratio features get a free pass on that question. Level features need an answer.

deskgdfindgfstrategiesgsfeaturesgepromotionsgpapigabotgbwritinggw

Shortcuts are no-ops while typing in an input or textarea.