Footprint chart bid ask imbalance explained: how diagonal and horizontal calculations work, and where they fail
How footprint imbalances are calculated: diagonal vs horizontal bid ask comparison, threshold ratios, minimum volume filters, and the limits that can make an imbalance meaningless.

What a bid ask imbalance actually measures
A footprint bid ask imbalance is a ratio between aggressive buying and aggressive selling at neighboring price levels. When one side's executed volume exceeds the other by a set multiple, called the imbalance threshold, the cell gets flagged. Most platforms compare diagonally by default: ask volume at one price against bid volume one tick below, because that pairing matches how the order book is quoted.
This article covers the math behind that flag, how the comparison method and threshold change the result, and the situations where an imbalance tells you very little. If you want the general basics of reading cells, delta and price levels first, start with how to read a footprint chart.
Get professional chartbooks for Sierra Chart
DOM, footprint, heatmap and market profile setups, installed in seconds. Our trading courses cover the method behind them.
“Chartbooks are superb, I save a lot of time! Thanks for these quality products.”
The two numbers in every footprint cell
Each price row in a footprint shows two volumes:
- Bid volume: contracts that traded at the bid, meaning a market sell order hit a resting buy order.
- Ask volume: contracts that traded at the ask, meaning a market buy order lifted a resting sell order.
An imbalance calculation never looks at total volume alone. It always compares one of these sides against another. The question is which cells get compared, and that is where the methods differ.
Horizontal vs diagonal bid ask comparison
Horizontal comparison
The horizontal method compares bid and ask volume at the same price. If ES printed 60 at the bid and 210 at the ask at 5012.25, the ask side is 3.5 times the bid side.
The problem is timing. A given price is usually the best bid at some moments and the best ask at others. Bid volume at 5012.25 accumulated while 5012.25 was the bid, and ask volume at 5012.25 accumulated while it was the ask, typically when the market was one tick lower. The two numbers describe different quote states, so comparing them directly mixes situations.
Diagonal imbalance
The diagonal method compares volumes that coexisted in the same quote. When the inside market is 5012.00 bid and 5012.25 ask, an aggressive buyer trades at 5012.25 and an aggressive seller trades at 5012.00. So:
- Buy imbalance at price P: ask volume at P compared with bid volume at P minus one tick.
- Sell imbalance at price P: bid volume at P compared with ask volume at P plus one tick.
This is why most order flow traders prefer diagonal imbalance. It pits buyers against sellers who were competing in the same spread. The configuration side in Sierra Chart is covered separately in Sierra Chart diagonal imbalance settings; here we focus on what the numbers mean.
The imbalance threshold
The imbalance threshold is the ratio the dominant side must reach. It is usually expressed as a percentage:
- 200% means the dominant side is at least 2 times the opposite side.
- 300% means at least 3 times.
- 400% means at least 4 times.
The formula for a diagonal buy imbalance is simply: ask volume at P divided by bid volume at P minus one tick, multiplied by 100. If the result is at or above the threshold, the cell is flagged. Check your platform's documentation for whether the comparison uses "greater than" or "greater than or equal to", because a ratio landing exactly on 300% will flip depending on that detail.
There is no correct universal value. A lower threshold flags more cells and produces noise; a higher one flags fewer and can miss moderate pressure. Many traders start around 300% and adjust per instrument, but treat any number as a starting point to test, not a rule.
A worked example on ES
ES has a tick size of 0.25. Here is one bar with five rows:
| Price | Bid volume | Ask volume |
|---|---|---|
| 5012.50 | 40 | 35 |
| 5012.25 | 60 | 210 |
| 5012.00 | 55 | 180 |
| 5011.75 | 45 | 90 |
| 5011.50 | 25 | 20 |
With a 300% threshold, diagonal buy comparisons give:
- 5012.50: ask 35 vs bid 60 at 5012.25, ratio 58%. No imbalance.
- 5012.25: ask 210 vs bid 55 at 5012.00, ratio 382%. Buy imbalance.
- 5012.00: ask 180 vs bid 45 at 5011.75, ratio 400%. Buy imbalance.
- 5011.75: ask 90 vs bid 25 at 5011.50, ratio 360%. Buy imbalance.
- 5011.50: no row below inside this bar, so no diagonal buy comparison is possible.
The horizontal method on the same bar flags 5012.25 (350%) and 5012.00 (327%), but not 5011.75 (90 vs 45, 200%). Same data, different method, two flags instead of three.
Now add a minimum volume filter of 100 contracts on the dominant side. The 5011.75 cell, with only 90 at the ask, drops out of the diagonal result. Three consecutive diagonal imbalances, often called a stacked imbalance, become two. The market did not change; only your settings did.
This is the core point: an imbalance is not an objective event. It is the output of a method, a threshold and a filter you chose.
Edge cases in the calculation
Zero volume on the opposite side
If ask volume at P is 12 and bid volume one tick below is 0, the ratio is mathematically undefined. Platforms handle this differently: some treat it as an infinite imbalance, some ignore it, some apply a minimum volume rule. Twelve contracts against zero is not meaningful pressure on ES, which is why a minimum volume filter matters. Check how your study treats zero values before trusting those flags.
Top and bottom of the bar
The lowest row has no bid row below it for a diagonal buy comparison, and the highest row has no ask row above it for a diagonal sell comparison. Extremes of a bar are often exactly where traders look for exhaustion, yet the diagonal method has less information there.
Price row grouping
If you combine several ticks into one row, for example 4 ticks per row on NQ (tick size 0.25, so 1.00 point per row), the "one level below" in the comparison becomes one row below, not one tick below. The diagonal logic no longer matches the actual inside quote. Imbalance counts on grouped rows are not comparable to tick level counts.
Limitations you should keep in mind
Imbalances show executed aggression, not intent
A flagged cell says market buyers outtraded market sellers in that pairing. It says nothing about resting limit orders that absorbed them, or about orders pulled before they traded. A buy imbalance at a high followed by no further progress can reflect absorption by passive sellers. For resting liquidity you need depth of market data, which the footprint alone does not show.
Bar construction changes every number
A 1-minute, 5-minute or range bar footprint slices the same trades differently. A stacked imbalance on a 5-minute bar may not exist on 1-minute bars, because volume that was summed in one cell gets split. Compare imbalances only across charts built the same way.
Data granularity
Bid and ask attribution requires tick by tick data. If your historical data was stored at a coarser time unit, trades get aggregated and bid ask splits can be wrong or missing, which corrupts every ratio. In Sierra Chart, footprints are built with the Numbers Bars study and need Global Settings >> Data/Trade Service Settings >> Intraday Data Storage Time Unit set to 1 tick. See the Sierra Chart Numbers Bars documentation and the tick by tick data configuration page, plus our guide on footprint tick data requirements.
Instrument context
The same threshold behaves differently across markets. ES usually trades large size per level, so a 300% ratio on small volumes during a quiet overnight session may mean little. CL, with a 0.01 tick, spreads volume across many more price levels, so individual cells are thinner and ratios swing more easily. Adjust the minimum volume filter per instrument and session.
Spot EURUSD is a special case. Spot forex has no centralized exchange volume, so a retail feed's bid ask split is not a true record of aggression across the market. If you want footprint imbalances on the euro, use the CME Euro FX futures contract (6E), where trades are exchange reported.
A practical checklist before trusting an imbalance
- Confirm your data is tick by tick and the footprint cells are populated historically.
- Know which comparison your study uses: diagonal or horizontal.
- Write down your threshold and whether it uses greater than or greater than or equal.
- Set a minimum volume filter that fits the instrument and session.
- Keep rows at one tick if you want the diagonal logic to match the real quote.
- Read imbalances alongside location (prior highs, value area edges) and what price does next, never alone.
If you would rather start from a Numbers Bars layout with bid ask volume, delta and imbalance highlighting already configured, a Sierra Chart footprint chartbook saves the setup time, and you can still adjust threshold and filter values to the instrument you trade. The full list of available study inputs is in the Sierra Chart studies reference.
Conclusion
A footprint imbalance is a ratio, not a signal. Diagonal comparison pairs ask volume at a price with bid volume one tick below because those trades happened in the same quote, which makes it more coherent than horizontal comparison. The threshold and minimum volume filter decide what gets flagged, and edge cases like zero volume, bar extremes, row grouping and coarse data can make flags misleading. Learn the calculation, keep your settings consistent, and use imbalances as one piece of context.
FAQ
Is a stacked imbalance more reliable than a single one?
It shows aggression persisted over several consecutive levels, which is more information than one isolated cell. It is still sensitive to your threshold and volume filter, as the worked example shows, so it is not reliable by itself.
Should I use the same imbalance threshold on ES and NQ?
Not necessarily. Both have a 0.25 tick, but they trade different contract sizes per level. Review a few sessions with the same threshold and adjust the minimum volume filter so flags do not appear on trivial volume.
Do imbalances repaint during a live bar?
The values update as trades print until the bar closes, so a cell can be flagged and then unflagged as the opposite side catches up. Only closed bars have final imbalance values.
Can I use footprint imbalances in an automated strategy?
In principle, if your platform exposes the values to a study or script. The same limitations apply, and you would need to backtest on genuine tick data to know whether the logic has any value.
For ready-to-open footprint, DOM and market profile workspaces, browse the Sierra Chart chartbooks at SierraOnShop.
Set this up in Sierra Chart in seconds
Written by
Clement
Futures trader for more than seven years, specialized in order book and order flow scalping on US index futures, now building automated strategies. Founder of SierraOnShop.
More about the authorRead the order flow with the right tools
Start with a professional Sierra Chart chartbook, or learn the method with our trading courses.
“Just received the footprint chartbook. Installation took 30 seconds, works perfectly on Sierra 2800.”