Zero Lag (Well, Almost) by John Ehlers and Ric Way
A little lag is a good thing. Here’s how you can remove a selected amount from an exponential moving average and use the filter in an effective trading strategy.
ALL smoothing filters and moving averages have lag. The lag is necessary because the smoothing is done using past data. Therefore, the averaging includes the effects of the data as of several bars ago. In this article we show you how to remove a selected amount of lag from an exponential moving average (EMA). Removing all the lag is not necessarily a good thing, because with no lag, the indicator would just track out the price you were filtering; the amount of lag removed is a tradeoff with the amount of smoothing you are willing to forgo. We show you the effects of lag removal in an indicator and then use the filter in an effective trading strategy.
An exponential moving average (Ema) is computed by taking a fraction of the current price and adding to it the quantity (1 – fraction) times the previously computed value of the Ema. That fraction is called the “smoothing factor” and is commonly called α (alpha), and alpha is always less than 1. The equation for an Ema can be written as:
EMA = α * Price + (1 – α) * EMA;
where EMA is the value of the EMA one bar ago.
Engineers often describe filters in terms of their impulse response. An impulse is where the data has a finite value at one sample and a zero value at all other samples. Suppose an impulse of data has a value of 1/α. When the Ema is applied to this impulse, the filter output at the end of the first sample is just 1 because there is no previous value in the filter. On the next sample, the input value is zero, and the previous value of 1 is multiplied by (1 – α), so the output is (1 – α). On the third sample, there again is no new input and the previous value of (1 – α) is multiplied by (1 – α), so the output is (1 – α)2.