Concept
Zero-lag MACD
Zero-lag MACD is a Momentum & Oscillators concept. The Library holds 3 implementations, each one a working definition you can pull into Quant.
Top Zero-lag MACD indicators
3 total
What is the Zero-lag MACD?
The Zero-lag MACD is MACD rebuilt on de-lagged averages. Standard MACD subtracts a 26-period EMA from a 12-period EMA and smooths the difference into a 9-period signal line; each EMA trails price, so crossovers arrive late. The zero-lag variant error-corrects those averages. The most common construction takes twice the EMA minus an EMA of that EMA (the correction behind DEMA); others pre-shift the input by adding the difference between the current price and the price roughly half a period back before smoothing, the idea behind ZLEMA.
The name overpromises, and the best-known treatment admits it in its title: John Ehlers and Ric Way called their error-correcting filter paper "Zero Lag (Well, Almost)", because a filter that only sees past data cannot have zero lag. What the correction buys is earlier crossovers and a histogram that turns nearer the actual price turn, paid for with overshoot and extra false crosses in chop. Implementations also differ on which lines get de-lagged (fast, slow, signal, or all three), so two charts with the same label can disagree on the same bar.
How traders use it
- With the standard MACD grammar, shifted earlier: line/signal crossovers, zero-line crosses for bias, and histogram inflections for acceleration, each firing a few bars sooner than the classic version.
- As the trigger in a two-speed setup, where a slower tool sets direction and the zero-lag MACD times entries in that direction, offsetting its higher false-signal rate.
- For divergence work, where the reduced lag places oscillator peaks closer in time to the price swings being compared.
- As a drop-in replacement in existing MACD systems to test whether earlier signals actually help; the answer differs by market and regime and is not guaranteed to be positive.
Zero-lag MACD vs. other MACD variants
MACD: Same architecture, different averages: MACD uses plain EMAs and accepts their lag, while the zero-lag variant error-corrects each average to fire earlier at the cost of overshoot and extra signals in chop.
Impulse MACD: Impulse MACD attacks range noise rather than lag, flattening its output toward zero inside congestion so only impulsive moves register. The zero-lag MACD makes the opposite trade: more responsiveness everywhere, ranges included.
Schaff Trend Cycle: STC also speeds up MACD, but by running stochastic calculations on the MACD line and reading bounded thresholds. The zero-lag MACD keeps the familiar unbounded crossover grammar and simply moves it earlier.
Related concepts · MACD lineage
Concept family
Momentum & Oscillators
91 concepts mapped · 72 in the Library
Zero-lag MACD FAQ
Does the zero-lag MACD really have zero lag?
No. Any indicator computed from past prices lags; the error correction only reduces it. Ehlers and Way, whose filter inspired many versions, titled their paper "Zero Lag (Well, Almost)" for exactly this reason. Expect crossovers a few bars earlier than classic MACD, with more overshoot near sharp turns, not a lag-free signal.
How is the zero-lag MACD calculated?
Take fast and slow de-lagged EMAs (commonly 12 and 26 periods), most often corrected as twice the EMA minus the EMA of that EMA; their difference is the MACD line. A signal line (commonly 9 periods, often de-lagged the same way) and a histogram complete it. Constructions vary between implementations, so verify the exact code you use.
When is the zero-lag MACD worse than the regular MACD?
In choppy, range-bound conditions. The de-lag correction amplifies recent movement, so sideways noise generates more crossovers, and each is acted on earlier. Classic MACD's extra lag works as an accidental filter there. The zero-lag version tends to look best in cleanly trending phases where turns are worth catching early.
Build Zero-lag MACD your way.
Quant writes, tests, and refines it with you — then it runs on LuxAlgo charting or ports to TradingView.


