Crypto volatility regime filters classify a defined measure of recent price movement and use that classification to permit, restrict or pause a strategy. They do not predict direction or guarantee smaller losses. A useful filter specifies its data, baseline, decision time and state transitions, including what happens when inputs are missing and how trading becomes eligible again.
The practical question is narrower than “Is the market volatile?” It is “What may this strategy do under this measured condition?” A label such as high volatility is incomplete until it changes a specific permission. This guide builds an illustrative entry gate with separate pause and resume thresholds, then tests the boundary cases that a colored chart can hide.
Give the measurement one job
Average True Range, or ATR, summarizes true ranges over a chosen period. True range takes the largest of the current high minus low, the absolute high minus previous close, and the absolute low minus previous close. TradingView documents that calculation and its default RMA smoothing; other smoothing settings change the series. ATR measures movement rather than bullish or bearish direction. TradingView's ATR calculation guide.
For this worksheet, define normalized ATR as 100 × ATR ÷ completed close. If an invented instrument closes at 100 quote units and its ATR is 0.84 quote units, normalized ATR is 0.84%. This removes the immediate price-unit scale; it does not make different instruments' execution risks interchangeable.
A return-based volatility estimate would answer a different measurement question. Do not silently substitute it for ATR while retaining thresholds calibrated on ATR. A Bollinger Bands squeeze uses band compression and its own historical comparison, so its thresholds also require a separate specification. Likewise, volatility is separate from trend: a strong decline, strong rally and wide sideways oscillation can all produce large ranges. A direction rule needs its own definition.
The filter here controls eligibility for new entries. The ATR position-sizing ledger addresses the separate question of how many units a permitted entry may hold. Protective orders and exits also remain separately specified. Pausing entries must not accidentally suppress an existing position's protective action.
Freeze the baseline and the percentile convention
A percentile rank describes a value relative to a reference sample. It is not a forecast probability. A rank of 90 does not mean a 90% chance of a large future move or loss.
Define this article's rank as 100 × count(reference values ≤ current value) ÷ reference count. Ties count in full. Other percentile implementations interpolate or handle ties differently, so naming the statistic matters.
There are two distinct baseline designs. A fixed calibration baseline stays frozen through an evaluation block. A rolling baseline updates from the preceding observations at every decision. Both can be causal; they test different procedures. For a rolling version, exclude the current observation from its reference sample and specify the exact window length. Never rank an earlier candle using values from the end of the dataset.
The look-ahead bias guide explains how to check that earlier decisions stay unchanged when later data is appended. The reference window and its availability timestamps belong in that audit.
A two-threshold gate you can reconstruct
Everything in this example is hypothetical. The ten normalized ATR reference observations are 0.40%, 0.45%, 0.50%, 0.55%, 0.60%, 0.65%, 0.70%, 0.75%, 0.80% and 0.90%. They form a fixed calibration sample for all four evaluation rows below. The supplied normalized ATR values are inputs; this example does not reconstruct their underlying candles or ATR warm-up.
Start in an eligible state. Pause new entries when rank reaches or exceeds 80. Once paused, require two consecutive valid completed observations with rank at or below 60 to resume. Any intervening rank above 60 resets that recovery count. These thresholds and the small sample are teaching choices, with no claimed trading advantage.
| Evaluation observation | Normalized ATR | Reference values at or below it | Rank | State after observation |
|---|---|---|---|---|
| A | 0.84% | 9 of 10 | 90 | Paused; recovery count 0 |
| B | 0.72% | 7 of 10 | 70 | Paused; recovery count 0 |
| C | 0.68% | 6 of 10 | 60 | Paused; recovery count 1 |
| D | 0.63% | 5 of 10 | 50 | Eligible; recovery count 2 |
At A, nine reference values are no greater than 0.84%, so the rank is 100 × 9 ÷ 10 = 90. B remains paused even though it is below the pause threshold. C qualifies as the first recovery observation, while D supplies the second.
The separation between pause and resume thresholds is hysteresis: the state depends on its previous state as well as the current measurement. It avoids immediate re-entry solely because a value slipped just below 80. Requiring two observations adds further delay. Neither design choice proves better returns; both can miss opportunities or allow exposure before a later shock.
Treat unknown as a separate state
A missing candle is not a zero-volatility candle. Nor is an old, repeated reading a fresh recovery observation. In this example's policy, a missing or invalid input blocks new entries, resets the recovery count and records the state as unknown. Recovery requires restored data continuity, sufficient indicator and baseline history, then two new qualifying completed observations. A single low reading after a gap does not reopen the gate.
Specify how completion is established for the actual feed. Binance's spot kline WebSocket schema, for example, provides an x Boolean identifying whether that kline is closed. That is evidence about this specific feed, not every venue or instrument. Binance spot kline stream fields.
Partial bars can change the measurement before they close. TradingView documents how unconfirmed values differ from confirmed historical values, and how waiting for confirmation delays a signal. TradingView's repainting documentation. Match the live and historical decision boundary rather than assigning the completed value to an earlier intrabar decision.
A closed candle still needs a freshness and continuity check. The market-data freshness worksheet separates event, receipt and decision times. Count each eligible candle once, and preserve a reason when it cannot be used.
A lower rank can conceal the same absolute risk
Now replace the calibration sample with ten hypothetical values: 0.80%, 0.90%, 1.00%, 1.10%, 1.20%, 1.30%, 1.40%, 1.50%, 1.60% and 1.70%. The same current 0.84% reading ranks at 10 because only one reference value is at or below it.
Nothing about the current reading changed. Its comparison population did. In a rolling implementation, sustained turbulence can enter the baseline and make a still-large absolute range appear ordinary. Save both the normalized ATR and rank; the label alone loses this distinction.
An additional absolute ceiling is a possible research hypothesis, but it creates another parameter and another failure boundary. Test it as part of the whole procedure rather than adding it after seeing an inconvenient loss. A percentile cannot establish current spread or available depth either; consult the separate slippage and order-book depth worksheet when modeling execution.
Test the permission change, including what it leaves open
Compare the strategy with and without the filter using the same dates, capital assumptions, exits and cost model. Report exposure time, accepted and blocked signals, trade count, turnover, losses and unresolved positions. Lower drawdown alongside much less exposure is a finding to explain, not sufficient evidence of improved selection.
Retain the entry signals that were blocked so you can inspect the gate's effect. Do not assume that blocking a new signal cancels an order already accepted by an exchange. Define outstanding-entry handling and open-position management separately, then test those transitions.
Freeze every tested choice: volatility measure, smoothing, normalization, baseline, tie rule, thresholds, recovery count and unknown-data policy. Each alternative tried belongs in the research record. Use a later evaluation period that did not choose those settings; the walk-forward testing guide explains how to freeze and advance the procedure.
For each decision, save the market, interval, finalized observation timestamp, measurement, baseline identity, rank, previous state, next state and permission result. This is an educational specification, not a claim that KLINEO implements this exact filter. It was prepared with AI assistance under the editorial policy; no historical market performance or live order behavior was tested.
