# Order flow

Also written footprint chart.

*https://stockmarketstack.com/glossary/order-flow · next to Stock Charting Platforms & Screeners*

**Definition:** 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](https://stockmarketstack.com/glossary/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](https://stockmarketstack.com/categories/charting-screeners) that lead on footprint and DOM tools —
[Bookmap](https://stockmarketstack.com/tools/bookmap), [ATAS](https://stockmarketstack.com/tools/atas), [Exocharts](https://stockmarketstack.com/tools/exocharts),
[Jigsaw Trading](https://stockmarketstack.com/tools/jigsaw-trading), [Sierra Chart](https://stockmarketstack.com/tools/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](https://stockmarketstack.com/glossary/non-display-use) is the distinction, and
[what real-time market data costs](https://stockmarketstack.com/guides/real-time-market-data-fees) 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](https://stockmarketstack.com/guides/storing-tick-data) is the background, and the
[consolidated tape](https://stockmarketstack.com/glossary/consolidated-tape) entry explains why the cheap national feed cannot
supply the depth half of this at all.

## Where you will meet this

- [Bookmap](https://stockmarketstack.com/tools/bookmap.md)
- [ATAS](https://stockmarketstack.com/tools/atas.md)
- [Exocharts](https://stockmarketstack.com/tools/exocharts.md)
- [Jigsaw daytradr](https://stockmarketstack.com/tools/jigsaw-trading.md)
- [Sierra Chart](https://stockmarketstack.com/tools/sierra-chart.md)
- [Quantower](https://stockmarketstack.com/tools/quantower.md)
- [NinjaTrader](https://stockmarketstack.com/tools/ninjatrader.md)
- [MotiveWave](https://stockmarketstack.com/tools/motivewave.md)
- [TradingView](https://stockmarketstack.com/tools/tradingview.md)
- [TrendSpider](https://stockmarketstack.com/tools/trendspider.md)

## 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.

## Sources

1. [Nasdaq TotalView-ITCH 5.0 specification](https://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/NQTVITCHspecification.pdf) — Nasdaq, 2014-06-12. Version 5.0 is the specification this URL still serves, and its own change log records no revision after this date.
2. [Daily TAQ Client Specifications, version 4.3](https://www.nyse.com/publicdocs/nyse/data/Daily_TAQ_Client_Spec_v4.3.pdf) — New York Stock Exchange, 2026-03-03

*Last updated 2026-09-21. A reference page, corrected in place — not a dated post.*
