The first time you load a footprint chart, you get about four hundred numbers where a candle used to be. Somewhere in there is the record of who actually moved the market. Probably.
Most traders read the first bar wrong. Take a hypothetical row showing 1,200 on the buy column against 400 on the sell column. The instinct is to conclude “more buyers than sellers.” That conclusion is impossible. Every contract that trades has a buyer and a seller. One to one. Always.
Two camps have formed around this. One treats the footprint chart as an X-ray of institutional activity. The other calls it a coloured record of trades that already happened. Both camps are looking at the same object, and both are half right.
Here is the framing that survives contact with a live chart. A footprint chart does not show you who was buying. It shows you which side was impatient enough to cross the spread and pay for immediacy. That is a smaller claim than the marketing around order flow suggests. It is also a far more usable one.
This article covers what the chart is made of, how to read it in a fixed order, and the three settings that make your footprint different from the footprint the trader next to you is looking at.
A standard candle gives you four price points and one volume number. Open, high, low, close, total volume. Everything about the distribution inside that bar is discarded.
A footprint chart keeps the distribution. It splits each bar vertically into price rows and displays the volume that traded at every row, split into two columns.
Flowdeck’s order flow guide describes the construction as “splitting each bar vertically into price rows and showing the bid volume and ask volume that traded at each row.”
The split between the two columns comes from one rule: which side of the spread the trade executed on.
A trade filled at the ask is classified as an aggressive buy — someone lifted the offer. A trade filled at the bid is classified as an aggressive sell — someone hit the bid.
That is the whole mechanism. The footprint measures aggression, not ownership. Passive orders sitting in the book get counted on the opposite side from the trader who placed them.
From that split, two derived numbers follow: delta (ask volume minus bid volume, calculated per price row and per bar) and cumulative delta (the running total of bar delta across a session).
Reading order matters. Traders who start at the imbalances and work backwards end up interpreting artefacts of their own settings.
The same bar produces three different footprints depending on how volume gets classified. Our NinjaTrader FootPrint OrderFlow Indicator exposes three methods, and every serious order flow tool exposes something similar: UpDownTick (volume accumulates based on up ticks versus down ticks), BidAsk (volume accumulates based on whether orders filled at the ask or at the bid), and MinuteBased (volume accumulates based on the direction of the 1-minute bar).
BidAsk is the method most traders assume they are looking at. In NinjaTrader 8 it requires Tick Replay. Per the NinjaTrader help guide, “Tick replay is a property that can be optionally enabled on NinjaScript indicators and strategies which will ensure that the market data (bid/ask/last) that went into building a bar is loaded in the exact sequence of market data events.”
The same page carries the cost: “This property implies that more PC resources are used to calculate your indicators and strategies and as a result will lead to a performance impact.”
Without Tick Replay and a data feed that carries the sequence, your historical footprint is a reconstruction, not a recording. It will still draw. It will not be the same chart.
Each row gives you two numbers. Sell volume on the left, buy volume on the right, in the standard layout.
Read them as a pair. A hypothetical row showing 90 x 850 tells you that at that price, aggressive buyers took roughly nine times the volume that aggressive sellers did. It does not tell you the price went up. Price can stall flat on exactly that row, which is the more informative case.
Bar delta answers one question: which side paid for immediacy inside this bar. Cumulative delta answers a slower one: which side has been paying for immediacy across the session.
The condition worth marking is the disagreement. Price makes a new session high, cumulative delta does not. Aggressive buyers are still paying up, and price is no longer rewarding them. Something is filling those orders passively. That is a structural condition to note, not an instruction to act.
If you want cumulative delta as its own study rather than as a footprint statistic, the NinjaTrader Cumulative Volume Delta (CVD) Indicator plots it separately.
An imbalance marks a row where one side traded far past the other. The threshold is a setting, not a fact of the market.
Quantower’s write-up on footprint imbalances puts the mechanics plainly: “Set it to 3 and Quantower highlights every level where one side traded more than 300% past the other.” The same article notes that traders “settle somewhere around 200-300% and tune from there.”
Two comparison methods exist, and they answer different questions. Horizontal: buy volume at a price compared against sell volume at the same price. Diagonal: buy volume at the ask compared against sell volume at the bid one level below, and the mirror for sells. Quantower’s stated reason for the diagonal method is that “the spread doesn’t distort the read.”
Diagonal is the more common default in futures order flow work because a resting bid and a resting offer never occupy the same price.
A single imbalanced row is noise most of the time. Consecutive ones are not.
Quantower defines a stack as “several imbalances on the same side across consecutive price levels — a zone where buyers, or sellers, pushed hard and repeatedly to get filled.”
The zone itself is only half of it. What the market does when it comes back matters more. Per the same source: “If price slices back through the stack, the aggression was genuine and momentum carries. If it stalls against the stack instead, you’re usually seeing absorption.”
That is the part most footprint tutorials skip. Drawing the zone is trivial. Tracking whether price broke it or stalled against it, bar after bar, is the work.
A footprint bar in isolation is a fact without a frame. Volume profile supplies the frame.
Per CQG’s documentation, the value area is defined to represent “70% of the TPOs”, and the Point of Control is “the price that has the maximum TPO during the specified time period.”
An imbalance stack sitting at the value area edge and an imbalance stack sitting on the POC are two different situations. Same pattern, different meaning. A standalone NinjaTrader Volume Profile Indicator covers this if your footprint tool does not have profile built in.
Save this one. It is the table that stops the most common misreads.
| What you see | What it literally means | What it does not mean |
|---|---|---|
| Buy column much larger than sell column | Aggressive buyers crossed the spread more at that price | More buyers than sellers exist |
| Large delta, price barely moved | Aggression met a passive counterparty of equal size | The move is confirmed |
| Delta near zero, price moved a lot | Thin book, little resting size to absorb | Nobody participated |
| Stacked imbalance zone | Repeated aggression across consecutive rows | A level that must hold |
| Price slices back through a stack | The earlier aggression was not defended on the retest | A directional condition on its own |
| Price stalls against a stack | Resting size is absorbing at that zone | Reversal confirmed |
| High volume row inside the bar | Most contracts changed hands at that price | The fair price of the instrument |
Two traders can open the same instrument, the same timeframe, the same session, and see different footprints. Not slightly different. Structurally different.
Three settings cause it. Calculation method: UpDownTick, BidAsk and MinuteBased classify the same trades by different rules. A row that shows a 4:1 imbalance under one method can show near parity under another. Neither is wrong. They are counting different things.
Tick aggregation: on instruments that move in fine increments, one price per row produces rows with three contracts each and no readable structure. Grouping multiple ticks per level fixes readability and changes every imbalance calculation in the bar, because the denominators change.
Historical reconstruction: if Tick Replay is off, or the feed does not carry the original sequence, the platform fills the bar in with what it has. Your backtest of a footprint pattern is then a backtest of the reconstruction, not of what traded.
None of this is a reason to skip footprint charts. It is a reason to stop treating the footprint as an objective readout and start treating it as a measurement instrument that you calibrate once and then keep constant.
Which turns the question from “how do I read a footprint chart” into something more concrete: do you know what your footprint is counting, and will it count the same way tomorrow, and can you see the imbalance zones tracked over time instead of redrawing them by eye every session.
That is a tooling problem, and it is the one we built around.
The NinjaTrader FootPrint OrderFlow Indicator displays bid and ask volume distribution at each price level within every bar, which per the product description provides “a more granular view of market activity than standard price candles.”
What it holds constant, and what it automates:
Two walkthroughs if you want to see it on a live chart before reading further: the NinjaTrader FootPrint Indicator overview and a short breakdown of the key functional components.
Not for you if:
You trade swing positions on daily bars — intrabar aggression is irrelevant at that holding period. Your instrument or feed does not deliver tick-by-tick data with the original sequence — a footprint built on aggregated data is a drawing, not a measurement. You are looking for a tool that decides for you — imbalance detection is a detected event, not a decision, and treating it as one is the fastest way to lose money with order flow. Your machine is already at its limit — Tick Replay costs resources, and NinjaTrader says so directly.
This article was interesting. Close the tab, do not spend €25 with us.
For you if:
You trade futures or index instruments intraday and already work with volume profile or delta, and want the intrabar layer underneath them. You want stacked imbalance zones tracked across sessions instead of redrawn by hand. You need the same classification method applied consistently, so that what you observed last month is comparable to what you observe today. You are building structured automation and need order flow conditions exposed as plots.
The NinjaTrader FootPrint OrderFlow Indicator is available on the all-products subscription at €25/month with a 5-day free trial, or as a lifetime licence at €225 one-time.
Need something custom built? We develop automation to order → NinjaTrader Developers
If you want the wider picture of how footprint, volume profile and delta tools fit together on one NinjaTrader workspace, we covered the full set in the NinjaTrader 8 volume indicators bundle.
Nordman Algorithms provides software infrastructure for trade automation and does not offer financial advice, trading signals, or managed trading services. This article is for informational and educational purposes only. Trading leveraged instruments such as Forex and CFDs carries a high level of risk and may not be suitable for all investors — only risk capital should be used. Full Risk Disclosure: https://www.nordman-algorithms.com/risk-disclosure/