# Chebyshev Filters

A Trend concept (Digital filters & smoothers) in the LuxAlgo Library, with 1 indicator implementation.

## What are Chebyshev Filters?

Chebyshev filters are recursive low-pass filters borrowed from classical signal processing, named after mathematician Pafnuty Chebyshev, whose polynomials shape their frequency response. Applied to price, they do what every digital smoother does: pass the slow trend component and attenuate fast fluctuations. Their distinguishing property is the roll-off. For a given filter order, a Chebyshev design separates trend from noise more sharply than gentler designs such as the [Gaussian Filter](https://www.luxalgo.com/library/concept/gaussian-filter/), at the cost of ripple, a small unevenness in how frequencies are passed or rejected.

The namesake was a nineteenth-century Russian mathematician whose approximation polynomials solve the underlying design problem: making the filter's response as close to ideal as possible for its complexity. The designs reached trading charts by way of the digital-signal-processing current in technical analysis, most visibly promoted by John Ehlers, which treats price as a noisy signal and imports engineering filters wholesale rather than reinventing smoothers indicator by indicator.

The two standard types split by where that ripple lives. Type I allows ripple in the passband (the trend frequencies it keeps) in exchange for the steepest roll-off available from an all-pole filter of its order; Type II, the inverse design, keeps the passband flat and pushes the ripple into the stopband it rejects. On a chart, the practical consequences are aggressive noise rejection for the lag incurred, plus a tendency to overshoot slightly around sharp turns. Traders comparing filters usually weigh it against smoother, gentler designs like the [Ehlers SuperSmoother](https://www.luxalgo.com/library/concept/ehlers-supersmoother/).

Parameterization is a three-way dial. The cutoff period decides what counts as trend versus noise; the order decides how sharply that boundary is enforced, with higher orders separating better but ringing and lagging more; the allowed ripple trades passband fidelity against roll-off steepness. That explicitness is the appeal for systematic traders: instead of choosing among named averages such as an [SMA](https://www.luxalgo.com/library/concept/sma/) or [EMA](https://www.luxalgo.com/library/concept/ema/), the designer states the trade-off directly and lets the filter realize it.

## How to read a Chebyshev filter on a chart

The filter plots as a smooth line on price, and its behavior is read the way any trend baseline is, with two design quirks to know about.

1. Plot the filter with a cutoff period matched to the swings you trade; the line keeps cycles slower than the cutoff and suppresses faster ones.
2. Read side and slope as the trend state: price above a rising line is the basic bullish configuration, exactly as with a moving average baseline.
3. Compare it against a conventional average of similar lag to see the design difference: the Chebyshev line should track turns of comparable speed while carrying visibly less wiggle.
4. Expect mild overshoot after violent reversals; the sharper the filter, the more it can swing past the turn before settling, so avoid reading the first bars after a V-turn too literally.
5. If the implementation exposes order and ripple, raise them for cleaner separation and accept the added lag, or lower them for faster response with more noise bleeding through.

## How it's calculated

A Chebyshev filter is a recursive price smoother from signal processing whose response trades controlled ripple for a steeper cutoff than an equal-order Butterworth.

```
Type I magnitude response: Gain(f)^2 = 1 / (1 + ε^2 × T_N(f / f_c)^2)
ε = sqrt(10^(δ / 10) - 1)
T_0(x) = 1, T_1(x) = x, T_N(x) = 2 × x × T_{N-1}(x) - T_{N-2}(x)
Applied to price as a recursive filter: y_t = (Σ b_k × P_{t-k} over k = 0..N) - (Σ a_k × y_{t-k} over k = 1..N)

  Gain(f): magnitude of the filter's frequency response at frequency f
  f: frequency in cycles per bar
  f_c: cutoff frequency, 1 / cutoff period (set by the indicator's length input)
  N: filter order (commonly 2 to 8)
  ε: ripple factor
  δ: allowed passband ripple in decibels (commonly 0.5 to 3)
  T_N(x): Chebyshev polynomial of the first kind of order N
  x: polynomial argument
  P_t: input price at bar t (close by default)
  y_t: filter output at bar t
  t: bar index
  k: coefficient index
  b_k: feedforward (input) coefficients
  a_k: feedback (output) coefficients
```

The coefficients a_k and b_k come from standard filter design (Chebyshev pole placement plus a bilinear transform at the chosen cutoff), not from a closed-form price formula.

Type I is equiripple in the passband and monotone in the stopband; Type II (inverse Chebyshev) reverses this, with a flat passband and ripple in the stopband.

As δ approaches 0 the Type I response approaches a Butterworth; larger ripple gives a sharper cutoff but more distortion and lag near the cutoff period.

## How traders use it

- As a trend baseline: plot the filter on price and read slope and side, exactly as a moving average is used, but with a sharper split between what is smoothed away and what is kept.
- As a preprocessing stage: smooth price or an oscillator's input before computing signals, so crossovers and [divergence](https://www.luxalgo.com/library/concept/regular-bullish-bearish-divergence/) reads fire on cleaned data rather than raw noise.
- As one half of a two-filter crossover: a fast and a slow Chebyshev filter (or a Chebyshev against a conventional average) crossing to time trend changes.
- As dynamic support and resistance: a well-tuned filter line serves the same role as [dynamic S/R via MA](https://www.luxalgo.com/library/concept/dynamic-s-r-via-ma/), with pullbacks to the line watched for defended tests in the trend's direction.
- As ribbon material: several cutoffs plotted together form an [MA ribbon](https://www.luxalgo.com/library/concept/ma-ribbon/)-style stack whose spreading and squeezing reads trend strength, with the Chebyshev versions keeping the strands smoother than raw averages.

## Chebyshev Filters vs other smoothers

- **Ehlers SuperSmoother** (https://www.luxalgo.com/library/concept/ehlers-supersmoother/): The SuperSmoother is designed for maximum smoothness with minimal lag and no deliberate ripple, a gentle all-rounder. A Chebyshev design buys a steeper trend/noise boundary at the price of ripple and overshoot; which wins depends on whether whipsaw or distortion costs the strategy more.
- **EMA** (https://www.luxalgo.com/library/concept/ema/): An EMA is a first-order recursive filter: cheap, familiar, and slow to separate trend from noise, with attenuation that falls off gradually. A Chebyshev filter of higher order draws a much harder boundary at the cutoff, keeping slow structure while rejecting fast noise more decisively.
- **SMA** (https://www.luxalgo.com/library/concept/sma/): The SMA weights a finite window equally and has well-known side effects, including responding to old bars leaving the window. The Chebyshev filter is recursive with designed frequency behavior, so its smoothing character is stated up front rather than inherited from a window shape.

## FAQ

### What is the difference between Type I and Type II Chebyshev filters?

Type I permits ripple in the passband and delivers the steepest roll-off available from an all-pole filter of its order. Type II, the inverse Chebyshev, keeps the passband monotonic and moves the ripple into the stopband instead. For price smoothing that means Type I concentrates on the sharpest possible split between trend and noise, accepting slight distortion of the trend it keeps, while Type II renders the trend component more faithfully.

### Are Chebyshev filters better than moving averages for trading?

They trade differently rather than strictly better. A Chebyshev filter rejects more noise for comparable lag, but it can overshoot around sharp reversals, and its ripple slightly distorts what it passes. No filter eliminates lag or anticipates turns, so the choice comes down to whether whipsaw or overshoot hurts a given strategy more, and that is settled by testing, not filter theory.

### What does ripple actually look like on a price chart?

Not like waves drawn on the line. Ripple means the filter passes some cycle lengths slightly stronger or weaker than others, so certain swing sizes come through marginally exaggerated or muted, and the line can wiggle faintly even in smooth trends. At the small ripple allowances used for charts it is subtle; the more visible artifact is overshoot after sharp turns.

### What filter order should I use?

Low orders (2 to 4) cover most charting uses. Each added order sharpens the trend/noise boundary but adds lag and strengthens overshoot and ringing around fast reversals, and very high orders can also become numerically touchy in recursive form. The practical approach is to start at order 2 or 3, judge the smoothness on your market, and raise the order only if noise still leaks through.

### Do Chebyshev filters repaint or lag?

They do not repaint: the recursive form is causal, using only current and past bars, so printed values are final. They do lag, like every realizable smoother, with lag growing alongside order and cutoff period. The design's selling point is the exchange rate, more noise rejection per unit of lag at the boundary, not the elimination of lag itself.

### Where do Chebyshev filters fit next to Butterworth designs?

Butterworth designs are maximally flat: no ripple anywhere, with a softer roll-off for the same order. Chebyshev designs accept ripple to cut off harder. In trading terms, a Butterworth-style smoother distorts the kept trend least, while a Chebyshev of equal order rejects more of the chop; both appear in DSP-inspired indicator libraries, and the choice mirrors the Type I versus Type II logic.

## Implementations in the Library

- Chebyshev Filters (LuxAlgo): https://www.luxalgo.com/library/indicator/chebyshev-filters/

## Related concepts

- Gaussian Filter: https://www.luxalgo.com/library/concept/gaussian-filter/
- Butterworth Filter: https://www.luxalgo.com/library/concept/butterworth-filter/
- Elliptic Filter: https://www.luxalgo.com/library/concept/elliptic-filter/
- Bessel Filter: https://www.luxalgo.com/library/concept/bessel-filter/
- Ehlers SuperSmoother: https://www.luxalgo.com/library/concept/ehlers-supersmoother/
- 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/chebyshev-filters/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/