Why Your Footprint Shows a Different Volume Than Your Broker (and Which Number to Trust)
Your footprint totals one number, the candle underneath it shows another, the broker DOM a third, and TradingView a fourth — all at the same instant, on the same contract. None of them is a bug. They are four correct answers to four slightly different questions, and this is how to tell which one your order flow should be built on.
Look at one contract, one instant. Your footprint column totals one number. The candle it sits on shows another. Your broker’s DOM has a running figure that agrees with neither, and TradingView in the next tab shows a fourth. Same symbol, same second.
None of them is broken. They are four correct answers to four slightly different questions, and the trouble only starts when you assume there is supposed to be one. This is where each number comes from, and which one your order flow should actually be built on.
The short version. There is no single "true" volume — there are several correct ones that measure different things. The one that matters for order flow is the tick-by-tick, aggressor-tagged count from the same feed that fills your orders, bounded by the same session your exchange uses. A prettier number from another feed is not more true; it is answering a different question. We deliberately reconcile our footprint to the figure your broker platform shows, because that is the one you already trust.
There is no "volume" — there are at least four
"Volume" is a single word doing four jobs. On a live order-flow screen you are usually looking at all four at once without noticing:
- Candle volume — every contract traded in that bar. If the bar was built tick-by-tick, this is a hard count. If it was built from a minute feed, it is whatever that feed reported for the minute.
- Footprint volume — the same contracts, but split into bid volume + ask volume per price. Add the two sides back up and you should land on the candle volume. When you don't, the split and the total came from different data paths — see the next section.
- DOM volume — a running tally the broker ladder keeps, often cumulative for the session and reset on the broker's own clock. It is a different accumulator, not a different market.
- Exchange / settlement volume — the official figure the exchange publishes for the trading session, after it reconciles spreads, blocks and corrections. It is the most authoritative and the least useful in real time, because it lands after the close.
Four numbers, four definitions. The mismatch you are staring at is almost always two of these being compared as if they were one.
The biggest gap is tick replay versus minute bars
This is the one that catches everyone, and it hides in your chart settings rather than your broker. A footprint needs, for every trade, which side was the aggressor — was it lifting the ask or hitting the bid. That information exists only in the individual trades. A one-minute bar has already thrown it away.
So a platform has two ways to draw a historical footprint:
- Replay the ticks — pull the individual trades, rebuild the bars, keep the real bid/ask split. Correct, heavy.
- Estimate from the minute bar — take OHLCV and guess how the volume split between bid and ask. Cheap, and wrong at exactly the moments you care about (absorption, a violent one-sided push).
The setting that decides it, on NinjaTrader. A footprint is only honest on a tick-based series with Tick Replay enabled — for example a 100 Tick series, not a 1 Minute one, with Tick Replay switched on in the data settings. Leave Tick Replay off and your historical delta is an estimate; the further back you scroll, the more it drifts from what actually traded. Live bars are already tick-by-tick, which is why the mismatch tends to appear only on the historical part of the chart.
This is also why our bridge reads NinjaTrader's own tick stream rather than a rebuilt minute feed: the trades it hands us already carry the aggressor side, so there is nothing to estimate. If you want the mechanics of why that feed is missing entirely on some accounts, that is a separate entitlement problem.
The session boundary decides the daily total
Two platforms can count the exact same trades and still print a different daily volume, because they disagree on when the day starts. Futures do not run on your calendar. A CME equity-index contract trades almost around the clock, and the exchange trading day rolls at 17:00 Central Time — the session runs 17:00 to 16:00 CT with a maintenance break in between. The volume the exchange attributes to a day is the volume of that session.
A platform that resets its daily counter at local midnight, or at 00:00 UTC, or at the equity cash open, is summing a different window of the same tape. Nobody miscounted; they drew the day's edges in different places. Before you trust any "daily volume" comparison, check that both tools cut the session at 17:00 CT — most order-flow mismatches at the day level are this and nothing else.
Two feeds rarely agree to the single trade
Even tick-by-tick, on the same session, two correct feeds can differ by a handful of contracts. The tape is not as singular as it looks:
- Different vendors, same exchange. Rithmic, CQG and a broker's native feed all carry CME data, but they timestamp, batch and occasionally consolidate prints differently. The differences are small, and they are real.
- Spread and implied trades. A calendar-spread leg or an implied-in trade can be counted by one feed and suppressed by another. On a roll day this alone moves the total.
- Filtered ticks. Some feeds collapse several fills at one price and timestamp into a single print. Fewer prints, same contracts — but a footprint that counts prints instead of size will read differently.
Crypto is the same problem wearing a different hat. There the question is not the session but which venues are consolidated: a Binance-only tape and a multi-exchange tape are both correct and will never match, because they are not watching the same market.
Which number to trust
For order flow, the useful volume is the one your decisions are actually built from: the tick-by-tick, aggressor-tagged count from your execution feed, cut on the same session your exchange uses. That is the volume your cumulative delta and your footprint imbalances are derived from. A tidier figure from a delayed, consolidated, calendar-day feed is not more accurate — it is answering a question you are not trading.
This is a deliberate choice on our side, and worth naming plainly: we reconcile our footprint's daily volume to the number your broker platform shows — the NinjaTrader figure, when you run the bridge — rather than to some abstract "canonical" total. Not because that number is the one true volume, but because it is the one you already read a hundred times a day. A footprint that disagrees with the ladder next to it makes you doubt the tool, even when the tool is right. Agreement, here, is a feature.
If you want the wider operational picture — feeds, entitlements, what a funded account changes — the pillar of this cluster is order flow on a prop-firm account.
Nothing here is financial advice. Feed behaviour, session times and platform settings change — verify against your own broker and data vendor before relying on any of this.
Frequently asked questions
- Why is my footprint volume different from the candle volume?
- It usually is not — a footprint total is bid volume plus ask volume, which should equal the candle’s total volume when both are built from the same ticks. When they disagree, one of them was not built tick-by-tick: a footprint reconstructed from real trades will not match a candle whose volume came from a minute feed that estimated the bid/ask split. Same chart, two different data paths.
- Why does NinjaTrader show a different volume than TradingView?
- Because they are not measuring the same thing. NinjaTrader counts the trades on your actual execution feed (Rithmic, CQG or the broker’s own), bounded by the exchange trading day. TradingView shows a consolidated, often delayed, sometimes exchange-of-record feed on a calendar-day boundary. For futures both numbers can be internally correct and still differ — different feed, different session, different filtering of spread and block trades.
- Which volume is the correct one?
- For order flow, the one you can act on: the tick-by-tick, aggressor-tagged count from the same feed that fills your orders, cut on the same session boundary your broker uses. That is the volume your absorption and delta are actually built from. A cleaner-looking number from a different feed is not more true — it is answering a different question.
- Does Tick Replay change my volume?
- On historical bars, yes — and that is the point. Without Tick Replay, a platform rebuilds past bars from minute data and estimates the bid/ask split, so your historical delta and footprint are approximations. With Tick Replay on a tick-based series, the platform replays the individual trades and rebuilds the exact split. Live bars are already tick-by-tick; it is the history that changes.
Order Flow on a Prop-Firm Account: What Actually Works on Apex, Topstep and 4PropTrader
The rules, the feeds and the drawdown maths nobody writes about because they trade their own money.
Rithmic Historical Data: What You Can Actually Backfill, and Why Your Chart Is Empty
rp_code 13, tick replay vs volume profile, and what each prop firm actually pays for.