Every moving average makes the same trade: the smoother it is, the later it is. The Hull Moving Average is one of the few attempts to cheat that trade-off rather than accept it — and understanding how it cheats tells you exactly when to trust it and when not to.
The HMA was developed by Australian trader Alan Hull. The goal was blunt: keep the smoothness of a long average while responding at something close to the speed of a short one.
The lag problem, stated properly
A simple moving average of 20 bars is, by construction, centred about 10 bars in the past. That is not a flaw in the calculation — it is what an average is. Every smoothing method pays for noise reduction with delay.
The usual responses are unsatisfying:
Hull's insight was different: instead of just weighting recent data more, measure how far behind you are and extrapolate forward by that amount.
How the HMA is actually built
It is three weighted moving averages stacked in a specific way. For a period n:
Read it in two steps, because each step does one job.
Step 1 — the lag cancellation. Take a half-length WMA and a full-length WMA. The half-length one is roughly half as late as the full-length one. Subtracting the slow average from twice the fast one produces a series that projects the difference forward: if the fast average is above the slow one, the difference is added again, pushing the result ahead of price rather than behind it. This is a linear extrapolation of the recent trend, and it is where nearly all of the HMA's speed comes from.
Step 2 — the re-smoothing. That extrapolated series is fast but jagged, because extrapolation amplifies noise as well as signal. Smoothing it with a WMA of length sqrt(n) cleans it up. The square root is the key choice: it is short enough to preserve the speed gained in step 1, but long enough to remove the roughness. For a 49-period HMA that final smoothing is only 7 bars.
The result is a line that turns noticeably earlier than an EMA of the same period and still looks smooth on the chart.
What the HMA is good at
1. Slope as a trend filter. The most reliable use is not the price/HMA cross but the direction of the HMA itself. Rising = long bias only, falling = short bias only. Because the line is smooth, its slope flips far less often than a fast EMA's would, and because it is early, the flip is not comically late. Many platforms colour the HMA by slope for exactly this reason.
2. A dynamic support/resistance reference in a trend. In a clean directional move, price tends to hold on the HMA on pullbacks. It gives you an objective place to look for continuation entries.
3. As the fast leg of a two-average system. A short HMA against a long HMA (or a long SMA) produces crossovers that are earlier than the equivalent EMA pair without proportionally more false signals.
Where it fails — and why
Be explicit about this, because the HMA's smooth appearance makes it look safer than it is.
It overshoots. Step 1 is an extrapolation. Extrapolation assumes the recent trend continues. At a genuine turning point, the HMA can briefly point the wrong way harder than a plain average would, precisely because it is projecting the old direction forward. The smoothness makes that wrong-way move look confident.
It repaints its story in ranges. The HMA is not repainting in the technical sense — the value of a closed bar does not change. But in a sideways market the slope flips frequently, and each flip looks like a clean trend signal in isolation. An HMA-slope system in a range will produce a run of small losses. Pair it with a volatility or trend-strength filter (ADX, the Choppiness Index, or simply an ATR-based minimum move requirement) rather than trading its every turn.
It is still a moving average. It cannot lead price. Nothing in the formula contains information about the future; the "early" turn is an artefact of extrapolating past data, and it is right only as often as that extrapolation is right.
Settings and practical use
The one-line summary
The HMA reduces lag by measuring the lag between a fast and a slow weighted average and projecting that gap forward, then re-smoothing the result over a much shorter window. You get an average that turns early and looks clean — at the cost of overshooting reversals and flipping too often in ranges. Use it as a trend-direction filter with a range filter attached, and it earns its place. Use it as a standalone signal generator, and the smooth line will cost you money confidently.
Educational content from the PipFlow staff team. Nothing here is investment advice.
The HMA was developed by Australian trader Alan Hull. The goal was blunt: keep the smoothness of a long average while responding at something close to the speed of a short one.
The lag problem, stated properly
A simple moving average of 20 bars is, by construction, centred about 10 bars in the past. That is not a flaw in the calculation — it is what an average is. Every smoothing method pays for noise reduction with delay.
The usual responses are unsatisfying:
- Shorten the period. You get speed and whipsaw in equal measure.
- Use an EMA. Better, because recent bars are weighted more heavily, but the lag is reduced, not removed.
- Use a WMA. Weights decline linearly. Same story — faster, still late.
Hull's insight was different: instead of just weighting recent data more, measure how far behind you are and extrapolate forward by that amount.
How the HMA is actually built
It is three weighted moving averages stacked in a specific way. For a period n:
raw = 2 x WMA(price, n/2) - WMA(price, n)
HMA = WMA(raw, sqrt(n))
Read it in two steps, because each step does one job.
Step 1 — the lag cancellation. Take a half-length WMA and a full-length WMA. The half-length one is roughly half as late as the full-length one. Subtracting the slow average from twice the fast one produces a series that projects the difference forward: if the fast average is above the slow one, the difference is added again, pushing the result ahead of price rather than behind it. This is a linear extrapolation of the recent trend, and it is where nearly all of the HMA's speed comes from.
Step 2 — the re-smoothing. That extrapolated series is fast but jagged, because extrapolation amplifies noise as well as signal. Smoothing it with a WMA of length sqrt(n) cleans it up. The square root is the key choice: it is short enough to preserve the speed gained in step 1, but long enough to remove the roughness. For a 49-period HMA that final smoothing is only 7 bars.
The result is a line that turns noticeably earlier than an EMA of the same period and still looks smooth on the chart.
What the HMA is good at
1. Slope as a trend filter. The most reliable use is not the price/HMA cross but the direction of the HMA itself. Rising = long bias only, falling = short bias only. Because the line is smooth, its slope flips far less often than a fast EMA's would, and because it is early, the flip is not comically late. Many platforms colour the HMA by slope for exactly this reason.
2. A dynamic support/resistance reference in a trend. In a clean directional move, price tends to hold on the HMA on pullbacks. It gives you an objective place to look for continuation entries.
3. As the fast leg of a two-average system. A short HMA against a long HMA (or a long SMA) produces crossovers that are earlier than the equivalent EMA pair without proportionally more false signals.
Where it fails — and why
Be explicit about this, because the HMA's smooth appearance makes it look safer than it is.
It overshoots. Step 1 is an extrapolation. Extrapolation assumes the recent trend continues. At a genuine turning point, the HMA can briefly point the wrong way harder than a plain average would, precisely because it is projecting the old direction forward. The smoothness makes that wrong-way move look confident.
It repaints its story in ranges. The HMA is not repainting in the technical sense — the value of a closed bar does not change. But in a sideways market the slope flips frequently, and each flip looks like a clean trend signal in isolation. An HMA-slope system in a range will produce a run of small losses. Pair it with a volatility or trend-strength filter (ADX, the Choppiness Index, or simply an ATR-based minimum move requirement) rather than trading its every turn.
It is still a moving average. It cannot lead price. Nothing in the formula contains information about the future; the "early" turn is an artefact of extrapolating past data, and it is right only as often as that extrapolation is right.
Settings and practical use
- Period. 16, 20 and 49 are the values you see most often. There is nothing magic about them. Choose a period whose slope changes about as often as you want to be repositioned — that is the parameter that matters, not the crossover.
- Square-number periods are convenient because sqrt(n) comes out whole (16, 25, 36, 49, 64). Implementations round anyway, so it is cosmetic, but it makes behaviour easier to reason about.
- Do not stack it with other lag-reduced averages and treat the agreement as confirmation. They are all extrapolating the same recent data and will overshoot together.
- Test the slope rule, not the cross rule. Most of the HMA's edge in backtests comes from the slope filter; the price cross adds trades without adding much information.
The one-line summary
The HMA reduces lag by measuring the lag between a fast and a slow weighted average and projecting that gap forward, then re-smoothing the result over a much shorter window. You get an average that turns early and looks clean — at the cost of overshooting reversals and flipping too often in ranges. Use it as a trend-direction filter with a range filter attached, and it earns its place. Use it as a standalone signal generator, and the smooth line will cost you money confidently.
Educational content from the PipFlow staff team. Nothing here is investment advice.
clean
by ai-agent