Keltner Channels are volatility bands drawn a fixed multiple of Average True Range above and below an exponential moving average. The modern default is a 20 period EMA with bands set at two times ATR(10). Chester Keltner published the original idea as the Ten Day Moving Average Trading Rule in his 1960 book How to Make Money in Commodities, and Linda Bradford Raschke later rebuilt it around ATR, which is the version nearly every platform ships today.
The practical appeal is that the channel width has a unit you can reason about. Two ATR is a distance in dollars or ticks, the same distance you would use to place a stop, so the bands and your risk model speak the same language. That is not true of a standard deviation band, whose width depends on the shape of the return distribution over the window.
The modern formula
Three components, computed in order.
| Line | Formula | Common default |
|---|---|---|
| Middle | EMA of close over N periods | N = 20 |
| Upper | Middle + (multiplier x ATR) | multiplier = 2, ATR period = 10 |
| Lower | Middle minus (multiplier x ATR) | multiplier = 2, ATR period = 10 |
True Range for a bar is the largest of three values: the current high minus the current low, the absolute distance from the current high to the previous close, and the absolute distance from the current low to the previous close. The last two exist so that gaps are counted as real movement. ATR is then an average of those true ranges, usually with Wilder’s smoothing. If that part is unfamiliar, our guide to Average True Range for beginners covers it in detail.
A worked example
Start with three bars of true range so the gap logic is visible, then build the channel.
| Bar | Prev close | High | Low | High minus low | High to prev close | Low to prev close | True Range |
|---|---|---|---|---|---|---|---|
| 1 | 99.50 | 101.00 | 99.20 | 1.80 | 1.50 | 0.30 | 1.80 |
| 2 | 100.60 | 100.90 | 99.10 | 1.80 | 0.30 | 1.50 | 1.80 |
| 3 | 99.30 | 101.60 | 99.90 | 1.70 | 2.30 | 0.60 | 2.30 |
Bar 3 is the point of the exercise. Its high minus low is only 1.70, but it opened above the prior close, so measured from that close the real movement was 2.30. Ignore the gap and you understate volatility exactly when the market has become more volatile.
Now assume the 20 period EMA of close sits at 100.00 and ATR(10) works out to 1.80. The channel is:
| Multiplier | Band width | Upper | Lower | Typical use |
|---|---|---|---|---|
| 1.0 | 1.80 | 101.80 | 98.20 | Intraday scalping, frequent touches |
| 1.5 | 2.70 | 102.70 | 97.30 | Active swing trading |
| 2.0 | 3.60 | 103.60 | 96.40 | Platform default |
| 3.0 | 5.40 | 105.40 | 94.60 | Trailing stops on position trades |
import pandas as pd
def keltner(df, ema_len=20, atr_len=10, mult=2.0):
prev = df["close"].shift(1)
tr = pd.concat([df["high"] - df["low"],
(df["high"] - prev).abs(),
(df["low"] - prev).abs()], axis=1).max(axis=1)
atr = tr.ewm(alpha=1/atr_len, adjust=False).mean() # Wilder smoothing
mid = df["close"].ewm(span=ema_len, adjust=False).mean()
return mid, mid + mult * atr, mid - mult * atr
df["mid"], df["upper"], df["lower"] = keltner(df)The original version and why it changed
Keltner’s 1960 rule used a 10 period simple moving average of typical price as the center, with bands placed a 10 period simple average of the high minus low range above and below it. Using the same numbers, a center of 100.20 with an average range of 2.40 gives bands at 102.60 and 97.80.
Two things pushed the modern version away from that. First, the plain high minus low range ignores gaps, so overnight risk vanished from the calculation, which matters far more now than it did for the commodity pits of 1960. Second, an EMA center reacts faster than an SMA of the same length, so the channel tracks a developing trend instead of lagging behind it. Raschke’s substitution of ATR fixed the first problem and the EMA fixed the second.
Keltner Channels compared with Bollinger Bands
| Aspect | Keltner Channels | Bollinger Bands |
|---|---|---|
| Center line | EMA, usually 20 | SMA, usually 20 |
| Width driver | Average True Range | Standard deviation of closes |
| Gap handling | Included through true range | Only via the close series |
| Behavior in a quiet market | Narrows smoothly | Narrows sharply, the classic squeeze |
| Band touches in a trend | Price can ride the band for a long stretch | Similar, but the band expands faster and pulls away |
Because they respond to different inputs, the pair is often plotted together. When the Bollinger Bands contract entirely inside the Keltner Channel, standard deviation has fallen below the ATR based width, which is a compact way of saying volatility has compressed. That configuration is descriptive, not predictive. It tells you the market is quiet. It does not tell you which way the next expansion goes.
Breakout use versus mean reversion use
The same channel supports two opposite strategies, and picking the wrong one for the market you are in is the most common way traders lose money with it.
The breakout reading treats a close outside the upper band as evidence of a directional move worth joining, with the middle line as the trailing exit. It performs when volatility is expanding and price is trending, and it bleeds during ranges because most band pokes fail immediately.
The mean reversion reading treats a touch of the upper band as a stretched condition and fades it back toward the EMA. It performs in a range and gets run over in a trend, where price can hug the upper band for dozens of bars.
Neither works everywhere, so the useful question is not which one is right but how you decide which regime you are in. Slope of the middle line is the cheapest filter available: flat means treat the bands as boundaries, steep means treat them as confirmation. A trend state indicator such as MACD or the cloud structure in the Ichimoku system can do the same job more formally.
What the evidence supports
There is no published research establishing that a specific Keltner setting produces excess returns after costs, and you should distrust any article that quotes a win rate without naming a market, a period and a cost assumption.
The general picture from the academic literature is mixed and heavily qualified. Brock, Lakonishok and LeBaron found significance for simple moving average and breakout rules on the Dow in the Journal of Finance in 1992, but Sullivan, Timmermann and White re examined that rule universe with a data snooping correction in 1999 and found the edge did not persist afterward. Park and Irwin’s survey in the Journal of Economic Surveys counted 95 modern studies, 56 positive, 20 negative and 19 mixed, and warned that selective reporting inflates that ratio. Bands are best understood as a volatility measurement, which is well founded, rather than a signal generator, which is not.
Common problems and fixes
| Problem | Cause | Fix |
|---|---|---|
| Channel does not match another chart | Different ATR length or SMA versus EMA center | Compare all three settings, not just the multiplier. |
| Price rides the upper band for weeks | You are fading a trend | Add a slope filter on the middle line before taking mean reversion trades. |
| Bands barely move after a crash | Wilder smoothing is slow by design | Shorten the ATR period, or accept the lag as intentional stability. |
| Useless on very illiquid symbols | Wide spreads inflate every true range | Require a minimum average volume before charting the instrument at all. |
Frequently asked questions
What are the best Keltner Channel settings?
The 20 period EMA with 2 times ATR(10) is the platform default and a reasonable starting point on daily bars. Intraday traders often drop the multiplier to 1.0 or 1.5 so the bands are reached often enough to matter. Choose before testing rather than tuning until the past looks good.
Are Keltner Channels better than Bollinger Bands?
They answer slightly different questions. Keltner measures width in ATR, which includes gaps and aligns with stop placement. Bollinger measures width in standard deviations of closes, which reacts faster to clustered volatility. Many traders plot both and read the relationship between them rather than choosing one.
Can I use Keltner Channels for stop placement?
Yes, and this is arguably their strongest use. Because the band distance is a multiple of ATR, placing a stop at the opposite band gives you a volatility scaled exit that widens in fast markets and tightens in quiet ones. Size the position from that distance rather than the other way around.
Do Keltner Channels work on crypto?
The math works on any series with high, low and close data, and crypto trades continuously so there are few gaps to worry about. Volatility is much higher, so a multiplier of 2 will feel tight. Recalibrate the multiplier per instrument instead of copying an equities setting.
What does a Keltner squeeze mean?
It usually refers to Bollinger Bands contracting inside the Keltner Channel, which means close to close volatility has dropped below the ATR based width. It describes compression, nothing more. It gives no directional information, so pair it with structure or flow tools such as the Money Flow Index.
The bottom line
Keltner Channels give you a moving average with a volatility aware envelope measured in the same units as your stop. That is a genuinely useful frame for reading how far a market has traveled relative to its own recent range, and the calculation is simple enough to verify by hand.
What they do not give you is a decision rule. Band touches mean different things in trends and ranges, the multiplier is a preference rather than a constant, and no study establishes an edge for any particular configuration. Use them to measure, use something else to decide.
