2.51 Measuring the Dominant Cycle with Band-Pass Zero Crossings
Run price through a band-pass, count bars between zero crossings, double it: that's the dominant cycle, at a few bars' lag. But widen the passband, or a narrow filter measures its own tuned period.
The old article "Dominant Cycle Estimation Without Astrology" surveyed the heavy machinery for measuring a cycle period: DFT periodograms and autocorrelation estimators that resolve a frequency cleanly but lag 12 to 32 bars. This article gives the cheap, fast alternative. Run price through a band-pass filter, count the bars between the times the output crosses zero, and double it. That is the dominant cycle period, measured with a few bars of lag and no spectral math. It works, it is the lowest-latency cycle estimator in the pillar, and it carries a specific bias that will fool you if you tune the filter wrong.
A cycle is two zero crossings
The method rests on one geometric fact about an oscillation. A clean cycle, centered on zero, crosses zero twice per full period: once going up, once going down. So the gap between two successive zero crossings is half a cycle.
$$ T_{\text{dominant}} = 2 \times (\text{bars between successive zero crossings}) $$
Each successive zero crossing of the band-pass output marks a half-cycle boundary, and twice the spacing between them is the full period. Feed price into a band-pass, watch its output swing above and below zero, time the crossings, double the spacing, and you have the dominant cycle. The band-pass is doing the essential work the raw price cannot: price has a trend and noise that smear its crossings, while the band-pass strips both away and leaves a centered oscillation whose crossings are meaningful. This is why you measure on the band-pass output, never on raw price.
Widen the passband, or the filter measures itself
Here is the trap, and it comes straight from the previous article on Q. A band-pass filter has a center period it is tuned to and a selectivity that decides how hard it rejects neighbors. A narrow, high-Q band-pass resonates at its own tuned period, so its output oscillates near that period almost regardless of what the market is doing. Measure the zero crossings of a narrow band-pass and you largely recover the period you tuned the filter to, not the period the market is running. The filter answers your question with your own assumption. That is resonance bias, the reason the old article "Dominant Cycle Estimation Without Astrology" listed band-pass zero-crossing as fast but resonance-biased.
The fix is to widen the passband, lowering the Q. A broad band-pass passes a wide range of cycles, so its output is free to oscillate at whatever period dominates the market within that range, rather than being dragged to a single tuned tone. You give up selectivity and accept a noisier, less pure output, and in exchange the zero crossings reflect the market's cycle instead of the filter's. So the measurement setting is the opposite of the isolation setting: when you want to isolate a known cycle you go narrow, but when you want to measure an unknown cycle you go wide, so the instrument does not bias the reading toward its own tuning.
Fast and cheap, noisy and fragile: where it fits
This estimator sits at one end of the speed-versus-stability trade the old article "Dominant Cycle Estimation Without Astrology" mapped, the mirror image of the periodogram. The zero-crossing method has very low lag, only a few bars, because it reacts as soon as the output crosses zero, with no long analysis window. That speed is its entire reason to exist. The price is variance: a single noisy crossing, or a half-cycle distorted by a passing shock, throws the estimate off, and with no averaging window to lean on the reading jumps around bar to bar. It is the low-lag, high-variance corner, where the periodogram is the high-lag, low-variance corner.
So deploy it accordingly. Smooth the raw period estimate over several crossings before trusting it, which gives back a little of the lag you saved but tames the jumpiness. Keep the passband wide to avoid resonance bias, and gate the whole thing on amplitude, because when the band-pass output is small there is no cycle to cross zero meaningfully and the spacing is noise. And hold the standing skepticism of this pillar: the period you measure describes the recent past, and the cycle it found may already be drifting or dead, so a zero-crossing reading is a fast hypothesis about current structure, not a forecast. Use it where you need a quick cycle estimate to feed an adaptive filter and can tolerate variance, and reach for the autocorrelation periodogram when you need a stable number and can pay the lag.

KEY POINTS
- A centered oscillation crosses zero twice per cycle, so the dominant period equals twice the bar spacing between successive zero crossings of a band-pass output.
- Measure on the band-pass output, not raw price: the band-pass strips the trend and noise that smear price's crossings, leaving a centered wave whose crossings are meaningful.
- A narrow, high-Q band-pass resonates at its own tuned period, so its zero crossings recover the period you assumed, not the market's. This is resonance bias, the cost of measuring with a selective filter.
- The fix is a wide, low-Q passband, the opposite of the isolation setting: wide lets the output oscillate at the market's dominant period instead of the filter's tuning, trading purity for an honest reading.
- The method is the low-lag, high-variance corner of the speed-stability trade from the old article "Dominant Cycle Estimation Without Astrology," reacting in a few bars but jumping around on noisy crossings, the mirror of the high-lag periodogram.
- Deploy it by smoothing the estimate over several crossings, keeping the passband wide, and gating on amplitude; treat the reading as a fast hypothesis about current structure, not a forecast, since the cycle may already be drifting or dead.
References
- Statistically Sound Indicators for Financial Market Prediction - Timothy Masters (Amazon)
- Cycle Analytics for Traders - John Ehlers (Amazon)
- Zero crossing and zero-crossing rate (Wikipedia)
- Frequency estimation methods and their tradeoffs (Wikipedia)
- Band-pass filter and resonance (Wikipedia)
- MESA Software Technical Papers: measuring the dominant cycle (John Ehlers)