Average True Range (ATR): The Volatility Ruler Every Futures Trader Needs
Overview #
Average True Range (ATR) measures volatility — nothing more, nothing less. It doesn't tell you direction. It doesn't signal entries. What it does is answer the single most practical question in futures trading: how much is this thing moving right now?
That answer drives everything downstream. Your stop distance. Your position size. Whether you should even be trading a particular market today. ATR is the volatility ruler that normalizes your risk management across any instrument, any timeframe, any market condition.
J. Welles Wilder introduced ATR in his 1978 book New Concepts in Technical Trading Systems — the same book that gave us RSI and the Parabolic SAR. While those indicators get more attention, ATR might be the most practically useful tool Wilder ever created.
As @Fat Tails [explained in a complete NexusFi breakdown of ATR applications] [1]: ATR serves four core functions — measuring volatility, calculating stop losses, building chandelier exits, and constructing simple trailing stops.
That's the right way to think about ATR. It's infrastructure, not signal.
Key Concepts #
True Range #
Before you can calculate ATR, you need True Range (TR). For any single bar, True Range is the greatest of these three values:
- Current High minus Current Low — the bar's visible range
- Absolute value of Current High minus Previous Close — catches gap-up scenarios
- Absolute value of Current Low minus Previous Close — catches gap-down scenarios
Why not just use the bar's range? Because gaps matter. If ES closes at 5600.00 and gaps up to open at 5615.00 with a high of 5620.00 and a low of 5610.00, the bar's visible range is only 10 points. But the True Range is 20 points (5620.00 - 5600.00), capturing the full extent of the move from where traders were actually positioned.
In futures markets — especially overnight sessions where gaps are common between RTH sessions — True Range gives you the honest picture of how far price actually traveled.
ATR Calculation #
ATR smooths the True Range over N periods. Wilder's original formula uses a specific smoothing method:
ATR(N) = ((Previous ATR × (N - 1)) + Current TR) / N
This is equivalent to an Exponential Moving Average with a smoothing factor of 1/N. The key difference from a Simple Moving Average: Wilder's smoothing gives more weight to recent values while decaying older values slowly. The result is a smoother, more stable reading that doesn't whipsaw on every anomalous bar.
For the initial calculation (day 1), ATR is simply the average True Range of the first N bars.
Period Selection #
The default ATR period is 14 — Wilder's original recommendation. But futures traders use different periods for different purposes:
- ATR(14) — Standard. Works well for daily charts and swing trading timeframes. Smooths roughly two weeks of data.
- ATR(5-7) — More responsive. Better for intraday traders who need ATR to reflect recent session behavior, not last month's volatility regime.
- ATR(20-36) — Smoother, slower to react. Useful for position sizing models where you don't want your size changing on every volatile day. @Fat Tails [described using ATR(36) on a 5-minute chart] [4] for weekly position sizing calculations, measuring the minimum and maximum ATR values found during RTH sessions.
The period you choose depends on what you're using ATR for. Stop placement? Shorter periods (5-14) so your stop adapts to current conditions. Position sizing? Longer periods (14-36) so your size doesn't oscillate with every news spike.
How It Works #
ATR is a pure volatility measure expressed in the instrument's native units — points for ES, ticks for ZN, dollars per barrel for CL. When ATR(14) on the ES daily chart reads 45 points, that means the average daily True Range over the past 14 sessions has been 45 points. When it reads 20 points, the market is quiet.
The key insight is that ATR adapts automatically. You don't need to recalibrate your risk parameters when volatility changes — ATR does it for you. A 2×ATR stop on a quiet day is narrow. The same 2×ATR stop on a volatile day is wide. Your exposure in dollar terms stays proportional to what the market is actually doing.
This is the fundamental advantage over fixed-point stops. A 10-point stop on ES might be reasonable when ATR is 30 points, but suicidal when ATR is 80 points. ATR-based stops breathe with the market.
Reading ATR Values #
ATR tells you the magnitude of volatility, not the direction. A rising ATR means volatility is expanding — whether price is going up or down. A declining ATR means volatility is contracting.
Practical interpretation:
- ATR rising sharply — Market is moving. Trend days, news events, breakouts. Wider stops needed. Potentially reduce position size to maintain constant dollar risk.
- ATR at low levels and flattening — Market is consolidating. Range-bound conditions. Tighter stops may work. Breakout traders start watching for the squeeze to release.
- ATR declining from a spike — Volatility returning to normal. The move that caused the spike is being digested. Adjust risk parameters back toward baseline.
ATR-Based Stop Placement #
This is where ATR earns its keep in a futures trader's toolbox. There are three primary ATR stop methods, and each solves a different problem.
The Chandelier Exit #
The chandelier stop — popularized by Charles LeBeau — hangs from the highest high (for longs) or lowest low (for shorts) by a multiple of ATR. As @Fat Tails [detailed in the NexusFi thread on calculating stops via ATR] [2]: "The chandelier stop — also known as chandelier exit — is a classic. It was used by Charles LeBeau, one of the first system traders."
For a long position: Stop = Highest High (over N bars) - (Multiplier × ATR)
For a short position: Stop = Lowest Low (over N bars) + (Multiplier × ATR)
The beauty of the chandelier: it ratchets with the trend. As price makes new highs, the stop moves up. It never moves down. This creates a trailing mechanism that gives the trade room to breathe while protecting accumulated profit.
ATR Trailing Stop #
Simpler than the chandelier, the ATR trailing stop subtracts a multiple of ATR directly from the current close (for longs):
Stop = Current Close - (Multiplier × ATR)
As @Fat Tails [explained when breaking down SuperTrend logic] [3]: "ATR Trailing Stop: A multiple of the ATR is deducted from the current close." The critical difference from the chandelier: this one tracks the close, not the highest high. It's more responsive but also more easily triggered by normal retracements.
Choosing Your Multiplier #
The multiplier determines how much room you give the trade. This is the critical decision:
- 1.0× ATR — Tight. You'll get stopped out by normal noise frequently. Only works for scalps where you want a fast exit.
- 1.5× ATR — Moderate. Filters most intrabar noise but gets tested on any meaningful pullback.
- 2.0× ATR — Standard. The most common multiplier. Gives the trade room through normal retracements while protecting against adverse moves. The Turtle Traders used 2× ATR.
- 3.0× ATR — Wide. Swing trading territory. You're giving back significant open profit to stay in the trade through deeper pullbacks.
As @grausch [pointed out on NexusFi] [6]: "The reason you would use a multiple of ATR to determine a stop-loss is so that your stops automatically adjust to current volatility levels."
That automatic adjustment is the whole point. A 2× ATR stop on ES when ATR(14) is 25 points gives you a 50-point stop. When ATR(14) expands to 50 points, the same 2× ATR stop becomes 100 points. Your stop breathes with the market.
ATR for Position Sizing #
ATR's second killer application: normalizing position size across instruments with wildly different point values and volatility levels.
The formula is straightforward:
Contracts = Dollar Risk Per Trade / (ATR × Multiplier × Point Value)
Suppose you're willing to risk $500 per trade and using 2× ATR stops:
- ES: ATR(14) = 40 points, point value = $50. Stop = 80 points = $4,000. Contracts = $500 / $4,000 = 0.125 → trade MES instead (micro = $5/point, stop = $400, ~1 contract).
- CL: ATR(14) = 1.50 points, point value = $1,000. Stop = 3.0 points = $3,000. Contracts = $500 / $3,000 = 0.17 → trade MCL (micro = $100/point, stop = $300, ~1-2 contracts).
- NQ: ATR(14) = 200 points, point value = $20. Stop = 400 points = $8,000. Contracts = $500 / $8,000 = 0.06 → trade MNQ (micro = $2/point, stop = $800, ~1 contract).
As @Fat Tails [demonstrated in the NexusFi PositionSizer thread] [4], adapting position size to volatility, exchange rate, and risk allowance is a systematic weekly process. The key is normalizing dollar volatility so every trade carries approximately the same risk regardless of what you're trading.
@Fadi [illustrated this concretely] [8]: "Looking at the 60min chart, the ATR(14) is around 5 points. I personally let my stop distance be around 2x ATR, so 10 points in this example, which translates to 500$."
This is how ATR turns abstract risk management into a mechanical process. No guessing. No "that feels about right." Just math.
ATR Across Instruments #
One of ATR's underappreciated uses is comparing volatility across instruments on a normalized basis. Raw ATR values are meaningless in isolation — 40 points on ES and 1.50 points on CL tell you nothing about relative volatility because the point values are completely different.
To normalize, multiply ATR by point value:
| Instrument | ATR(14) | Point Value | Dollar ATR |
|---|---|---|---|
| ES | 40 pts | $50 | $2,000 |
| NQ | 200 pts | $20 | $4,000 |
| CL | 1.50 pts | $1,000 | $1,500 |
| GC | 20 pts | $100 | $2,000 |
| ZN | 0.75 pts | $1,000 | $750 |
Dollar ATR tells you the actual dollar volatility per contract per day. NQ is the most volatile by this measure — not because its ATR number is biggest, but because its daily dollar range per contract is widest. ZN is the quietest.
As @grausch [noted on NexusFi] [7]: "The magic of ATR is that it allows us to normalise volatility across a wide range of instruments, for instance, I can position my ZN and my ES the same way."
This normalization is what makes ATR-based position sizing work across a diversified futures portfolio.
Keltner Channels and the Volatility Squeeze #
Keltner Channels are ATR's most well-known derivative indicator. They plot envelopes above and below a moving average (typically a 20-period EMA) at a distance of a multiplier times ATR:
- Upper Band = EMA(20) + (1.5 × ATR(10))
- Lower Band = EMA(20) - (1.5 × ATR(10))
On their own, Keltner Channels function as a volatility-adjusted trend envelope. Price consistently above the upper band indicates strong upside momentum. Price hugging the lower band signals persistent weakness.
But Keltner Channels become genuinely powerful when combined with Bollinger Bands in what's known as the Volatility Squeeze. As @Fat Tails [explained in his definitive NexusFi post on the squeeze mechanism] [5]: the squeeze is detected when Bollinger Bands contract inside the Keltner Channels.
The logic is elegant: Bollinger Bands measure standard-deviation-based volatility (directional movement), while Keltner Channels measure ATR-based volatility (total range including gaps). When the Bollinger Bands compress inside the Keltner Channels, it means directional volatility has collapsed relative to range volatility — the market is coiling.
As @Fat Tails [further clarified][11]: "When the Bollinger Bands are inside the Keltner Channel, this indicates a situation where the directional (longer term) volatility is low compared to the intra-bar volatility."
The squeeze doesn't predict direction — it predicts that a move is coming. When the bands expand back outside the channels, the breakout from the squeeze has fired.
When ATR Misleads #
ATR has real limitations, and ignoring them will cost you.
Limit moves and trading halts. When ES hits a circuit breaker and trading stops, the True Range for that bar is artificially capped. ATR will understate the actual volatility of the move. In extreme events (March 2020, for instance), ATR couldn't keep up with the true extent of daily ranges because some bars simply couldn't trade to their natural extremes.
Gap-heavy instruments. In markets with frequent gaps (thin overnight sessions, agricultural futures around reports), ATR can spike dramatically on gap bars even if intraday ranges are normal. A single USDA report gap in corn can distort ATR(14) for two weeks.
Regime transitions. ATR is backward-looking by definition. When volatility shifts abruptly — a central bank announcement, a geopolitical shock — ATR takes N bars to catch up. Your first trade in the new regime will be sized for the old one.
Low ATR doesn't mean low risk. A market with declining ATR could be building a consolidation pattern that breaks explosively. ATR tells you what the market HAS been doing, not what it's ABOUT to do.
The fix for most of these issues: use shorter ATR periods when you need responsiveness, and don't treat ATR as a predictive tool. It measures the present (well, the recent past). Pair it with context.
Practical Application #
Here's a complete ATR-based trade management framework for ES futures:
Setup: You identify a long entry at 5600.00 based on your edge. ATR(14) on the 5-minute chart reads 4.50 points.
Stop placement: Using a 2× ATR multiplier: Stop = 5600.00 - (2 × 4.50) = 5600.00 - 9.00 = 5591.00. That's 36 ticks, or $450 per ES contract.
Position sizing: Your account is $100,000 and you risk 1% per trade = $1,000. Contracts = $1,000 / $450 = 2.2 → trade 2 contracts. Risk = 2 × $450 = $900 (0.9% of account).
Trailing stop (Chandelier): As the trade moves in your favor, track the highest high. When ES hits 5620.00, your chandelier stop moves to: 5620.00 - (2 × 4.50) = 5611.00. You've locked in 11 points of profit per contract.
Target (optional ATR-based): Some traders use ATR to set profit targets — 3× ATR from entry = 5600.00 + 13.50 = 5613.50. This gives a 1.5:1 reward-to-risk ratio.
As @bobwest [described on NexusFi] [9], the practical approach is setting stops "based on a somewhat low multiple of ATR, and get out semi-mechanically, keeping the stop just a little farther from price than the strict ATR."
That's the art within the math — ATR gives you the framework, but experienced traders adjust at the margins based on their read of market structure.
Knowledge Map
Go Deeper
Build on this knowledgeReferences This Article
Articles that build on this topicCitations
- — AVERAGE TRUE RANGE (2013) 👍 14“Use a chandelier stop, use a simple trailing stop based on ATR, determine the position size from current volatility.”
- — Calculating Stop and Profit Target via ATR (2012) 👍 17“The chandelier stop is a classic. It was used by Charles LeBeau.”
- — Logic that creates the SuperTrend Indicator (2019) 👍 8“ATR Trailing Stop: A multiple of ATR is deducted from the current close.”
- — PositionSizer for ninjatrader (2010) 👍 12“Measure ATR(36) on a 5 min chart during RTH.”
- — How does RSqueeze work? (2012) 👍 44“Squeeze is on when Bollinger Bands are inside Keltner Bands.”
- — ATR for Stop Loss (2016) 👍 1“Stops automatically adjust to current volatility levels.”
- — Dynamic Trailing Stop and Profit using ATR (2015) 👍 4“ATR normalises volatility across instruments.”
- — Optimum account size (2013) 👍 4“Stop distance around 2x ATR, 10 points, 500 dollars.”
- — Taking loss cutting losers managing positions HOW? (2021) 👍 7“Low multiple of ATR, stop a little farther than strict ATR.”
- — What are "points"? (2011) 👍 2“ES: ATR 1.9, stop 2.75 points, position size 3 contracts.”
- — A method to tie R:R directly to volatility. (2014) 👍 10
