Measuring a window of trades
Consider one synthetic stock on one venue over a 60-second window: strictly after the start time and up to and including the end time. Assume the corrected, complete tape contains only the four continuous-trading executions below, each with a known aggressor. Quantities are shares, counted once per execution.
| Seconds after start | Aggressor | Executed shares | Signed shares |
|---|---|---|---|
| 1 | Buyer | 70 | +70 |
| 2 | Seller | 30 | −30 |
| 3 | Buyer | 50 | +50 |
| 4 | Seller | 50 | −50 |
Here shares and shares. Total executed volume is shares, signed volume is shares, and
Buyer-initiated executions account for 60% of this window's volume. They account for only half its trade count: there are two prints on each side. Counting prints and weighting them by size answer different questions. One aggressive order matching several resting orders can also produce several prints.
The value is a signed volume ratio. It is neither a 20% probability of a price increase nor a forecast return. Even the 60% buyer-initiated volume share is a description of the observed window, not the probability that the next trade will be a buy or that the next price move will be upward.
Executed flow and order-book events
Displayed bid-versus-ask depth imbalance is different again: it compares resting quantities at an instant, rather than activity over a window. Before comparing two charts labelled “order flow,” check whether each uses executions, quote events or book snapshots, and whether its units are shares, contracts, currency value or counts.
What the sign can tell you
Prefer a reliable feed-supplied aggressor field when available, and read its convention. Some feeds explicitly identify trades with no aggressor; CME's Trade Summary specification provides one such example. Auction or otherwise unclassified activity should have a declared separate treatment. If unknown signs are excluded, report the excluded volume and describe the ratio as conditional on classified trades. Do not silently put unknown volume into the denominator while presenting the result as the formula above.
When direction is inferred from price changes or quotes, it is an estimate. A buyer can take an offer after the whole market has moved down; an uptick/downtick classifier can then get the aggressor wrong. Quote timing, corrections and duplicate records also matter.
With positive classified volume, lies between and . Equal buyer- and seller-initiated volumes give zero; exclusively buyer-initiated volume gives , and exclusively seller-initiated volume gives . With no classified volume, the ratio is undefined. A zero value and a missing observation are different states.
Persistent positive flow may reflect a large order split into smaller pieces, shared public information or other behaviour. It does not establish informed trading or a causal market impact. A price-response model needs its own horizon, data and validation. A feature calculated over a completed window becomes available at the window's end, not its start.
Sources
- Cont, Kukanov and Stoikov, The Price Impact of Order Book Events, arXiv version 3 (2011), §§2.1 and 4.1, pp. 3–4 and 16: distinguishes best-quote order-flow imbalance from signed trade volume.
- CME Group, Smart Stream Websockets — Trade Summary, aggressorSide field: an exchange-specific example of BUY, SELL and no-aggressor classifications.
- Rishi K. Narang, Inside the Black Box, 2nd edition, Wiley (2013), Chapter 7, “Aggressive versus Passive,” pp. 120–122: liquidity-taking, passive execution and marketable limit orders.
- Marcos López de Prado, Advances in Financial Machine Learning, Wiley (2018), §§19.3.1 and 19.6.5: trade-sign estimation and persistence of signed flow.