2019issue C0848-56
Constructing the Voss line from a bandpass and a short FIR sum
A two-pole bandpass isolates a chosen cycle from closes. A short FIR sum of lagged Voss values then advances that cycle into a second trace. The lead is a designed group-delay property, and the overlay cannot see future prices.
- The first stage is a two-pole bandpass on closes. Cosine terms in Period and a fixed 0.25 bandwidth set the recursive coefficients F1, G1, and S1.
- After the fifth bar, the bandpass update uses the two-bar close difference and prior bandpass values. The result, filt, is the unadvanced cycle baseline.
- The second stage is an FIR sum: each of Order lagged Voss values is weighted by its index over Order, then subtracted from a scaled current bandpass value to form the Voss line.
- The paired traces are a cycle-timing overlay. A negative group delay can turn earlier than a conventional oscillator, but the construction cannot see future prices.
A two-trace cycle overlay
The construction is a two-trace cycle overlay rather than a single oscillator. The paired plots are the bandpass line and the Voss line. Used together, those traces are a trend filter: a cycle-timing overlay, not a standalone oscillator.
Voss line leading the two-pole bandpass on daily SPY

Period 20, predict 3, bandwidth 0.25 as fixed on the study. Dates are placed from the monthly axis ticks and visible turning points, so they are approximate. Vertical readings are to the nearest half oscillator unit except the final printed pair.
A two-pole bandpass on closes
The construction begins with a two-pole bandpass on closes, using cosine terms in Period and a fixed 0.25 bandwidth to set the recursive coefficients F1, G1, and S1. Period is the intended cycle length in bars. Bandwidth is the relative width of the bandpass, and it is fixed at 0.25 in the supplied implementations.
After the fifth bar, the bandpass update is one-half of one minus S1 times the two-bar close difference, plus F1 times one plus S1 times the prior bandpass value, minus S1 times the bandpass value from two bars earlier. The bandpass output, filt, is the unadvanced cycle baseline.
An FIR advance to the Voss line
The second stage is a finite-impulse-response sum. Each of Order lagged Voss values is weighted by its index over Order. That linearly weighted sum, sumc, is subtracted from a scaled current bandpass value to produce the advanced Voss line.
Default inputs used across the supplied implementations are Period 20 and Predict 3, with Order set to three times Predict. Predict is the intended lead in bars. Order is the FIR length.
A coded crossing rule
One coded rule treats a Voss cross above the bandpass as a next-bar buy and a Voss cross below the bandpass as a next-bar sell. That rule is an implementation choice, not a validated edge.
A portable recipe
Independent ports keep the same coefficient algebra and default inputs, confirming that the method is a portable recipe rather than a vendor-specific indicator.
All readings on this track · 10 readings
- 1982An odd-length smoother from a cycle cutoff
- 1989Smoothing filters, cutoff, poles, and sample delay
- 1992Constructing a cycle-aware finite impulse response detrender
- 2002Rebuild a smoother by writing the lag into the coefficients
- 2002Timing market cycles with finite impulse response filters and FFT
- 2002Constructing the relative strength index with an even-order finite-impulse-response prefilter
- 2003Recursive and cascaded moving-average construction
- 2006One second-order transfer function, a family of trend filters
- 2019Constructing the Voss line from a bandpass and a short FIR sum
- 2020Truncated bandpass construction as a finite-length trend filter