On This Page
Key Takeaways
- Lee-Ready classifies trades using the quote midpoint, then uses a tick comparison for midpoint ties.
- Prices above the matched midpoint receive +1; prices below it receive −1.
- At the midpoint, compare with the most recent earlier trade at a different price.
- Multiply each classification by its trade size, then add the results to calculate signed volume.
- The worked three-print sequence produces −1,000 signed shares from 2,800 total shares.
What is the Lee-Ready algorithm?
The Lee-Ready algorithm is a trade classification rule that combines a quote comparison with a tick comparison to classify completed trades as buyer or seller initiated. Charles Lee and Mark Ready introduced it in 1991. The output assigns a positive or negative sign that can be multiplied by trade size and accumulated through an interval.
How the Lee-Ready quote rule works
Calculate the midpoint of the matched bid and offer. A trade above that midpoint receives +1; a trade below it receives −1.
With a $40.10 bid and $40.14 ask, the midpoint is $40.12. A $40.13 print receives +1 even though it is inside the spread. The algorithm’s midpoint comparison and a literal execution at the ask are separate price conditions.
Formula
D = +1 when P > M; D = −1 when P < M. When P = M, compare P with the most recent earlier different trade price: higher gives +1 and lower gives −1.- P is the trade price and M is the midpoint of the matched bid and offer.
- D is the buyer-classified (+1) or seller-classified (−1) sign.
- A midpoint print without an earlier different price remains unclassified.
- Signed volume equals the sum of D × trade size.
- The original 1991 implementation matched trades with quotes at least five seconds earlier.
Worked Example
Three consecutive prints arrive in XYZ. The quote matched to each print is $40.10 bid and $40.14 offer, giving a $40.12 midpoint. The first print is 900 shares at $40.14, the second is 1,500 at $40.12 and the third is 400 at $40.11.
- Midpoint: ($40.10 + $40.14) / 2 = $40.12
- Print 1: 900 shares at $40.14. Because $40.14 > $40.12 the quote rule assigns D = +1, contributing +900 shares.
- Print 2: 1,500 shares at $40.12. The price equals the midpoint, so the tick rule compares it with the last different trade price of $40.14. That price was higher, so D = −1, contributing −1,500 shares.
- Print 3: 400 shares at $40.11. Because $40.11 < $40.12 the quote rule assigns D = −1, contributing −400 shares.
- Signed volume: +900 − 1,500 − 400 = −1,000 shares on 2,800 shares of raw volume.
The quote rule signs the first trade +900 and the third −400. The midpoint tie uses the prior $40.14 trade to sign the second −1,500. Their sum is −1,000 signed shares from 2,800 total shares.
How the tick rule resolves midpoint trades
For a trade exactly at the midpoint, find the most recent earlier trade at a different price. A higher current price gives +1, and a lower current price gives −1. A tie without the required earlier price remains unclassified.
The original implementation used quotes at least five seconds earlier to address the reporting sequence in its historical data. The matched quote supplies the midpoint for each trade.
Lee-Ready example: signing three trades
All three example trades use the $40.12 matched midpoint. The 900-share trade at $40.14 contributes +900. The 1,500-share midpoint trade follows a different price of $40.14, so its downtick contributes −1,500. The 400-share trade at $40.11 contributes −400.
The signed total is −1,000 shares and the raw volume is 2,800. The grid shows exactly which comparison produces each contribution.
Trade initiation and the seller’s position describe different features of the execution. A short seller can rest an offer that an incoming buyer executes against. The trade is then buyer initiated while the seller establishes short exposure.
The same side-of-quote reading applies to option prints, which options flow compares by execution price, size, strike and expiration.
Limitations of the Lee-Ready algorithm
- Signed volume is a read of who crossed the spread, built from prices and quotes. Some trades get the wrong sign, so weigh large signed totals over single prints.
- Match each trade to the quote in force when it printed. A stale or mismatched quote moves the midpoint and misclassifies the trades near it; the original five-second lag addressed the reporting sequence in its historical data.
- Count unclassified trades separately. A midpoint trade without an earlier different price gets no sign.
- Separate above-midpoint prints from at-the-ask prints. A $40.13 print inside a $40.10 by $40.14 spread classifies as a buy without touching the ask.
- The sign reads who crossed the spread, and the position story sits elsewhere: a buyer-initiated trade that lifts a short seller’s resting offer opens a short on the other side.
Bottom line
The Lee-Ready algorithm signs trades as buyer or seller initiated, using the quote midpoint first and the tick test for midpoint ties. Use it to build signed volume from trade data, match each trade with the correct quote, and treat the result as an estimate of who crossed the spread rather than who opened or closed a position.
Clear answers
Frequently Asked Questions
Sources and Further Reading
- Lee and Ready: Inferring Trade Direction from Intraday Data
- Chakrabarty, Moulton and Shkilko: Short Sales, Long Sales and Lee-Ready Revisited
- Holden and Jacobsen: Liquidity Measurement Problems
How entries are sourced, calculated and updated: editorial methodology.