ATR and NATR: measuring how much a market moves
Average True Range tells you how far a market usually travels. Normalized ATR lets you compare that across markets, prices and years. A long guide to both, and to the mistakes people make with them.
Almost every rule in a mechanical system needs a sense of scale. How far is a normal move? How wide should a stop be? Is today quiet or wild? You can answer those with fixed numbers, like a 20-point stop, but a fixed number means something different every month. Volatility changes, and a rule that ignores it is quietly changing its own behaviour all the time.
ATR is the simplest honest answer to "how much does this market move right now". NATR is the same answer, made comparable. This article goes through both slowly: how they are built, what they are good for, and where they mislead.
Start with the true range
The obvious way to measure a bar is high minus low. The problem is gaps. If a market closes at 100 and opens the next day at 104, then trades between 104 and 105, high minus low says the day moved 1 point. Anyone who held through it knows it moved 5. The true range fixes that by measuring from the previous close when that is further away:
TR(t) = max( High(t) − Low(t), |High(t) − Close(t−1)|, |Low(t) − Close(t−1)| )For a continuous market with no gaps, TR and high minus low are nearly the same. For futures across sessions, for daily bars, and for anything that trades with breaks, the difference matters.
Average it the right way
ATR is an average of TR. The original version, from J. Welles Wilder, uses his own smoothing, which is an exponential average with a slow weight of 1/n:
ATR(t) = ATR(t−1) + ( TR(t) − ATR(t−1) ) / nWith n = 14, each new bar moves the ATR by one fourteenth of the gap between the new range and the old average. That makes ATR smooth and slow. It reacts to a volatility shock, but over days, not in one bar. Some platforms use a simple average of the last n ranges instead, and some use a standard EMA with weight 2/(n+1). They are close, not identical, so when you compare numbers between tools, check which one is used.
What ATR is good for
- Stops that breathe. A stop of 1.5 ATR is tight in a quiet market and wider in a wild one, so the stop keeps the same meaning: "a move this unusual says I am wrong".
- Position size. If you risk a fixed amount per trade and your stop is k × ATR, the size is risk ÷ (k × ATR × value per point). Size falls when volatility rises, and your dollar risk stays the same.
- Targets and filters. "Only trade when today's range is below 1.2 ATR" or "take profit at 2 ATR" are rules that adapt to the market instead of fighting it.
- Regime detection. Comparing a short ATR to a long one (say 5 against 50) tells you if volatility is expanding or contracting.
A fixed stop means something different every month. A stop in ATRs keeps its meaning.
The problem with ATR: it is in price units
ATR on NQ is in index points. ATR on EUR/USD is in fractions of a cent. Neither number means anything next to the other. Even inside one market, ATR is not comparable over time: an ATR of 100 points meant a wild day when NQ traded at 5,000 and a quiet one at 20,000. Price level changes the number even when the behaviour does not.
That is what normalization solves. Normalized ATR expresses the average true range as a percentage of price:
NATR(t) = 100 × ATR(t) / Close(t)For example, with made-up round numbers: if NQ is at 20,000 with a daily ATR of 300 points, its NATR is 1.5%. If EUR/USD is at 1.1000 with a daily ATR of 0.0070, its NATR is about 0.64%. Now the two numbers are comparable: on that day, NQ moves a little more than twice as much as EUR/USD, relative to its price.
Where NATR earns its place
- Comparing markets. One rule set, many instruments: thresholds in NATR mean the same thing on NQ, gold or EUR/USD.
- Comparing years. A volatility filter built in 2018 still means the same thing in 2026, even though the price tripled.
- Ranking regimes. Where does today's NATR sit among the last year of values? A percentile rank of NATR is one of the cleanest ways to say "this is a high-volatility day" without choosing an arbitrary number.
- Portfolio balance. If you trade several markets, NATR helps size them so that each contributes a similar amount of movement, instead of letting the most volatile one dominate.
Mistakes I see all the time
- Mixing sessions. ATR from 24-hour futures data and ATR from day-session data are different numbers. Build and trade on the same definition.
- Forgetting the lag. ATR is an average. On the first day of a volatility shock, it still describes last week. Rules that need to react fast need a shorter n, or a different tool.
- Using the current bar. If your rule uses the ATR of the bar that is still forming, your backtest knows something your live system does not. Use the last completed bar.
- Normalizing by the wrong thing. NATR divides by price, which is right for comparing moves. It is not a measure of risk in money; position sizing still needs ATR in price units times the point value.
- Treating 14 as a law. Fourteen is a tradition, not a discovery. Test the lookback like any other parameter, and look for a plateau of values that work, not one magic number.
How I would start testing it
Take one rule you already have with a fixed stop. Replace the stop with k × ATR, test a range of k, and look at three things: does the win rate become more stable across years, does the worst drawdown shrink, and does performance hold across a range of k instead of a single best value. Then do the same with a NATR filter. Most of the time the improvement is not a higher return. It is a strategy that behaves the same way in different markets, and that is worth more.
Everything in the charts here is simulated to show the idea. Real data will be messier, which is exactly why every one of these choices should go through a backtest before it goes anywhere near a live account.
— Alon