Pull a single day of time and sales for any active stock and you’ll get a tidy column of prints: a price, a size, a timestamp, sometimes a venue code. What you won’t get is the one thing you actually came for. Nowhere in that record does it say whether a buyer reached up to lift the offer or a seller leaned on the bid to get out. The tape shows you the transaction. It stays quiet on who forced it.
That missing column has a name. Trade sign classification is the step that assigns each transaction to a buyer-initiated or seller-initiated bucket when the trade record itself never states which side started the exchange. Almost every order-flow number you’ve ever read, from signed volume to imbalance, sits on top of that one inference. Get the sign wrong often enough and the elegant chart you built on top of it is measuring your rule, not the market.
What trade sign classification actually does
Start with the difference between an executed trade and a resting quote. A quote is an advertisement. A bid says someone’s willing to buy at that price; an offer says someone’s willing to sell. Those orders sit in the limit order book and wait. A trade is what happens when an incoming order stops waiting and takes the other side.
So the logic runs like this. A trade printed at or very near the offer usually means demand arrived and removed displayed selling liquidity. A trade at or near the bid usually means supply arrived and removed displayed buying liquidity. Calling the first buyer-initiated and the second seller-initiated is a claim about which side was the aggressor, the one who crossed the spread to get filled. The aggressor is the one who accepted the standing price instead of posting a new order and waiting in line.
The part that trips people up is what the label doesn’t cover. It describes pressure, which side removed liquidity. It says nothing about who was correct on the next move. A trade can be buyer-initiated and the price can slide ten cents a minute later. The aggressor paid up and got it wrong. Signing the trade tells you who pushed, and nothing about whether the push worked.
The quote rule, and the trades that split the spread
The most common method is the quote rule: compare the transaction price with the prevailing bid-ask spread at the moment of the fill. Say the quote’s 50.00 bid, 50.02 offer. A print at 50.02 gets signed buyer-initiated. A print at 50.00 gets signed seller-initiated. That’s clean enough when trades land right on the quotes.
The trouble is the middle. A print at 50.01 sits exactly at the midpoint, and the quote rule has no answer, because neither side clearly crossed. The usual fix falls back to the direction of the last price change: if the previous move in price was up, the midpoint trade gets called a buy; if it was down, a sell. That tie-break is doing real work, and it’s a modeling choice rather than a reading off the tape. Push more of the day’s volume into that mid-spread zone, which happens whenever spreads widen, and a larger share of your signs come from the fallback instead of a clean comparison.
The first time I signed a day of prints by hand, I hit a run of eight trades at 50.01 while the quote sat 50.00 by 50.02 the entire time. Eight ambiguous fills back to back, and every one got its sign from a price change that had happened seconds earlier. The imbalance I wrote down for that minute was really a report on my tie-break, not on the crowd.
When the quote fails, the tick takes over
Sometimes you don’t have a trustworthy quote at all. Quote feeds lag, they drop, and for older or thinner data you may only have a stream of trade prices. That’s where tick-based rules step in. A tick rule signs a trade by the direction of the most recent price change: a print higher than the last different price is an uptick and gets called a buy, a print lower is a downtick and gets called a sell. When the price is flat, the rule looks back to the last change that wasn’t.
Picture four prints in a row with no usable quote: 50.00, then 50.01, then another at 50.01, then 50.00. The tick rule signs the second trade a buy, because it printed above the first. The third is flat, so it inherits the prior sign and stays a buy. The fourth prints lower and flips to a sell. Three signs, and two of them lean entirely on the neighbouring prints for their direction rather than on any read of who was leaning on the book.
Hybrid methods stitch the two together. They use the quote when it’s trustworthy and close in time to the fill, then drop to the tick when the quote’s stale or the trade sits mid-spread. Each method carries its own error pattern. Quote rules struggle when the quote is delayed relative to the trade; tick rules struggle in choppy, low-volume tape, where the last change is noise rather than pressure.
The data problems that quietly flip the sign
The rules sound clean on a whiteboard. Real market data is where they bend. A short list of what actually changes the answer:
- Locked quotes, where the bid equals the offer, and crossed quotes, where the bid sits above the offer. The midpoint logic breaks because there’s no spread to be inside of.
- Delayed quote updates, so the quote you match against isn’t the quote that existed when the trade really happened.
- Trades reported inside the spread, which force the tie-break to carry more weight than the direct comparison.
- Several executions stamped at one timestamp, where you have to decide whether that’s one aggressive order sweeping levels or many separate events.
- Fragmented venues, where the national best quote and the quote on the venue that actually printed the trade disagree.
None of these are edge cases you can wave off. I once re-signed the same hour of tape two ways, first matching each quote to the trade timestamp and then lagging the quotes by 200 milliseconds, and in several of the one-minute windows the imbalance flipped sign outright. Same trades, different clock, opposite conclusion. Those framing choices ripple straight into anything you build next, including constructions like tick-imbalance bars, where the bar boundary itself depends on the running sum of signs.
From signed prints to a flow picture
Once every trade carries a sign, the aggregation is the easy part. Add up buyer-initiated size and seller-initiated size over a window and you’ve got signed volume. Take the difference, scale it, and you’ve got an order-flow imbalance reading. Line those signed prints up in order and you can test persistence, whether an aggressive buyer tends to be followed by another, which is a very different question from how big the net lean was. Rebuild your bars around a fixed quantity of signed activity instead of clock time and you’re into event-time sampling.
Every one of those measures inherits the classification underneath it. A chart of signed flow is a picture of two things at once: how the market was built, and how a researcher chose to sign the tape. Change the tie-break, shift the timestamp alignment, trust a different venue, and the same raw trades can hand you a different imbalance. So before you line up a signed-flow result across two datasets or two studies, the first question worth asking is how the trades were signed in each. If the answers differ, you might be comparing methods rather than markets.
What signed flow cannot tell you
Trade-sign algorithms make mistakes, and they make the most of them exactly where the data is thinnest: sparse tape, asynchronous quotes, heavily aggregated prints. Accuracy that looks fine on a liquid large-cap can sag badly on a quiet name, which is the reverse of where most people assume the numbers get shaky.
There are harder limits too. A sign tells you which side removed displayed liquidity. It can’t tell you the trader’s intent, whether that fill was one leg of a hedge, a forced liquidation, or patient accumulation. It says nothing about hidden or iceberg size that never displayed. And it won’t hand you the full origin of a price move. The old tape readers knew this in their bones; when you read how Jesse Livermore read the tape, he was inferring pressure from prints and never pretending the tape labeled itself. A signed-flow statistic is an estimate of aggression, not a verdict on it.
That’s why a signed-flow number shouldn’t stand alone as a forecast or a trigger. A trader using order-flow imbalance might treat a sharp lean as one piece of context, weighed against price structure and the state of the book. Reading it as a self-contained signal to act mistakes a constructed label for a fact the market handed over. It never did.
Sign the tape before you trust the number
Signed order flow is one of the sharpest lenses in market microstructure, and one of the easiest to over-trust, because the number shows up looking finished. It looks like data. It’s really the output of a rule that you, or someone you never met, decided on. The discipline is holding both ideas at once: use the signed series, and keep asking what convention produced it.
When you know how a trade got its sign, you read every downstream imbalance, every persistence stat, every bar with the right amount of doubt. When you don’t, you’re trusting a stranger’s tie-break and calling it evidence. Learn the pattern. Ride the trend. Keep the gains.
Educational content only. Not investment advice. Trading involves risk. You are responsible for your decisions.
Get the free Market Wisdom e-book
Join Trends and Breakouts — historical winners, breakout studies, and risk lessons. No spam, unsubscribe anytime.
