# Ehlers SuperSmoother

Also known as: 2-pole/3-pole smoothers.
A Trend concept (Digital filters & smoothers) in the LuxAlgo Library, with 1 indicator implementation.

## What is the Ehlers SuperSmoother?

The SuperSmoother is a two-pole low-pass filter John Ehlers adapted from Butterworth filter design for market data. Like any smoother it keeps the slow components of price and rejects the fast ones, but it is specified in frequency terms: you choose a cutoff period (10 bars is a common default in Ehlers' work), and fluctuations with shorter wavelengths are strongly attenuated rather than merely dampened. Each output blends the average of the current and prior price with feedback from the previous two outputs, using three coefficients derived from exponential and cosine functions of the cutoff period.

Ehlers' case for it over a conventional [EMA](https://www.luxalgo.com/library/concept/ema/) or [SMA](https://www.luxalgo.com/library/concept/sma/) is attenuation per unit of lag: one recursive pole rolls off noise gently, two poles cut it much more sharply for similar delay, and averaging the two most recent prices at the input suppresses the shortest, alias-prone wavelengths sampled data can carry. A three-pole variant smooths harder for a little more lag. It appears standalone as a low-lag trend line and, at least as often, as the smoothing stage inside other studies.

The Butterworth heritage is the design's substance. Butterworth filters are prized in engineering for a maximally flat passband, the components you keep pass through with minimal distortion, and the square-root-of-two constants in the SuperSmoother's coefficients are that design's damping factor showing through. The two-bar input average addresses a separate, quieter problem Ehlers emphasizes: sampled bar data carries spurious energy near its sampling limit, the aliasing residue of everything that happened inside each bar, and averaging adjacent inputs notches out exactly that shortest wavelength before the recursive stages ever see it.

Within the Ehlers ecosystem the SuperSmoother is the default smoothing block: it is the low-pass half of the roofing filter, the conditioning stage before cycle measurement, and the noise-trimmer inside derived studies from deviation-scaled averages to smoothed oscillators, a role visible across the Library's ports. Deployment guidance follows from the frequency framing: set the cutoff to the shortest swing you actually trade, since everything faster is being declared noise, and prefer it over stacking conventional averages wherever an extra smoothing pass would otherwise stack extra lag, including inside a [higher-timeframe trend filter](https://www.luxalgo.com/library/concept/higher-timeframe-trend-filter/) where staleness is already the cost being managed.

## How to calculate the Ehlers SuperSmoother

The published two-pole recipe, stated in words:

1. Pick a cutoff period P in bars; cycles shorter than P are what the filter is designed to reject.
2. Compute the coefficients from P: a decay term a1 = e^(-√2·π/P), a second term b1 = 2 × a1 × cos(√2·π/P), then c2 = b1, c3 = -a1², and c1 = 1 - c2 - c3 so the coefficients sum to one.
3. Filter recursively: output = c1 × (price + previous price)/2 + c2 × previous output + c3 × output two bars back, seeding the first values with price.
4. Read it like a smooth moving average; it is causal, so plotted values do not change after they print.
5. For the three-pole variant, add a third feedback stage with coefficients derived the same way: sharper rejection above the cutoff, at the cost of a little more lag.

## How traders use it

- As a drop-in replacement for the smoothing inside oscillators: running an [RSI](https://www.luxalgo.com/library/concept/rsi/) or stochastic input (or output) through a SuperSmoother trims jitter with less added lag than lengthening a simple average.
- As the low-pass half of Ehlers' [roofing filter](https://www.luxalgo.com/library/concept/roofing-filter/), where a high-pass stage removes long-period drift and the SuperSmoother removes short-period noise, leaving a band of tradable cycle content.
- As a low-lag trend line in its own right: slope and price crossings read exactly like a moving average, which is how it shows up in smoothed-trend overlays.
- As preprocessing before measurement: smoothing a series before [dominant cycle measurement](https://www.luxalgo.com/library/concept/dominant-cycle-measurement/) or other estimators reduces the aliasing noise Ehlers argues contaminates raw bar data.
- As the smoothing block inside composites: deviation-scaled averages, smoothed momentum studies and filtered oscillators embed it wherever a conventional average would add more lag per unit of noise removed.

## SuperSmoother vs other smoothing filters

- **EMA** (https://www.luxalgo.com/library/concept/ema/): A single-pole recursion with a gentle roll-off, so short-wavelength noise leaks through. The SuperSmoother's two poles cut that noise far more sharply for comparable lag.
- **Gaussian Filter** (https://www.luxalgo.com/library/concept/gaussian-filter/): Another Ehlers-documented multi-pole low-pass, built by cascading poles toward a bell-shaped response. Comparable intent; the pole placement differs, and the Gaussian is usually offered at selectable pole counts.
- **Laguerre Filter** (https://www.luxalgo.com/library/concept/laguerre-filter/): Achieves heavy smoothing from very few terms by warping time with a damping factor instead of adding poles. A different architecture aimed at the same lag-versus-smoothness problem.

## FAQ

### What does the SuperSmoother's cutoff period mean?

It is the wavelength boundary, in bars, between what the filter passes and what it rejects. Price swings that take longer than the cutoff to complete come through largely intact; faster wiggles are heavily attenuated. Ehlers frequently uses 10 bars, but the setting simply declares which fluctuations count as noise, so it should match the shortest swing you care about.

### Does the Ehlers SuperSmoother repaint?

No. It is a causal recursive filter: each value is computed from current and past prices plus the two prior filter outputs, with no future data and no refitting of history. Once a bar's value prints it is final. The trade-off for that honesty is ordinary filter lag, which the two-pole design keeps small but cannot remove.

### What is the difference between the 2-pole and 3-pole SuperSmoother?

The pole count sets how steeply frequencies above the cutoff are attenuated. The three-pole version rejects noise more aggressively and produces a visibly smoother line, at the price of additional lag; the two-pole version is the common default because its lag-to-smoothness balance suits most chart work. Same design, one notch apart on the same trade-off.

### Why is the SuperSmoother based on a Butterworth filter?

Because the Butterworth design solves the right problem: it delivers a maximally flat passband, meaning the slow components you keep come through with minimal distortion, while attenuation above the cutoff arrives as steeply as the pole count allows. Ehlers adapted that engineering standard to bar data, and the square-root-of-two terms in the published coefficients are the classic Butterworth damping surfacing in charting code.

### Why does the filter average the two most recent prices first?

That input average is a deliberate notch at the shortest wavelength sampled data can represent, the two-bar alternation where aliasing concentrates. Ehlers' argument is that bar sampling folds unresolvable intrabar activity into spurious fast oscillations; killing the two-bar component before the recursive stages means the poles spend their rejection budget on real noise rather than sampling artifacts. It is a small term with an outsized effect on smoothness.

### How does the SuperSmoother compare with a longer SMA?

Matching a two-pole SuperSmoother's smoothness with a simple average requires a much longer window, and the longer window pays twice: more lag, and the rectangular window's ripple leaking short-wavelength noise the frequency-designed filter simply rejects. That is the general pattern, engineered roll-off beats brute-force window length, and it is why the SuperSmoother serves as the smoothing block inside so many derived studies rather than another average alongside them.

## Implementations in the Library

- Ehlers SuperSmoother (LuxAlgo): https://www.luxalgo.com/library/indicator/ehlers-supersmoother/

## Related concepts

- Gaussian Filter: https://www.luxalgo.com/library/concept/gaussian-filter/
- Butterworth Filter: https://www.luxalgo.com/library/concept/butterworth-filter/
- Chebyshev Filters: https://www.luxalgo.com/library/concept/chebyshev-filters/
- Elliptic Filter: https://www.luxalgo.com/library/concept/elliptic-filter/
- Bessel Filter: https://www.luxalgo.com/library/concept/bessel-filter/
- Ehlers Instantaneous Trendline: https://www.luxalgo.com/library/concept/ehlers-instantaneous-trendline/
- Ultimate Smoother: https://www.luxalgo.com/library/concept/ultimate-smoother/
- Swiss Army Knife Filter: https://www.luxalgo.com/library/concept/swiss-army-knife-filter/
- Windowed FIR Smoothing: https://www.luxalgo.com/library/concept/windowed-fir-smoothing/
- Laguerre Filter: https://www.luxalgo.com/library/concept/laguerre-filter/

---

Source: https://www.luxalgo.com/library/concept/ehlers-supersmoother/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/