Order flow
Also written footprint chart
The stream of individual trade prints and order book updates from a venue, as opposed to prices summarised into bars. Footprint, volume profile and time-and-sales displays are all renderings of it, and they need three things underneath: prints with size, a side for each print, and depth updates. Only the first two arrive as data, and the side is usually inferred.
How it works
A bar chart throws away the sequence. Order flow is what is left when you do not: each print with its price and size in the order it happened, and each change to the resting orders at each price level. Everything the category sells on top of that is a rendering choice. A footprint or cluster chart splits each bar's volume into buys and sells at each price; a volume profile stacks total traded size by price over a period; a depth-and-sales ladder or DOM shows the resting book beside the tape.
Three inputs sit under all of them, and they are not equally available.
Prints with size. Straightforward, and the cheapest part. NYSE's Daily TAQ client specification dated 3 March 2026 gives the scale for the consolidated market: one trading day of US equity trades is about 2.4 GB across 69 million records, quotes 38 GB across 1.9 billion. Sizes come with the print.
Depth. Not on the consolidated tape at all. It is an order-level product bought from each venue. Nasdaq's TotalView-ITCH specification is the clearest published example of the shape: an Add Order message carries a Buy/Sell Indicator — "B" for a buy order, "S" for a sell — along with shares, symbol and price, and the book is maintained by applying the execute, cancel, delete and replace messages that follow. Resting orders have sides, because an order has one by construction.
The side of a trade. This is the one that is not in the data, and it is the load-bearing input for a footprint. In the same Nasdaq specification, the Trade (Non-Cross) message exists only to report matches involving non-displayable order types, because no Add Order message was published for them; executions against displayed orders arrive as Order Executed messages instead, and the spec says a complete view of non-cross executions requires combining both kinds. And the Buy/Sell Indicator on that trade message is explicitly useless for this purpose: effective 14 July 2014 "this field will always be 'B' regardless of the resting side". So the feed tells you a trade happened, at a price, for a size. Whether the aggressor was buying or selling is something a platform works out by comparing the print against the quote it believes was standing at that instant.
There is a fourth detail that changes totals rather than sides. The same specification warns that executions marked non-printable should be ignored in time-and-sales displays and volume calculations to prevent double counting, and that cross volume arrives as one bulk print. Two platforms that make different decisions there produce different numbers from the same feed while both being defensible.
Why the same chart disagrees between providers
Four independent reasons, none of them a bug:
- Which venues. A footprint built on one exchange's book is that exchange. A US equity trades across many, and there is no consolidated depth to fall back on.
- How the aggressor is inferred. Print versus bid and ask, with rules for midpoint prints, and a dependency on whose quote and whose clock.
- How trade and quote streams are aligned. Timestamp source and resolution decide which quote a print is compared against. Tick data covers that field and why it is the one that decides whether a dataset can answer a sequence question at all.
- Which prints are counted. Condition codes, non-printable executions, crosses and late reports.
Futures are the asset class where these platforms are most at home, and it is not a coincidence: a futures contract trades on one venue with one book, which removes the first reason entirely.
Why it matters here
The practical consequence for reading a card is that the software and the data are two purchases, and the card price is usually the first one. Platforms in charting and screeners that lead on footprint and DOM tools — Bookmap, ATAS, Exocharts, Jigsaw Trading, Sierra Chart — connect to a feed or a broker and the entitlement travels with that connection, not with the licence. Check which venues a connection actually includes before comparing two monthly prices.
Two further checks. First, live depth is non-display use once a program reads it, and it is priced per firm rather than per screen: non-display use is the distinction, and what real-time market data costs is the stack it sits in. Second, historical order flow is a different product from historical bars and orders of magnitude larger, which is why replaying a footprint over last year is a storage problem before it is a data problem — storing tick data is the background, and the consolidated tape entry explains why the cheap national feed cannot supply the depth half of this at all.
Where you will meet this
The cards where this changes a decision, then the rest that use the word.
Sources
- Nasdaq TotalView-ITCH 5.0 specification — Nasdaq, . Version 5.0 is the specification this URL still serves, and its own change log records no revision after this date.
- Daily TAQ Client Specifications, version 4.3 — New York Stock Exchange,
FAQ
Why do two platforms draw a different footprint for the same minute?
Because the side of each print is not published and each platform infers it. Comparing the trade price against the prevailing bid and ask is the usual method, and it depends on which quote the platform had, how it timestamps the two streams, and what it does with prints at the midpoint or out of sequence. Different venue coverage moves the totals again.
Why is the data a separate subscription from the software?
Because these displays need venue data rather than the consolidated tape, and a venue's own feed is licensed by that venue. The software vendor sells a renderer and a connection; the exchange or the redistributor sells the entitlement behind it. That is why an order-flow platform's price page and its data page list different numbers, and both are part of the bill.
Updated