Hull Moving Average (HMA): The Low-Lag Trend Filter Built for Futures Traders
Overview #
The fundamental tension in every moving average is lag versus smoothness. Smooth it more and it lags more. Reduce the lag and it gets whippy. Every moving average ever built has lived somewhere on this tradeoff curve — until Alan Hull published a solution in 2005 that breaks the constraint mathematically.
The Hull Moving Average (HMA) uses a weighted moving average of a differential — the difference between two WMAs at different speeds — then smooths that differential with a period proportional to the square root of the original input. The result is an indicator that's dramatically more responsive to recent price than an EMA of the same period, while staying smoother than a raw WMA of that speed.
For futures traders, this matters at the entry decision. When ES breaks out of the morning balance range, an EMA(20) might take 6-8 bars to confirm the direction. An HMA(20) typically confirms within 2-3 bars. The difference between a 10-tick entry and a 4-tick entry on a 25-tick trade isn't irrelevant — it's 60% of the profit target you're giving away to lag alone. Over hundreds of trades, that lag cost compounds into a category of its own.
This article covers the HMA's three-stage formula, how to read direction changes as signals, the dual-HMA and four-HMA crossover setups, period selection for the major futures instruments, and — critically — when HMA lies to you in ranging markets and how to identify those conditions before they cost you real money.
Key Concepts #
Before the setups, the vocabulary. These terms appear throughout and are used precisely:
Hull Moving Average (HMA) is the indicator developed by Alan Hull in 2005. It combines two weighted moving averages through a differential formula and then applies a final smoothing pass using the square root of the input period to minimize lag while preserving readability.
Weighted Moving Average (WMA) is the building block of the HMA formula. Unlike a simple moving average that treats all bars equally, a WMA assigns linear weights — the most recent bar gets weight n, the previous gets n-1, and so on down to weight 1 for the oldest bar. This makes WMA much more responsive to recent price than SMA, but the HMA takes this substantially further.
Lag in a moving average context is the number of bars between a price event (like a trend reversal) and when the moving average confirms it by changing direction. For an SMA(20), lag is approximately 10 bars. For an EMA(20), roughly 6-7 bars. For an HMA(20), 2-3 bars. That's the core claim, and it's the reason the indicator has earned a permanent place on professional futures trading desks.
HMA slope is the change in HMA value from the current bar to the previous bar. When the slope is positive (rising), the trend is bullish according to the indicator. When negative (falling), bearish. The direction change — the inflection point where slope switches sign — is the primary actionable signal the indicator generates.
HMA color coding is the standard visualization approach: the line displays green (or cyan/blue) when rising, red when falling. Most platform implementations support this natively. The color change happens bar-to-bar based on the slope direction, creating an immediately scannable visual signal even when monitoring multiple instruments simultaneously.
Period (n) is the lookback length specified when adding HMA to a chart. The actual internal WMAs use n and n/2, and the final smoothing uses sqrt(n). An HMA(20) internally computes WMA(20), WMA(10), and then applies WMA(4) to the differential. Changing n changes all three simultaneously — the three stages of the calculation are coupled.
The Mathematics Behind HMA #
The HMA formula is three steps. Understanding each step explains why it works — and precisely when it fails:
Step 1: Compute two WMAs
WMA(n) — the "slow" weighted moving average of the full period. WMA(n/2) — the "fast" weighted moving average of half the period. The fast WMA responds to recent price roughly twice as quickly as the slow WMA. During trending price action, the fast WMA leads the slow WMA — it's always ahead, pointing in the direction of current momentum.
Step 2: Compute the differential
Raw value = 2 × WMA(n/2) - WMA(n). This is the core insight. By doubling the fast WMA and subtracting the slow WMA, you get a value that projects the current momentum direction forward. If the fast WMA is 5 points above the slow WMA (indicating upward momentum), the formula creates a value that's another 5 points ahead of where the fast WMA already is. The stronger the momentum, the further ahead this value projects.
This step creates a predictive element — the raw value anticipates slightly in the direction the market is currently moving, rather than simply reflecting where it's been. That's the mechanism that eliminates the lag without sacrificing the smoothness that makes a moving average readable.
Step 3: Smooth the differential
HMA = WMA(sqrt(n)) applied to the raw differential. The final WMA smooths the jerky differential signal into a clean line. The period is sqrt(n) because Alan Hull showed this specific denominator produces the optimal lag-vs-smoothness tradeoff for the resulting output. For HMA(20), the final WMA uses period 4. For HMA(64), period 8. For HMA(9), period 3.
HMA(n) = WMA(sqrt(n)) of [2 × WMA(n/2) - WMA(n)]
HMA(9): WMA(3) of [2 × WMA(4) - WMA(9)] HMA(20): WMA(4) of [2 × WMA(10) - WMA(20)] HMA(55): WMA(7) of [2 × WMA(27) - WMA(55)]
The NexusFi community recognized the HMA's relationship to zero-lag filtered averages early. As @Fat Tails catalogued in a thorough analysis of moving average types: "My current favourites are zerolagging moving averages...comparing two moving averages so basically means measuring momentum, just corrected for random price movement." The HMA formalizes this concept into a single indicator with a clean, reproducible implementation.
How to Read HMA Signals in Futures Markets #
The HMA generates two types of signals: slope-based (the direction change) and price-cross (when price crosses the HMA line). Professional futures traders use slope-based signals almost exclusively. Price-cross signals work with traditional MAs but produce lower-quality entries on the HMA because the indicator's low lag means it sits much closer to price — crosses are more frequent and less meaningful.
The Slope Direction Signal (Primary)
The HMA slope changes direction whenever the indicator transitions from rising to falling or vice versa. This inflection point is visible as a color change in standard implementations. For an ES scalper watching a 3-minute chart, an HMA slope reversal from green to red is the read: momentum has shifted, and the probability of further upside has decreased materially.
What makes this useful on the HMA versus other MAs: because lag is so much lower, the slope change often happens within 1-2 bars of a genuine trend inflection. On an EMA(20) on the same chart, that same trend turn might not show in the indicator direction for 5-6 bars — by which point the original entry point has moved away and the new entry is entering at a much worse price.
The practical impact: traders using EMA-based direction signals routinely enter after a trend is established. Traders using HMA-based direction signals enter closer to the inflection point. The mathematical difference in average entry price shows up in actual P&L over large sample sizes.
The dual HMA (open and close at the same period) creates a ribbon effect that shows consensus between open and close, filtering ambiguous bars where the body is small relative to the wick.
The Price-Cross Signal (Secondary, Use Sparingly)
When price crosses above or below the HMA line, it can indicate momentum shift. The problem: because the HMA is so responsive to recent price, it can whipsaw across the indicator multiple times during consolidation periods, generating alternating false signals. The rule is simple: use price crosses to confirm slope signals, not as standalone entries. Slope change with price on the correct side equals a valid setup. Slope change with price still crossing back equals wait for confirmation.
The HMA doesn't predict price — it identifies the current momentum direction with substantially less historical distortion than traditional MAs. When it changes slope direction on a trending instrument in a trending session, that's a real, edge-carrying signal. When it changes direction 4 times in 45 minutes on the same instrument, you're in consolidation and the signal has no statistical edge.
HMA Crossover Strategy: The Core Setup #
The dual HMA crossover is the most commonly implemented systematic approach to the indicator. The structure is simple: use a fast HMA for timing and a slow HMA for direction filter. Only take signals in the direction the slow HMA is pointing. Ignore signals that would put you against the slow-period HMA direction.
The Two-HMA System: HMA(9) + HMA(21)
@HowardMilano's description from the NexusFi Elite Circle is the clearest practitioner account of this setup: "I use Hull MA9 and HULL MA21 (and volume of course), no other indicators. The 21 to remind me of the bigger trend, the 9 is used for entries. I color code the MA's, red for down, green for up. Prime time for making money is when both MA's are going in the same direction (same color). Entry is around the time when the 9 is curling with price around support/resistance and price turning as well. I stay in as long as price makes progress (scalping), I don't use the MA's for exits."
That's the system in plain language. When the 21 is green (uptrend confirmed) and the 9 flips from red to green (short-term momentum aligned with the bigger trend), with price near a recognized support level, that's the entry signal. The trigger is the 9's color change. The filter is the 21's direction. Confluence at a level is the context.
Setup Criteria for Long (reverse for short):
1. HMA(21) slope is positive (green) — slow HMA confirms uptrend is intact. 2. HMA(9) transitions from red to green — fast HMA momentum shift aligns with slow direction. 3. Price is at or near a recognized support level — not entering into empty space. 4. Volume on the entry bar is at or above the 20-bar average — conviction confirmation. 5. CVD (if monitoring order flow): showing positive delta or rising cumulative delta on the setup bar.
Stop Placement:
Stop goes below the most recent swing low on the chart timeframe, not below the HMA line itself. If price breaks the swing low that created the support context for the setup, the thesis is invalidated — it doesn't matter what the HMAs are doing at that point. A stop below the HMA is structurally weak because the HMA moves with price; it can end up invalidating your stop justification as price approaches it.
Target Approach:
HMA crossover trades work best with scaling exits. Take first profit at 1:1 risk/reward, move stop to breakeven on the remaining position, and let the second half run with the HMA(9) as the trail. When HMA(9) turns against the position, exit the remainder. This structure captures the trend while guaranteeing a floor profit on the first exit.
The Four-HMA System: Fibonacci Periods
A more sophisticated version uses four HMAs at Fibonacci-spaced periods: 8, 55, 144, 377. This was documented extensively on NexusFi by @Reggy: "Bullish Entry: 1. 8-hull MA hooks up AND 2. 8-hull MA > 55-hull MA AND 3. 55-hull MA hooks up AND 4. confluence with candlestick support/resistance."
The four-HMA system demands all shorter periods to align directionally before entry. This creates high-confluence setups with much lower frequency — typically 2-4 clean signals per day versus 8-15 for the dual-HMA system. The tradeoff is longer periods of sitting out and waiting, but much higher win rate when all four periods finally align. @mkoning's analysis of the system was candid: "The idea was to use a mathematical depiction of trend and a switch for entries and exits...The Hull MA is quite smooth and makes a reasonable trend proxy, especially in longer average lengths (100-500). Because of the way it is calculated, it turns fairly quickly even with a long length."
Which System to Use:
Dual HMA (9/21): Active day trading, 3-minute to 15-minute charts, ES and NQ during trending sessions. Expect 8-15 signals per session. Volume confirmation required to filter the noisier subset of those signals.
Four-HMA system: Swing trading, 1-hour to daily charts, CL during trending commodity cycles. Expect 2-6 signals per week. Higher conviction but requires patience to wait for all four periods to align simultaneously.
When HMA Fails #
The HMA's strength — its low lag — is also its primary failure mode in the wrong market conditions. In range-bound, choppy sessions, the low lag means the indicator responds to every noise spike. On a balanced ES day where price is oscillating in a 15-point range, the HMA(9) might flip direction 6-8 times per hour. Each flip looks like a signal. Almost none of them are.
Elite NexusFi member
That discipline — recognizing flat slope as a no-trade condition — determines which HMA users profit from those who generate commissions. Flat HMA is not a broken indicator; it is an honest report of a market that has no directional momentum worth trading.
HMA in a range-bound market is a signal factory. It generates a new direction change every 4-8 bars during consolidation. Trading every HMA slope change on a balanced ES day without a session type filter is one of the most reliable ways to grind an account into small, consistent losses. Identify the session type before deploying HMA signals — this step is not optional.
Failure Scenario 1: Balanced Sessions
When ES or NQ opens with minimal directional bias and stays within the prior day's value area, the HMA oscillates without generating directional information. Price in balance means the market is exploring both sides of equilibrium with equal conviction. HMA direction changes during balance aren't trend reversals — they're the indicator responding to noise in a horizontally-moving market environment.
The filter for balanced sessions: don't trade HMA signals when (a) price has not exceeded the prior day's high or low AND (b) the current session range is less than 65% of the 20-day ADR. Both conditions together identify a balance session reliably. When both are true, HMA signals carry near-zero edge. Wait for a genuine breakout or look at other instruments.
Failure Scenario 2: News-Driven Spike and Reverse
CPI releases, Fed announcements, and NFP reports create price spikes of 20-40 ticks in ES that frequently reverse within 60-120 seconds. The HMA catches the spike immediately (low lag) and generates a strong direction change signal, then reverses again as price snaps back to pre-release levels. The net result: two consecutive false signals in 2 minutes, each loss compounding the previous one.
The mechanical filter: implement a news blackout window — no HMA signal entries within 3 minutes before or 5 minutes after any scheduled macro release on the economic calendar. This is non-negotiable. The blackout costs 2-4 lost opportunities per week; it protects against the 1-2 per month where a news spike would cause outsized damage.
Failure Scenario 3: Low-Volume Thin Market Periods
In ES, the periods from 8:30 CT to 9:00 CT (pre-open) and after 3:00 PM CT (late-afternoon session thinning) feature reduced order book depth and erratic price movement that looks directional but isn't. The HMA's responsiveness becomes a liability here — each bid/ask spread jump reads as momentum. Volume confirmation (below-average volume = disqualify the signal) handles this automatically if applied consistently.
Failure Scenario 4: Counter-Trend Whipsaws
Even during trending sessions, the HMA generates occasional counter-trend signals — bars where a brief retracement causes the fast HMA to flip direction before resuming the primary trend. These whipsaws are unavoidable. The mitigation is the slow HMA filter: if HMA(21) is still green during a brief HMA(9) flip to red, the slow HMA is telling you the primary trend is intact. Wait for HMA(9) to return green before re-entering rather than trading the brief counter-signal.
Concept Hierarchy: When Multiple Signals Conflict
The amplification effect was observed early in the community. @nanobiotech noted that three HMAs at Period=1 with different displacements "creates a lot of line noise when chop is happening" — a direct observation that HMA speed amplifies noise rather than filtering it in low-momentum environments. The same property that makes HMA fast in trends makes it loud in chop.
When HMA(9) and HMA(21) point in opposite directions — fast up while slow is down, or vice versa — there is no setup. This is alignment failure, and the disagreement itself tells you the market is in transition. Wait for full alignment before entering. Ignoring this rule is the single most common implementation mistake.
When HMA signals conflict with session type, session type wins. An HMA slope change in a confirmed balance session is noise. The session type classification is the higher-order framework — it overrides individual signal quality.
When HMA signals conflict with major structural levels (value area edges, POC, PDH/PDL), the structural level takes precedence on the initial test. An HMA long signal at the bottom of the value area carries more weight than an HMA long signal in the middle of a range. HMA confirms setups at structural levels; structural levels provide the context for HMA signals to have meaning.
Practical Application in Futures Markets #
Period selection is the most consequential implementation decision and the area where the NexusFi community has produced the most tested, practical guidance over two decades of use.
Period Selection by Instrument and Timeframe:
ES (3-minute chart): HMA(9) for timing, HMA(21) for direction. The 3-minute chart sees approximately 130 bars per RTH session, giving these periods enough data points to be statistically meaningful without being so long that the indicator becomes slow relative to ES's volatility profile.
CL (5-minute chart): HMA(14) and HMA(34) work better for crude oil's choppier intraday pattern. The larger periods reduce false signals during CL's tendency to pause and consolidate in tight ranges between directional moves. CL is at the core a news-driven instrument, so the news blackout rule is especially important.
Longer-Period Applications:
@JDNeeman's multi-MA framework on a 13-range chart of crude oil uses an HMA at period 208 as a "magnet line" — a dynamic level that price is attracted to during pullbacks in a trending environment. This is a different use case than directional signaling: the HMA is used as a structure element rather than a trigger, with price touching and reversing from the long-period HMA as the entry setup. This approach requires no short-period HMA counterpart — the single long-period HMA defines the trend environment that price moves within.
Platform Implementation Notes:
NinjaTrader: HMA is built into the default indicator library. The standard implementation supports automatic color coding by slope direction. One critical implementation detail: verify your platform compares the current HMA value to the prior bar's value (HMA[0] vs HMA[1]) for the color direction signal — some older NinjaTrader implementations use a fixed lookback that creates slight visual lag in the color change.
Sierra Chart: HMA is available as a built-in study with a reliable implementation consistent with Hull's original formula. Sierra Chart's tick-by-tick recalculation is important for day trading — the HMA values update with each new tick, giving you current information rather than waiting for bar close.
TradingView: Multiple HMA scripts exist in the public Pine Script library. Before trusting a community script, verify it uses the sqrt period for the final smoothing step and not a fixed period or the same period as the input. Some implementations approximate the formula without matching it precisely.
Combining HMA with Volume and Order Flow #
The HMA is entirely price-based — it knows nothing about whether buyers or sellers are initiating the price movement it's tracking. This is the most significant limitation relative to order flow tools: the HMA can reflect price moving up whether that move is driven by aggressive buying or by a vacuum of sellers. Volume and delta distinguish between these cases and determine whether the momentum the HMA is tracking is sustainable.
HMA + Volume (Baseline Integration)
Require above-average volume on the bar where the HMA slope changes direction. "Above average" is defined as: volume on the setup bar exceeds the 20-bar exponential moving average of volume. Signals with below-average volume are low-conviction and should be either sized at 50% of normal position or skipped entirely.
This single filter eliminates a significant portion of HMA false signals. The reason it works: genuine momentum shifts attract participation. When trend changes, volume increases as the new direction attracts buyers or sellers. False signals from noise — where the HMA is responding to a random price spike rather than a genuine shift — are characterized by low volume. The volume requirement is a proxy for whether the market is genuinely participating in the direction change.
HMA + CVD (Advanced Integration)
Cumulative Volume Delta (CVD) shows whether net buying or selling pressure is building over the session. During a legitimate uptrend, positive CVD should be building — more contracts trading on the offer than on the bid. When the HMA(9) turns green, check CVD: if CVD is rising simultaneously, the signal has order flow confirmation. If CVD is flat or declining while price rises and the HMA turns green, the HMA signal is suspect — price is moving up without commensurate buying, which creates elevated reversal risk.
The four-state integration framework: (1) HMA green + CVD rising = full-size long. (2) HMA green + CVD flat = half-size long. (3) HMA green + CVD declining = no trade, watch for potential HMA reversal. (4) HMA red + CVD falling = full-size short (and vice versa for the opposite direction).
Knowledge Map
Prerequisites
Understand these firstGo Deeper
Build on this knowledgeReferences This Article
Articles that build on this topicCitations
- — 4Hull MA Crossover System - 25 wins, 1 loss (2011) 👍 25“Bullish Entry: 8 hull MA hooks up AND 8 hull MA > 55 hull MA AND 55 hull MA hooks up AND confluence with candlestick support/resistance.”
- — 4Hull MA Crossover System - 25 wins, 1 loss (2020) 👍 2“I use Hull MA9 and HULL MA21 (and volume of course), no other indicators. The 21 to remind me of the bigger trend, the 9 is used for entries.”
- — APEX 300K+: The Journey (2023) 👍 2“The moving averages I use are two Hull Moving Averages and one Weighted Moving Average -- one HMA[21] for the Close, another HMA[21] for the Open, and a Weighted Moving Average of the HMA[Close] as trend indicator / Stop Loss.”
- — Building Blocks of a Trading System (1) - Trend Filter (2010) 👍 22“My current favourites are zerolagging moving averages...comparing two moving averages therefore basically means measuring momentum, just corrected for random price movement.”
- — Moving Averages - How do you use them? (2011) 👍 10“HMA: Hull Moving Average -- one of 26+ moving average types available to the futures trader, each with different lag and smoothness characteristics.”
- — 4Hull MA Crossover System - 25 wins, 1 loss (2012) 👍 2“The Hull MA is quite smooth and makes a reasonable trend proxy, especially in longer average lengths (100-500). Because of the way it is calculated, it turns fairly quickly even with a long length.”
- — Crude Oil trading (2012) 👍 3“I use WMA, HMA and EMA combination of periods. HMA @ 208 as the Trigger or Magnet Line -- price is attracted to it during pullbacks.”
- — Moving averages types : to lag or not to lag (2024) 👍 2“You can reduce the lag, but then the average tends to get whippier. If there is no lag at all, you just have price.”
- — EasyLanguage ZeroLagWMA indicator (2010) 👍 5“ZeroLagWMA: zero lag weighted moving average. The building block concept behind Hull's more sophisticated implementation.”
- — The Scalper's Journey (2017) 👍 12
- — Detecting chop (2009) 👍 3
