The Gaussian Channel, Drawn Out
The Gaussian channel has the most involved calculation in the Academy, but a simple goal: a smooth basis that lags less than an average of the same length.
The tool is an Ehlers multi-pole recursive filter. Where a moving average looks back at prices, this looks back at several of its own previous outputs.
1. A filtered basis and filtered bands
The basis is the filter applied to hlc3 — the average of each bar's high, low and close. The band width is the same filter applied to true range.
So the whole channel is one filter, run over two different inputs.
An Ehlers 4-pole recursive filter over hlc3 at period 50, with the same filter applied to true range for the band width.
- Price (close)
- Filtered basis
- Bands — ±1.414 filtered range
09/05 — both the middle line and the band width come from the same filter, applied to different inputs.
BTC/USDT · 4h · Binance · 2026-08-03 → 2026-09-05
2. Less lag at the same length
This is the filter's reason for existing. Put it beside a simple average of the same period and it turns sooner at reversals.
Changing the number of poles lets you feel the trade between smoothness and responsiveness directly.
The filtered basis against a plain 50-period average of the same closes.
- Price (close)
- Gaussian, 4 poles
- SMA 50
At 4 poles the filter is smoother and slower; at fewer it tracks price more closely and passes more noise. Poles also set the warm-up, so the line starts later as you raise them.
BTC/USDT · 4h · Binance · 2026-08-03 → 2026-09-05
3. These bands aren't trying to contain price
Here's where people misread it. Coming from Bollinger, price leaving the band reads as a notable event. On a Gaussian channel it's routine.
They're narrow by design, so price spends a lot of time outside them.
- Price (close)
- Bands — ±1.414 filtered range
- Channel width (% of basis)
About 46% of closes finished outside this channel, against 17% for Bollinger on the same bars, with an average width of 3.2%. That isn't a misconfiguration — a narrow filtered band is meant to track the middle of the move, not to mark an extreme. Reading an exit here the way you'd read a Bollinger band exit would mean reacting almost constantly.
BTC/USDT · 4h · Binance · 2026-08-03 → 2026-09-05
Narrow bands aren't a misconfiguration, they're the design. This channel is trying to trace the middle of the move smoothly, and the bands are a thin allowance around that — not a marker of extremes.
4. Settings and warm-up
Because the filter feeds on its own previous output, it has nothing to reference when it starts. The Simulator's implementation hides that opening stretch entirely — a chart reader discounts a startup transient automatically, but a backtest would happily trade on it.
Note where the line starts as you change the period — this filter hides more warm-up than most.
- Price (close)
- Bands — ±1.41 filtered range
At period 50 the first plotted value lands at bar 50. The filter needs its own prior output as input, so it withholds more early bars than a moving average does.
BTC/USDT · 4h · Binance · 2026-08-03 → 2026-09-05
5. All four side by side
The same price data under each of the four channels in these lessons.
- Price (close)
- Keltner
Keltner: 16.6% of closes outside, average width 4.3%, ranging 1.5% to 9.0%. Four answers to one question — how far from the middle is far — and they disagree because they measure different things.
BTC/USDT · 4h · Binance · 2026-08-03 → 2026-09-05
6. In the Simulator
The Gaussian channel appears as both a template and a filter. Its default period is 50 — deliberately faster than the original indicator's own much slower default, to stay in line with the app's other channel templates.
- Gaussian Channel — enters on a close above the upper band and exits when price falls back below the filtered basis.
- Gaussian Channel breakout filter — an optional gate on another strategy's entries.