NYSE Imbalance Messages: How to Read Them
NYSE imbalance messages explained: what paired shares and the unmatched imbalance actually mean, and how the indicative clearing price is computed.
NYSE imbalance messages are the exchange's running preview of its own auction. Before the closing bell NYSE publishes a small record, refreshed at least once a second, that says how many shares already have a match, how many do not, which side the unmatched shares sit on, and where the auction would price if it ran at that instant. Vendors rename those fields and sell the feed. The quantities underneath are defined by exchange rule, and every one of them is explainable in plain English.
What is a NYSE imbalance message?
An auction gathers every order that wants to trade at a single price and crosses them together at that price. NYSE runs one at the open and one at 4:00 p.m. ET. The 4:00 p.m. version, the closing auction, sets the official closing price quoted everywhere.
An imbalance is the leftover. If 900,000 shares want to buy at the close and 700,000 want to sell, 700,000 pair off and 200,000 buy shares have nobody to trade with.
A message carries four things worth knowing.
- Paired quantity: the volume that already matches and would trade. 700,000 in the example above. Some feeds abbreviate it to
p. - Imbalance quantity and its side: 200,000, buy. Some feeds abbreviate the quantity to
o. Quoted without a side it means nothing. - Indicative clearing price: where the auction would print if it ran at this instant, meaning the price that maximizes paired volume.
- Book clearing price (
b) and auction time (at): the price at which the unmatched shares would meet enough opposite interest to fill, and the moment the auction is scheduled to run.
Field names vary by vendor. The definitions come from the exchange and do not.
How to read the three numbers: a worked example
The order book below is invented for teaching. Say it holds 20,000 shares of market-on-close buy interest and 5,000 of market-on-close sell interest, orders that trade at whatever price the auction sets. Alongside them sit limit-on-close orders. Buyers: 10,000 at $50.10, 15,000 at $50.05, 20,000 at $50.00, 5,000 at $49.95. Sellers: 8,000 at $49.95, 12,000 at $50.00, 6,000 at $50.05, 30,000 at $50.10.
Walk the price ladder. At each candidate price, total everyone willing to buy at that price or higher, total everyone willing to sell at that price or lower, and the smaller number is what can actually trade.
- At $49.95: 70,000 would buy, 13,000 would sell. Paired 13,000, imbalance 57,000 buy.
- At $50.00: 65,000 would buy, 25,000 would sell. Paired 25,000, imbalance 40,000 buy.
- At $50.05: 45,000 would buy, 31,000 would sell. Paired 31,000, imbalance 14,000 buy.
- At $50.10: 30,000 would buy, 61,000 would sell. Paired 30,000, imbalance 31,000 sell.
The most that can cross is 31,000 shares, at $50.05. That is the indicative clearing price, the paired quantity is 31,000, and the imbalance is 14,000 shares to buy. Move a nickel higher to $50.10 and the imbalance flips to the sell side, which makes $50.10 the level where those 14,000 unmatched buy shares would finally meet enough sellers.
Notice what changed between step 3 and step 4. Nothing about the company, nothing about the orders. Only the price the book is measured at. Every quantity in an imbalance message is a function of that price, which is why the message publishes the price next to the shares.
When does NYSE publish closing auction imbalance data?
There are two publications, and confusing them is the most common mistake.
From 2:00 p.m. ET the exchange makes closing auction imbalance information available to Floor brokers: total imbalance and its side, paired quantity, and unpaired quantity and its side. That early view is informational, and its audience is narrow.
At 3:50 p.m. ET the mandatory publication begins. Under NYSE Rule 7.35 that moment is the Closing Auction Imbalance Freeze Time, and three things happen together. Imbalance information starts going out publicly and updates at least every second through to the bell. The ordinary entry window for market-on-close and limit-on-close orders shuts. NYSE also evaluates whether the imbalance is large enough to carry a Significant Closing Imbalance flag, a dynamic calculation that replaced the older fixed 500 round lot Regulatory Imbalance threshold in October 2024.
Between 3:50 p.m. and 4:00 p.m., MOC and LOC orders may still arrive, but only on the side that offsets the published imbalance. From 3:50 p.m. to 3:58 p.m. existing MOC and LOC orders may be cancelled or cut in size only to correct a genuine error. The auction runs at 4:00 p.m.
Two caveats matter more than the times themselves. First, these are exchange rules, and exchange rules move: NYSE filed amendments touching Rules 7.31, 7.35 and 7.35B as recently as August 2026. Take the schedule from NYSE's own auction fact sheet rather than a vendor blog post, and re-check it yearly. Second, the opening auction runs on a different clock, with entry deadlines covered in MOC and MOO order cutoff times.
How much volume runs through the closing auction
Why any of this matters comes down to size. The panel below takes six NYSE listed household names across July 2026 and asks what share of each session's volume printed in the 09:30 minute and what share printed in the 16:00 minute. Those are the minutes where the opening and closing auction prints land when the source stamps them there.
In JPM the closing minute carried 2.66% of regular session volume, the largest share of the six, against 3.32% in the opening minute. That is one minute out of the 391 in a regular session carrying several times what an average minute carries, which is what makes a 3:50 p.m. imbalance in a large cap worth watching.
The other end of the panel is a lesson in reading data rather than reading markets. XOM shows 0% in the 16:00 minute: this minute bar source carries no volume stamped inside that minute for it at all. A zero there describes how the print was recorded, not a session that closed without an auction. Check how a feed timestamps the closing print before you read any closing-minute share off it.
What the tape does across the imbalance window
The imbalance publication lands inside the busiest stretch of the session. This panel averages one of those names, Coca-Cola, into five minute buckets from 3:00 p.m. ET through the close, over the same July 2026 sessions.
The exact SQL behind every number
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 5 MINUTE), '%H:%i') AS et_time,
round(toFloat64(sum(volume))
/ countDistinct(toDate(toTimeZone(window_start, 'America/New_York')))
/ 1000, 1) AS avg_shares_k
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'KO'
AND window_start >= '2026-07-01'
AND window_start < '2026-08-01'
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 900
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 965
GROUP BY et_time
ORDER BY et_timeThe 15:00 bucket averaged 136.3 thousand shares. The final bucket, 16:00, averaged 260.2 thousand. The step up coincides with the mandatory publication at 3:50 p.m. and with the auction print itself. Volume behaves the opposite way in the middle of the day, a pattern measured in why trading volume dies at midday.
Why a published imbalance keeps changing
Here is what vendor tutorials tend to undersell. The 3:50 p.m. imbalance describes a book that still has ten minutes of orders coming into it. Offsetting interest arrives precisely to work against a published imbalance, d-Quote orders can be entered and updated after the MOC cutoff, and the indicative price is recomputed continuously until the cross.
You can size that gap without any imbalance feed. Compare the price at 3:50 p.m. with the official closing price for the same session.
The exact SQL behind every number
SELECT
d.sym AS ticker,
round(quantileDeterministic(0.5)(abs(d.official_close / m.px_1550 - 1) * 10000,
toUInt64(toUnixTimestamp(d.session_date))), 1) AS median_move_bps,
round(max(abs(d.official_close / m.px_1550 - 1) * 10000), 1) AS largest_move_bps
FROM
(
SELECT
ticker AS sym,
date AS session_date,
max(toFloat64(close)) AS official_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('JNJ', 'JPM', 'KO', 'PG', 'WMT', 'XOM')
AND date >= '2026-07-01'
AND date < '2026-08-01'
GROUP BY sym, session_date
) AS d
INNER JOIN
(
SELECT
ticker AS sym,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
max(toFloat64(close)) AS px_1550
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('JNJ', 'JPM', 'KO', 'PG', 'WMT', 'XOM')
AND window_start >= '2026-07-01'
AND window_start < '2026-08-01'
AND toHour(toTimeZone(window_start, 'America/New_York')) = 15
AND toMinute(toTimeZone(window_start, 'America/New_York')) = 50
GROUP BY sym, session_date
) AS m ON m.sym = d.sym AND m.session_date = d.session_date
GROUP BY d.sym
ORDER BY median_move_bps DESCA basis point is one hundredth of one percent. Across July 2026 the median gap between the 3:50 p.m. price and the official close ran from 11.9 basis points in WMT up to 23 in XOM, the widest of the six. The largest single session gap for XOM across the month reached 42.7 basis points.
Size is one question. Direction is another, and it sits much closer to a coin flip.
The exact SQL behind every number
SELECT
d.sym AS ticker,
round(100 * countIf(d.official_close > m.px_1550) / count(), 1) AS pct_closed_higher,
round(100 * countIf(abs(d.official_close / m.px_1550 - 1) * 10000 > 10) / count(), 1) AS pct_moved_over_10bps
FROM
(
SELECT
ticker AS sym,
date AS session_date,
max(toFloat64(close)) AS official_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('JNJ', 'JPM', 'KO', 'PG', 'WMT', 'XOM')
AND date >= '2026-07-01'
AND date < '2026-08-01'
GROUP BY sym, session_date
) AS d
INNER JOIN
(
SELECT
ticker AS sym,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
max(toFloat64(close)) AS px_1550
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('JNJ', 'JPM', 'KO', 'PG', 'WMT', 'XOM')
AND window_start >= '2026-07-01'
AND window_start < '2026-08-01'
AND toHour(toTimeZone(window_start, 'America/New_York')) = 15
AND toMinute(toTimeZone(window_start, 'America/New_York')) = 50
GROUP BY sym, session_date
) AS m ON m.sym = d.sym AND m.session_date = d.session_date
GROUP BY d.sym
ORDER BY pct_closed_higher DESCThe share of July 2026 sessions that closed above their own 3:50 p.m. price ranged from 31.8% in WMT to 68.2% in PG. In PG the move over that final stretch cleared 10 basis points in 72.7% of sessions. Read a published imbalance as a description of the book at one second, and expect it to be revised.
Where imbalance messages sit in a market data feed
An imbalance message is its own message type on the exchange's proprietary feed, separate from the top of book quote and from depth of book updates. A retail platform showing you a bid and an ask will usually show nothing at all at 3:50 p.m. The gap between those tiers of data is the subject of Level 1 vs Level 2 market data.
FAQ
What does the imbalance quantity in a NYSE imbalance message mean?
It is the number of shares in the closing auction book with no matching order on the other side at the indicative clearing price, published together with a side. A 200,000 share buy imbalance means 200,000 more shares want to buy at the close than to sell.
What time does NYSE publish closing auction imbalance information?
Public dissemination begins at 3:50 p.m. ET, the Closing Auction Imbalance Freeze Time, and updates at least every second until the 4:00 p.m. auction. A narrower informational view is available to Floor brokers from 2:00 p.m. These times are set by exchange rule and amended periodically, so confirm them against NYSE's published schedule.
What is the difference between paired quantity and imbalance quantity?
Paired quantity is the volume that already has a match and would trade in the auction. Imbalance quantity is the unmatched remainder. Add the two together and you have the total interest sitting on the heavier side of the book.
Does a buy imbalance mean a stock will close higher?
No. An imbalance describes the book at one instant, and offsetting orders keep arriving until the auction runs. The panels above show prices between 3:50 p.m. and the close moving in both directions across the sessions measured.
How these panels are built
- The regular session is defined by ET clock time rather than a hardcoded bell: minute of day 570 through 960, covering 09:30 through the 16:00 print, which is 391 one minute bars.
- A 0.00 in the closing-minute column means the minute bar source holds no volume stamped inside the 16:00 minute for that name. The panel prints the source as it stands rather than patching it.
- All four panels are pinned to July 2026 sessions, so the figures stay put as new data arrives.
- The 3:50 p.m. reference price is the close of that session's 15:50 one minute bar. The official close comes from the daily record for the same date.
- Gaps are measured in absolute terms, so an up move and a down move of the same size count equally.
Every panel here ships with the SQL that produced it, so open one and the arithmetic is in front of you. To run the same questions over different NYSE listed names or a different month, ask them in plain English on the Strasmore terminal.