- Volatility Ratio (VR) measures the current bar's True Range relative to its Average True Range (ATR), providing a normalized indicator of short-ter...
- Parameterized by `period` (default 14).
- Output range: $\geq 0$.
- Requires `period` bars of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
> "When today's range dwarfs the average, pay attention—the market is telling you something unusual is happening."
Volatility Ratio (VR) measures the current bar's True Range relative to its Average True Range (ATR), providing a normalized indicator of short-term volatility expansion or contraction. Values above 1.0 indicate above-average volatility (potential breakouts), while values below 1.0 suggest below-average volatility (consolidation). This simple yet powerful ratio helps traders identify when markets are moving unusually, often preceding significant price moves.
## Historical Context
The Volatility Ratio emerged from the practical need to normalize volatility readings across different market conditions and timeframes. While ATR (developed by J. Welles Wilder Jr. in 1978) provides an absolute measure of volatility, traders needed a relative measure to answer: "Is today's movement unusual compared to recent history?"
The ratio concept is straightforward: divide today's True Range by the average True Range. This normalization allows:
1. Cross-market comparison (a VR of 2.0 means the same thing whether trading stocks, futures, or forex)
1.**First bar handling**: On the first bar, there's no previous close. TR = H - L for this bar only, and ATR initialization uses bias correction to prevent understating early values.
2.**Warmup period**: VR needs approximately `Period` bars for ATR to stabilize. During warmup, bias correction helps but early readings may be less reliable. The implementation tracks warmup via `IsHot`.
3.**Threshold interpretation**: VR = 1.0 means "average" volatility. Common breakout thresholds:
4.**Denominator protection**: When ATR ≈ 0 (nearly flat market), the implementation returns 0 rather than causing division errors.
5.**Scale is relative**: VR = 2.0 always means "twice normal volatility" regardless of the underlying instrument's absolute price or typical ATR value.
6.**Period selection**: Shorter periods (7-10) make ATR more responsive, causing VR to spike less dramatically. Longer periods (20-30) create a more stable baseline, making VR spikes more pronounced.
## Trading Applications
### Breakout Detection
The primary use case—identify unusual volatility expansion: