# Volatility Percentile/rank

Also known as: HV rank, ATR percentile.
A Volatility concept (Volatility estimators) in the LuxAlgo Library, with 1 indicator implementation.

## What is Volatility Percentile/Rank?

Volatility percentile/rank normalizes a volatility measure against its own history. Take any gauge, such as [ATR](https://www.luxalgo.com/library/concept/atr/) or close-to-close [realized volatility](https://www.luxalgo.com/library/concept/realized-volatility/), and ask where the current reading sits within a lookback window. The percentile version reports the share of past readings at or below today's; the rank version scales today's reading between the window's minimum and maximum. Both compress raw volatility onto a 0 to 100 scale that means the same thing on any symbol and any timeframe.

The construction is borrowed from the options world, where IV rank and IV percentile normalize implied volatility over the trailing year, and it is applied to realized measures for the same reason: a 2% daily range is sleepy for one instrument and violent for another, so absolute numbers do not travel. Low percentiles flag compression, which often precedes expansion but does not schedule it; high percentiles flag stress that has tended historically to subside, though it can persist.

The customary window of roughly 252 trading days, about one year, is inherited from IV rank practice, though any lookback works if applied consistently. The treatment fits whatever sits underneath: ATR gives an ATR percentile, historical volatility gives HV rank, and Bollinger [BandWidth](https://www.luxalgo.com/library/concept/bandwidth/) run through a percentile becomes a squeeze detector in its own right.

The transform earns its place because volatility cycles. Quiet and active phases alternate, as the [ATR expansion/contraction](https://www.luxalgo.com/library/concept/atr-expansion-contraction/) cycle describes, and percentile framing says which phase the market is in relative to its own norm. That is the statistical backbone under discretionary compression setups: a [Volatility Contraction Pattern](https://www.luxalgo.com/library/concept/volatility-contraction-pattern/) or a [Bollinger Squeeze](https://www.luxalgo.com/library/concept/bollinger-squeeze/) is, in percentile terms, a market printing readings near the bottom of its historical range. What the percentile never supplies is direction; it locates conditions, not outcomes.

## How to calculate volatility percentile and rank

Both statistics start from a volatility series and a lookback window.

1. Pick the base gauge: ATR, close-to-close historical volatility, or a band-width measure, computed the same way on every bar.
2. Pick the window: 252 daily bars (about one year) is conventional; shorter windows adapt faster but swing harder.
3. Percentile: count how many readings in the window are at or below the current one, divide by the window size, and scale to 100.
4. Rank: compute (current - minimum) / (maximum - minimum) × 100 across the same window.
5. Plot the result on a fixed 0 to 100 scale with reference lines where your rules act, commonly near the extremes.

## How it's calculated

Locates the current level of a volatility measure inside its own trailing distribution, from 0 (quietest) to 100 (most volatile).

```
r_t = ln(C_t / C_{t-1})
HV_t = SD_n(r) × sqrt(252) × 100
V_t = the chosen volatility series (HV_t, or ATR_n, or 100 × ATR_n / C_t)
Percentile_t = 100 × (number of bars i within the last N bars where V_i <= V_t) / N
Rank_t = 100 × (V_t - min(V over the last N bars)) / (max(V over the last N bars) - min(V over the last N bars))

  C: close price
  t: current bar index
  ln(): natural logarithm
  SD_n(x): standard deviation of x over n bars
  n: lookback for the volatility measure (commonly 14 to 30)
  252: annualization factor, trading days per year (365 is common for crypto)
  ATR_n: average true range over n bars (commonly 14)
  N: ranking window (commonly 252, about one year of daily bars)
  i: bar index inside the ranking window
```

Percentile counts how much of the window sits at or below the current value; rank uses only the window extremes, so a single spike depresses rank for as long as it stays in the window.

The same two formulas applied to implied volatility give IV rank and IV percentile.

Normalizing ATR by price (ATR / C) makes the ranking comparable across price levels.

## How traders use it

- As a strategy gate: breakout systems often require a low volatility percentile (compression) before arming entries, while mean-reversion systems may trade only when the percentile is elevated, matching each edge to the regime it was built for.
- As a screener: because the scale is normalized, percentiles can be compared across an entire watchlist to surface the most compressed or most stressed markets at a glance.
- As a sizing input: volatility-targeted sizing and stop-width rules read normalized volatility to scale positions down when a market runs hot and up when it is quiet.
- As squeeze confluence: a low percentile agreeing with an indicator condition such as the [TTM Squeeze](https://www.luxalgo.com/library/concept/ttm-squeeze/), Bollinger Bands inside [Keltner Channels](https://www.luxalgo.com/library/concept/keltner-channels/), delivers the same message from two independent constructions.
- For research: bucketing backtest results by percentile at entry shows which regimes a strategy actually earns in, often revealing an edge that lives almost entirely in one end of the volatility distribution.

## Volatility percentile vs neighboring tools

- **BandWidth** (https://www.luxalgo.com/library/concept/bandwidth/): BandWidth reports the width of the Bollinger Bands normalized by the middle band, yet what counts as wide or narrow still differs across symbols and regimes. Percentile-ranking that width, or any other gauge, is exactly what this concept adds: location within history rather than a raw value.
- **TTM Squeeze** (https://www.luxalgo.com/library/concept/ttm-squeeze/): The squeeze is binary: compression is on when Bollinger Bands sit inside Keltner Channels and off otherwise. A percentile is continuous, grading compression and stress on one 0 to 100 scale rather than flagging a single condition.
- **ATR Expansion/contraction** (https://www.luxalgo.com/library/concept/atr-expansion-contraction/): Expansion/contraction reads the direction of volatility, rising or falling right now. Percentile reads position, high or low versus history. A market can be expanding off the 5th percentile or contracting from the 95th, and the two reads together say more than either alone.
- **Realized Volatility** (https://www.luxalgo.com/library/concept/realized-volatility/): Realized volatility is the raw input, quoted in annualized percent and hard to compare across very different instruments. The percentile transform is what makes it screenable across a mixed watchlist.

## FAQ

### What is the difference between volatility rank and volatility percentile?

Rank scales the current reading between the lookback's minimum and maximum, so a single extreme spike stretches the scale and depresses every later rank until it leaves the window. Percentile counts the share of readings at or below today's, so one outlier shifts it by only one observation. Percentile is generally the more robust of the two.

### Does a low volatility percentile mean a breakout is coming?

It means conditions are compressed relative to that market's own recent history, and compression often precedes expansion because volatility tends to cycle between quiet and active phases. It does not say when the expansion starts or which way it resolves. Most traders treat a low percentile as a condition filter that arms other setups, not as a signal on its own.

### What lookback should a volatility percentile use?

One year, about 252 daily bars, is the convention carried over from options-market IV rank. Shorter windows track the recent regime but reclassify readings quickly; longer windows are steadier but slow to admit a regime change. Consistency across your process matters more than the number.

### What counts as a low or high volatility percentile?

Common practice treats readings near the bottom of the scale, often below 20, as compressed, and readings near the top, above 80, as stressed. Those lines are conventions rather than properties of markets, so the honest approach is to calibrate them to the strategy by checking how the setup behaves across percentile buckets.

### Is IV rank the same as historical volatility percentile?

The math is the same; the input differs. IV rank normalizes option-implied volatility, which is forward-looking by construction, while HV percentile normalizes realized movement that already happened. The two can disagree meaningfully, and some traders track the gap itself as information about how richly options are pricing future movement.

### Can I compare volatility percentiles across different markets?

That is the main point of the transform: each symbol is scored against its own history, so a 90th percentile makes the same kind of statement everywhere. Keep the gauge, window, and timeframe consistent across the comparison, because an ATR percentile built on daily bars is not interchangeable with one built from intraday data.

## Implementations in the Library

- Hot Zone Radar (LuxAlgo): https://www.luxalgo.com/library/indicator/hot-zone-radar/

## Related concepts

- Volatility Estimators: https://www.luxalgo.com/library/concept/volatility-estimators/
- Close-to-close Historical Volatility: https://www.luxalgo.com/library/concept/close-to-close-historical-volatility/
- EWMA Volatility: https://www.luxalgo.com/library/concept/ewma-volatility/
- Parkinson Estimator: https://www.luxalgo.com/library/concept/parkinson-estimator/
- Garman-Klass Estimator: https://www.luxalgo.com/library/concept/garman-klass-estimator/
- Rogers-Satchell Estimator: https://www.luxalgo.com/library/concept/rogers-satchell-estimator/
- Yang-Zhang Estimator: https://www.luxalgo.com/library/concept/yang-zhang-estimator/
- Garman-Klass–Yang-Zhang Hybrid: https://www.luxalgo.com/library/concept/garman-klass-yang-zhang-hybrid/
- Jump Detection: https://www.luxalgo.com/library/concept/jump-detection/
- Volatility Signature Plot: https://www.luxalgo.com/library/concept/volatility-signature-plot/

---

Source: https://www.luxalgo.com/library/concept/volatility-percentile-rank/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/