Skip to the content.

← All indicators

zeonta.voss_predictive_filter() — A band-limiting filter feeding Voss’ negative-group-delay predictor.

What it measures

Band-limits price with a 2-pole bandpass filter, then runs it through a filter with negative group delay (Henning Voss’ “Universal Negative Group Delay Filter for the Prediction of Band-Limited Signals”, adapted by Ehlers) to produce a second line that leads the bandpass output rather than lagging it.

Formula

Filt = BandPass(Close, period, bandwidth); Voss = ((3+order)/2)*Filt - sum((k+1)/order * Voss[-(order-k)], k=0..order-1)

Parameters

Required inputs: close

Parameter Default
period 20
predict 3
bandwidth 0.25

Returns

Column
VOSSFILT
VOSS

Usage

Examples run against the 300-bar OHLCV fixture in tests/data/ohlcv.csv, loaded as df. The output shown is the real output.

import pandas as pd
import zeonta

df = pd.read_csv('tests/data/ohlcv.csv', parse_dates=['date']).set_index('date')
zeonta.voss_predictive_filter(df['close']).tail(3)
            VOSSFILT      VOSS
date                          
2024-10-25 -0.411779 -0.115044
2024-10-26 -0.405698 -0.274864
2024-10-27 -0.422881 -0.489957

Accessor form: df.zta.voss_predictive_filter(...)

How to read it

Plot VOSS against VOSSFILTVOSS measurably precedes VOSSFILT’s own turns, so a crossover between the two at a peak or valley is Ehlers’ own suggested signal.

Pitfalls

This cannot see the future — the input must already be band-limited (which the bandpass stage guarantees only within its own passband), and a market that isn’t currently cycling near period gives a VOSS line with nothing meaningful to lead.

Reference

Formula source: https://www.mesasoftware.com/papers/A%20PEEK%20INTO%20THE%20FUTURE.pdf