Concept

Roofing Filter

Roofing Filter is a Statistics concept. The Library holds 3 implementations, each one a working definition you can pull into Quant.

Top Roofing Filter indicators

3 total

What is a Roofing Filter?

A roofing filter is John Ehlers' preprocessing bandpass for indicator inputs. It chains two stages: a two-pole high-pass filter removes components with periods longer than an upper cutoff (48 bars in Ehlers' published defaults), stripping out trend and drift, then an Ehlers SuperSmoother low-pass removes periods shorter than a lower cutoff (10 bars), suppressing bar-to-bar noise and aliasing. What survives is the band between the two, the 'roof': the cycle-scale swings oscillators are actually meant to trade.

Oscillators computed on raw price inherit trend distortion: in a persistent uptrend a stochastic oscillator pins high and its overbought readings stop marking reversals. Computed on roofed data, the same oscillator swings around a zero-mean input, so overbought and oversold regain meaning, and downstream dominant cycle measurement sees a much cleaner signal. The cost is the one all filters pay: a few bars of lag, and blindness to anything outside the passband, which is precisely the design intent.

How traders use it

  • As an oscillator front end: stochastics, RSI, and custom oscillators computed on roofed output produce cleaner, more symmetric overbought/oversold swings than the same tools on raw price.
  • As the standard preprocessing stage before cycle measurement, where leftover trend would otherwise dominate the spectrum and mask the tradable period.
  • As a detrended series in its own right: zero crossings and turns of the roofed output mark cycle-scale swing shifts without any further indicator.

Related concepts · Ehlers DSP cluster

Concept family

Statistics

45 concepts mapped · 37 in the Library

Roofing Filter FAQ

What does a roofing filter remove from price data?

Both ends of the spectrum. The high-pass stage removes slow components, trend and drift with periods longer than the upper cutoff, and the SuperSmoother stage removes fast components, noise with periods shorter than the lower cutoff. What passes is the middle band of cycle-scale swings. In Ehlers' published defaults that band spans roughly 10-to-48-bar periods, with both cutoffs adjustable.

Why apply a roofing filter before an oscillator?

Because oscillators assume their input swings around a stable mean, and trending price does not. Trend leakage makes a stochastic or RSI pin at one extreme and produce false reversal readings. Roofing the input strips the trend and the finest noise first, so the oscillator measures the cycle it was designed for. The trade-off is a small amount of added lag.

Build Roofing Filter your way.

Quant writes, tests, and refines it with you — then it runs on LuxAlgo charting or ports to TradingView.