A footprint chart splits each price level inside a bar into the contracts traded at the bid, where a seller crossed the spread, and at the ask, where a buyer crossed it; delta is ask volume minus bid volume, and cumulative delta is its running total. Both rest on each trade's aggressor side (the side whose order crossed the spread to trade against a resting limit order), which platforms do not all obtain the same way: the same eight illustrative ES trades below give a bar delta of +13 from CME's aggressor flag and -15 from a tick rule.
A footprint chart shows bid and ask volume at each price in a bar; delta is ask minus bid volume and cumulative delta is its running sum, a record of who crossed the spread rather than who is informed or who will win. Accurate delta needs a feed and platform that use the exchange's aggressor flag, because inferred classifications can flip the sign of delta on identical trades.
What is a footprint chart?
A footprint chart replaces each candle body with a ladder of cells, one per price, each reading bid volume x ask volume for the bar: the left number sums contracts where a seller hit the bid, the right number those where a buyer lifted the offer. The ladder can sit on time, tick or volume bars, compared in tick charts vs time charts.
A volume profile totals a session's trades by price without separating buyers from sellers, and neither chart shows resting orders that never traded; those sit in the order book covered in our Level 1 vs Level 2 guide and order flow and DOM explainer.
How does CME record the aggressor side of a trade?
CME Group records the aggressor side in its MDP 3.0 market data feed, in tag 5797 AggressorSide of the Trade Summary message, where 1 means buy, 2 means sell and 0 means no aggressor. CME's Trade Summary documentation defines the field: "Indicates which side is aggressor of the trade. If there is a zero value present, then there is no aggressor." The matching engine knows which incoming order crossed the spread, so the flag is the exchange's record, not an estimate.
Trade #1 of the example below arrives as price 5000.50, size 12, AggressorSide 1, and a footprint adds those 12 contracts to the ask column of the 5000.50 cell.
Some trades have no aggressor. CME states: "Trades without aggressors occur at Market Open, after a Pre-Open or after a Pause, and also when the event includes customer order participation in a trade with a CME Globex-generated implied bid or offer." Each platform must leave those trades out of delta or assign them a side by a fallback rule, so two charts can disagree from the opening match onward.
How are delta and cumulative delta calculated?
Delta is buy-aggressor (ask) volume minus sell-aggressor (bid) volume, computed per price, per bar or per trade, and cumulative delta is the running sum of delta, usually restarted each session. The eight trades below are illustrative E-mini S&P 500 (ES) prints inside one bar, on the contract's 0.25-point tick grid, with the previous trade at 5000.25 and the book shown as it stood just before each trade.
| Trade | Price | Size | Book before trade (bid x ask) | CME aggressor flag | Running delta |
|---|---|---|---|---|---|
| #1 | 5000.50 | 12 | 5000.25 x 5000.50 | Buy | +12 |
| #2 | 5000.50 | 8 | 5000.25 x 5000.50 | Buy | +20 |
| #3 | 5000.50 | 4 | 5000.50 x 5000.75 | Sell | +16 |
| #4 | 5000.75 | 10 | 5000.50 x 5000.75 | Buy | +26 |
| #5 | 5000.50 | 15 | 5000.50 x 5000.75 | Sell | +11 |
| #6 | 5000.50 | 9 | 5000.50 x 5000.75 | Sell | +2 |
| #7 | 5000.50 | 18 | 5000.25 x 5000.50 | Buy | +20 |
| #8 | 5000.25 | 7 | 5000.25 x 5000.50 | Sell | +13 |
Grouped by price, the eight trades form three footprint cells: 0 x 10 at 5000.75, 28 x 38 at 5000.50 (4 + 15 + 9 sold into the bid, 12 + 8 + 18 bought from the ask) and 7 x 0 at 5000.25. The bar traded 83 contracts, 35 at the bid and 48 at the ask, so bar delta is 48 - 35 = +13, and an illustrative session cumulative delta of +250 at the bar's open ends the bar at +263. Price opened at 5000.50, reached 5000.75 and closed on the low, 5000.25.
Why is delta different on different platforms?
Delta can differ between platforms because some use the exchange's aggressor flag while others infer each trade's side, and inference gets a share of trades wrong; session reset times and the handling of trades without an aggressor add further differences. The tick test calls a trade a buy if it prints above the previous trade, or at the same price after an uptick, and a sell in the mirror case. The quote rule calls a trade above the bid-ask midpoint a buy and below it a sell, which on a one-tick ES spread means at the ask or at the bid. Lee and Ready (1991), who combined the two, documented two problems with quote-based methods: "quotes may be recorded ahead of trades that triggered them, and trades inside the spread are not readily classifiable."
Run the tick test over the same eight trades and two labels flip. Trade #3 (4 lots) prints at 5000.50 after an uptick, so the tick test calls it a buy, although the book had moved to 5000.50 x 5000.75 and a seller hit the new bid. Trade #7 (18 lots) prints at 5000.50 after a downtick, so the tick test calls it a sell, although sellers had lowered the offer to 5000.50 and a buyer lifted it. The tick-rule running delta goes +12, +20, +24, +34, +19, +10, -8, -15.
| Same eight trades | CME aggressor flag | Tick rule |
|---|---|---|
| 5000.75 cell (bid x ask, level delta) | 0 x 10 (+10) | 0 x 10 (+10) |
| 5000.50 cell | 28 x 38 (+10) | 42 x 24 (-18) |
| 5000.25 cell | 7 x 0 (-7) | 7 x 0 (-7) |
| Bar total (bid x ask) | 35 x 48 | 49 x 34 |
| Bar delta | +13 | -15 |
| Session cumulative delta (from illustrative +250) | +263 | +235 |
Two of eight trades, 22 of 83 contracts (26.5%), are misclassified, and the bar's delta changes sign. The 28-contract gap equals 2 x (18 - 4), because each wrong label moves a trade from one side to the other. A quote rule matches the exchange flag when its book is in sync, and gives exactly the tick rule's 49 x 34 and -15 when its quote lags one trade behind: #3 is then read against the old 5000.25 x 5000.50 book and #7 against the old 5000.50 x 5000.75 book. Lee and Ready's version of the problem runs the other way, a quote stamped ahead of the trade that triggered it, and fails for the same reason: the rule reads a book the trade never met.
Published tests on real trades with known direction find inferred rules wrong on roughly one trade in five. Using Nasdaq stock data, Ellis, Michaely and O'Hara (2000) report: "We find that the quote rule, the tick rule, and the Lee and Ready (1991) rule correctly classify 76.4%, 77.66%, and 81.05% of the trades, respectively." Those are stock-market rates, not ES ones. For E-mini S&P 500 futures, Andersen and Bondarenko (2015) built an accurate classification from quotes and trades and found that bulk volume classification, which splits a bar's volume by the size and direction of its price change, "is inferior to a standard tick rule". On that evidence, a delta estimated from bar price changes sits further from the exchange's record than a trade-by-trade tick rule.
Trade aggregation changes print counts, not delta. CME describes its trade size field as "Consolidated trade quantity" and can attach per-order fill detail, so trade #7 can reach a chart as one 18-lot print or, had it filled against three resting 6-lot offers, as three 6-lot prints. Delta is +18 either way, since one aggressing order made every fill, but a 10-lot large-trade filter flags the trade only in the bundled version.
How do you read a footprint chart?
Traders read footprints through conventions such as absorption and diagonal imbalance, which describe the data and are not tested laws.
Absorption is heavy aggressive volume at a price that fails to push price through it, read as passive limit orders taking the other side. The exchange-flag version of the example bar fits: buyers lifted 48 contracts, yet the bar closed on its low with delta +13. The tick-rule version shows -15 and reads as sellers driving the drop, so the diagnosis depends on how the platform classified two trades.
Diagonal imbalance compares the two sides across one tick. Sierra Chart's Numbers Bars documentation describes its diagonal comparison this way: "The Bid Volume at one price level is compared diagonally to the Ask Volume at the next higher price level." With a one-tick spread, the bid at one price and the offer one tick above form a single quote, so the diagonal compares the two sides of the same market. When the ratio passes a threshold the trader sets, such as 3:1 (300%), the cell is highlighted, and several on adjacent prices form a stacked imbalance.
The threshold turns a small classification change into a different signal. Under the exchange flag, 38 contracts at the ask at 5000.50 against 7 at the bid at 5000.25 is 5.43:1, a buy imbalance, while 28 at the bid at 5000.50 against 10 at the ask at 5000.75 is 2.8:1, below the line. Under the tick rule the buy side is 24 against 7, or 3.43:1, still an imbalance, and the sell side is 42 against 10, or 4.2:1: a sell imbalance at 5000.50 that exists only on the tick-rule chart. The threshold is a user setting rather than a standard, and we found no peer-reviewed evidence that stacked imbalances predict price.
Does positive delta mean price will go up?
No. Positive delta means buyers crossed the spread for more contracts than sellers did, and each of those contracts had a seller on the other side; a large passive seller appears in delta only as the counterparty to buyers' trades, and can be the better-informed party.
Delta divergence is price and cumulative delta disagreeing at a swing high or low. In five illustrative bars, highs run 5001.00, 5002.50, 5001.75, 5003.00 and 5003.25 while bar deltas run +120, +150, -90, +40 and -10, so cumulative delta reads +120, +270, +180, +220, +210. Price makes a higher high (5003.25 against 5002.50) while cumulative delta makes a lower high (220 and 210 against 270), the pattern traders call bearish delta divergence. We found no peer-reviewed study showing that it predicts reversals in futures.
Trades are only part of what moves price over short intervals. Studying 50 US stocks, Cont, Kukanov and Stoikov (2014) found that short-interval price changes are driven mainly by order flow imbalance at the best bid and ask, a measure that counts limit orders and cancellations as well as trades, and that "the relation between price changes and trade volume is found to be noisy and less robust than the one based on order flow imbalance."
Do footprint charts give traders an edge?
Footprint charts add resolution, not edge: they split the volume a candle already reports by price and by aggressor, and every conventional reading of that split is a hypothesis. Buying absorption at a prior low, fading a divergence or trading the first stacked imbalance each needs an out-of-sample test with commissions and slippage on tick-level history, classified the same way as the live chart. A rule backtested on exchange-flag data and traded on a tick-rule chart is a different rule, as the 4.2:1 sell imbalance shows.
A trade copier is not the answer to reading order flow: the read happens on the charting platform and its feed, and a copier such as Thor (this blog's own product) only replicates the resulting orders from one master account to others. A copier earns its place once a tested method runs on several funded accounts.
Which data feed do you need for footprint charts?
You need a feed that carries the exchange's aggressor flag and a platform that uses it. Sierra Chart's Numbers Bars documentation ranks the flag first among its bid and ask rules: "If this is supported, this is the most accurate determination." It names CME Group, EUREX, NASDAQ TotalView and CFE data from its Denali Exchange Data Feed as the cases where the flag is used, and adds: "This method is not used with CQG." Without the flag, Sierra Chart falls back to comparing the trade price with the bid and ask, then to tick direction (see our Sierra Chart guide).
Check how your own platform classifies trades, through its delta setting and its feed's documentation, before comparing numbers across charts; our futures data feed comparison and NinjaTrader vs Quantower guide cover the options. A conflated feed, one that batches quote updates, can hand any quote-based rule a stale book: the lagging-quote case that turned +13 into -15 above.
Go deeper
- Order Flow and the DOM Explained: Reading Futures at the Tape Level
- Volume Profile for Futures: POC, Value Area and What the Shape Actually Tells You
- Best Futures Data Feeds Compared (2026)
- Tick Data vs Bar Data: What "Historical Data" Actually Means When You Backtest
Frequently asked questions
Is cumulative volume delta (CVD) the same as cumulative delta?
Yes. Cumulative volume delta (CVD) is another name for the running total of buy-aggressor minus sell-aggressor volume. The label says nothing about method, so check whether a given CVD uses the exchange flag, a tick rule or estimates from bars.
Does the Lee-Ready algorithm fix the tick rule's errors on ES?
No; on ES it usually becomes the quote rule. Lee-Ready applies the tick test only to trades at the spread midpoint, and when the ES spread is one tick no trade can print there, so every trade is judged against the bid and ask and inherits the quote rule's timing risk.
Is order-flow delta related to an option's delta?
No. Order-flow delta counts buy-aggressor minus sell-aggressor contracts, while an option's delta measures how much the option's price changes for a one-point move in the underlying. The two share a name and nothing else.
Can a footprint chart show iceberg orders?
Not directly. A footprint records traded volume, not displayed size, so spotting an iceberg (a resting order that shows only part of its size and refills) needs the depth of market beside it; fills at one price that exceed any size displayed there are the usual tell.
Do footprint charts work for forex and CFDs?
Only partially. Spot forex and CFDs trade over the counter, with no central exchange trade record carrying an aggressor flag, so a footprint there reflects one broker's or venue's flow or inferred sides. CME currency futures do carry the flag.
What does a zero on one side of a footprint cell mean?
Every contract at that price traded with the same aggressor during the bar. Some traders call a zero at a bar's extreme price a finished auction and volume on both sides there an unfinished one, a reading convention rather than a tested signal.
Do copied trades show up in the footprint?
Only when they reach the exchange. A copied market order routed to CME trades like any other and counts as aggressor volume, while orders on simulated accounts, which most prop-firm evaluations use, never reach the exchange and never print.
What are footprint charts called on other platforms?
The names vary. Sierra Chart calls the display Numbers Bars, and other platforms use names such as cluster charts or volumetric bars for the same bid x ask cell.
Sources
- CME Group (accessed September 2026), MDP 3.0 - Market Data Incremental Refresh - Trade Summary, CME Group Client Systems Wiki
- Lee and Ready (1991), Inferring Trade Direction from Intraday Data, Journal of Finance 46(2), 733-746
- Ellis, Michaely and O'Hara (2000), The Accuracy of Trade Classification Rules: Evidence from Nasdaq, Journal of Financial and Quantitative Analysis 35(4), 529-551
- Andersen and Bondarenko (2015), Assessing Measures of Order Flow Toxicity and Early Warning Signals for Market Turbulence, Review of Finance 19(1), 1-54
- Sierra Chart (accessed September 2026), Numbers Bars, Sierra Chart documentation
- Cont, Kukanov and Stoikov (2014), The Price Impact of Order Book Events, Journal of Financial Econometrics 12(1), 47-88