Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-10-03

NYSE Closing Auction: How E E Work

Learn how NYSE closing auction set official close, DMM role, 3:50 p.m. MOC and LOC cutoff, 3:59:50 Closing D Orders, plus real closing print.

The NYSE closing auction na the single batch trade wey run shortly after 4:00 p.m. ET and set the official closing price for every NYSE-listed stock. A Designated Market Maker (DMM), the firm assigned to the stock, gather the on-close orders and the resting book, then print dem together for one price under NYSE Rule 7.35B. Na that auction print, no be the last trade for the continuous session, be the close for every daily bar wey use am.

Wetin be the NYSE closing auction?

Core Trading Hours for NYSE end at 4:00 p.m. ET. Instead make any trade wey happen last become the close, the exchange pool all closing interest and match am for one auction; wetin closing auction mean explain the general idea. Four order types dey exist only for this auction, and NYSE Rule 7.31(c)(2) define all of dem:

  • market-on-close (MOC) order dey execute only for the auction, at any price wey the auction set.
  • limit-on-close (LOC) order dey execute only for the auction, and only if the closing price dey at or better than its limit.
  • Closing IO order (Closing Offset, or CO, for NYSE own fact sheet) na limit order wey trade only against the opposite side of an imbalance. E dey behind every other order and no dey add to imbalance.
  • Closing D Order na limit order wey only Floor broker fit enter. E get an undisplayed discretionary price wey the order fit reach for the auction. NYSE parity and D-quote orders get the full mechanics.

Resting limit orders for NYSE book dey participate too. Verbal interest from Floor broker no dey count: Rule 7.35B(a)(1) require make closing orders enter electronically during Core Trading Hours.

Wetin DMM dey do for NYSE closing auction?

Nasdaq close na algorithm. NYSE close na firm wey get algorithm plus obligation. Rule 7.35B(a) make each DMM responsible for closing its securities as soon as possible after Core Trading Hours end, but e no suppose rush "unduly" when the likely closing price dey far from the last NYSE sale. Na this wording make NYSE closing prints show some seconds after 4:00:00 p.m., instead of exactly on the tick.

Rule 7.35B(c) allow DMM close stock electronically, wey be the normal process, or manually. The rule require manual close when the closing price or volume fall outside the parameters for electronic close. Either way, DMM get two obligations, as NYSE Regulatory Memo RM-26-03 (March 20, 2026) repeat: choose price wey satisfy every better-priced order for the side of the imbalance, and maintain fair and orderly market under Rule 104. DMM fit use its own capital to absorb imbalance wey no get matching order.

NYSE closing auction timeline: 3:50, 3:59:50, 4:00

Rulebook write each deadline as an offset from the scheduled end of Core Trading Hours. So, for 1:00 p.m. early-close day, the whole schedule move three hours earlier. For normal day, as of September 2026:

  • Before 3:50 p.m. Every type of on-close order fit enter, cancel or reduce freely. Floor brokers fit see the Total Imbalance and paired quantities from 2:00 p.m. under Rule 7.35B(e)(1)(B). DMM wey expect dislocated close fit publish Manual Closing Imbalance from 3:00 p.m. with Trading Official approval under Rule 7.35B(d)(2).
  • 3:50 p.m., the Closing Auction Imbalance Freeze Time (Rule 7.35(a)(8): ten minutes before scheduled close). MOC and LOC orders must don enter. From this point, new MOC or LOC order dey accepted only opposite a published Significant Closing Imbalance. If no imbalance publish, exchange reject am. No on-close order fit cancel or reduce after 3:50 p.m., even if na to correct genuine error. Older guides still talk about 3:58 p.m. error window, but current rule and March 2026 memo close that option at 3:50. The only exception na Rule 7.35B(j)(2)(B), wey only DMM fit invoke.
  • 3:50 p.m., the imbalance go public. Significant Closing Imbalance go the consolidated tape when e worth at least $200,000 and equal at least 30% of the stock's 20-day Average Closing Size for S&P 500 names, 50% for S&P 400 and S&P 600 names, or 70% for all other names under Rule 7.35B(d)(1). Full Closing Auction Imbalance Information start for NYSE proprietary feed at the same time. E refresh at least every second whenever e change, until the auction run, under Rule 7.35B(e). Closing D Orders count at their hidden price. NYSE imbalance messages explain each field.
  • 3:50 p.m. to 4:00 p.m. Closing IO orders still dey accepted for either side of the market and for any size.
  • 3:59:50 p.m. Exchange reject any new Closing D Order under Rule 7.35B(f)(3). Today, e also reject cancels and modifications from this time. Filing wey take effect August 13, 2026 (SR-NYSE-2026-36) go move the cancel cutoff to 3:59:00 p.m. once dem implement am. NYSE don talk say e go happen no later than first quarter of 2027.
  • 4:00 p.m. Core Trading Hours end and DMM start the close.

MOC and MOO cutoff times show the same deadlines across US exchanges.

Wetin the closing print look like for the tape

Na real close be this. The panel below group every KO trade, Coca-Cola, an NYSE-listed stock, by second. E cover ten seconds before the 4:00 p.m. bell on August 19, 2026 to thirty seconds after. Check the volume column.

QueryKO second by second: di last ten seconds of continuous trading and di closing auction (Aug 19, 2026)
ET timetrade countvolumelast pricelargest print conditions
15:59:5067416990.33[14,41]
15:59:5151340790.34[]
15:59:5266471490.35[]
15:59:5358790090.34[14,41]
15:59:54751522590.34[14,41]
15:59:55851580390.34[]
15:59:5643639190.34[14,41]
15:59:5738502290.38[14,41]
15:59:5832889090.36[]
15:59:59532024390.38[]
16:00:002339590.37[15]
16:00:0246449455690.35[8,41]
16:00:033995890.35[12]
16:00:048240790.35[12]
16:00:0511180490.35[12]
16:00:0911290.35[12,37]
16:00:11159103590.35[12,22]
16:00:2218931590.35[12,22,41]
16:00:25105974590.35[12,22,41]
The exact SQL behind every number
SELECT
    formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S') AS et_time,
    count()                                                                  AS trade_count,
    toUInt64(sum(size))                                                      AS volume,
    round(toFloat64(argMax(price, sip_timestamp)), 2)                        AS last_price,
    toString(argMax(conditions, size))                                       AS largest_print_conditions
FROM global_markets.stocks_trades
WHERE ticker = 'KO'
  AND sip_timestamp >= toDateTime('2026-08-19 19:59:50', 'UTC')
  AND sip_timestamp <  toDateTime('2026-08-19 20:00:30', 'UTC')
GROUP BY et_time
ORDER BY et_time
Run am yourself

Continuous trading for the final seconds na stream of small prints. The window get 19 seconds with at least one trade. Then one second carry print wey big pass everything around am by many orders of magnitude: na DMM auction. The last column show the condition codes on the biggest print for each second. Auction print carry close-specific code wey ordinary trades no get, and the dictionary further down explain am. The next panel show the two trades wey matter beside the close recorded for the daily bar.

QueryDi receipt: KO last continuous trade, e closing auction print, and di daily bar close (Aug 19, 2026)
last continuous time ETlast continuous pricelast continuous shareslast continuous conditionsclosing print time ETclosing print priceclosing print sharesclosing print shares wey person fit readclosing print conditionsofficial closeprint vs close gapprint vs last minute
15:59:5990.3873[37]16:00:0290.3521689752.17 million[8,41]90.3505.8
The exact SQL behind every number
WITH
    toDateTime('2026-08-19 20:00:00', 'UTC') AS bell,
    (
        SELECT round(toFloat64(any(close)), 2)
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'KO'
          AND date = toDate('2026-08-19')
    ) AS official_close
SELECT
    formatDateTime(toTimeZone(maxIf(sip_timestamp, sip_timestamp < bell), 'America/New_York'), '%H:%i:%S')          AS last_continuous_time_et,
    round(toFloat64(argMaxIf(price, sip_timestamp, sip_timestamp < bell)), 2)                                        AS last_continuous_price,
    toUInt64(argMaxIf(size, sip_timestamp, sip_timestamp < bell))                                                    AS last_continuous_shares,
    toString(argMaxIf(conditions, sip_timestamp, sip_timestamp < bell))                                              AS last_continuous_conditions,
    formatDateTime(toTimeZone(argMaxIf(sip_timestamp, size, sip_timestamp >= bell), 'America/New_York'), '%H:%i:%S') AS closing_print_time_et,
    round(toFloat64(argMaxIf(price, size, sip_timestamp >= bell)), 2)                                                AS closing_print_price,
    toUInt64(maxIf(size, sip_timestamp >= bell))                                                                     AS closing_print_shares,
    formatReadableQuantity(toFloat64(maxIf(size, sip_timestamp >= bell)))                                            AS closing_print_shares_readable,
    toString(argMaxIf(conditions, size, sip_timestamp >= bell))                                                      AS closing_print_conditions,
    official_close,
    round(abs(round(toFloat64(argMaxIf(price, size, sip_timestamp >= bell)), 2) - official_close), 2)                AS print_vs_close_gap,
    round(toFloat64(maxIf(size, sip_timestamp >= bell)) / toFloat64(sumIf(size, sip_timestamp < bell)), 1)           AS print_vs_last_minute
FROM global_markets.stocks_trades
WHERE ticker = 'KO'
  AND sip_timestamp >= toDateTime('2026-08-19 19:59:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-08-19 20:05:00', 'UTC')
Run am yourself

The last continuous-session trade for KO print at 15:59:59 ET, with 73 shares at $90.38. The closing auction print at 16:00:02 ET: 2.17 million shares at $90.35. That one trade be 5.8 times the size of every share wey change hands during the entire final minute of continuous trading. Official close for the daily bar na $90.35, and the two prices differ by $0. Na the auction print be the close.

Every trade for the consolidated tape get condition codes. Na through these codes data vendor know which print to call the close: 5 codes for the reference dictionary describe one kind of close. Match the codes on the auction print above with this list.

QueryTrade condition codes wey describe a close, from di consolidated-tape dictionary
codecondition namedescription
8Closing Prints
14Closing
15Market Center Official Close
19Market Center Closing Trade
38Corrected Consolidated Close (per listing market)
The exact SQL behind every number
SELECT
    toString(id)      AS code,
    any(name)         AS condition_name,
    any(description)  AS description
FROM global_markets.stocks_condition_codes
WHERE lower(name) LIKE '%clos%'
GROUP BY id
ORDER BY id
Run am yourself

How big NYSE closing print dey?

For NYSE-listed large cap, closing auction normally be the biggest single trade for the day. Across eight household NYSE names for the same session, the auction print itself — the one trade within the ten minutes after the bell wey carry closing-print condition code — range from 10.7% to 22.7% of the day's consolidated volume. XOM reach the top, with 3.1 million shares for one print.

QueryDi closing print as a share of di day volume, eight NYSE-listed names (Aug 19, 2026)
tickerclosing print millionsday volume millionsclosing print pct of day
XOM3.113.622.7
JPM1.336.719.9
CAT0.74.117
DIS1.32816.4
JNJ1.067.713.8
KO2.171613.6
PG1.5713.911.3
HD0.53510.7
The exact SQL behind every number
SELECT
    t.ticker                                                               AS ticker,
    round(toFloat64(t.closing_print) / 1e6, 2)                             AS closing_print_millions,
    round(toFloat64(d.day_volume) / 1e6, 1)                                AS day_volume_millions,
    round(toFloat64(t.closing_print) / toFloat64(d.day_volume) * 100, 1)   AS closing_print_pct_of_day
FROM
(
    SELECT ticker, maxIf(size, has(conditions, 8)) AS closing_print
    FROM global_markets.stocks_trades
    WHERE ticker IN ('KO', 'JPM', 'XOM', 'PG', 'JNJ', 'DIS', 'HD', 'CAT')
      AND sip_timestamp >= toDateTime('2026-08-19 20:00:00', 'UTC')
      AND sip_timestamp <  toDateTime('2026-08-19 20:10:00', 'UTC')
    GROUP BY ticker
    HAVING countIf(has(conditions, 8)) > 0
) AS t
INNER JOIN
(
    SELECT ticker, max(volume) AS day_volume
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('KO', 'JPM', 'XOM', 'PG', 'JNJ', 'DIS', 'HD', 'CAT')
      AND date = toDate('2026-08-19')
    GROUP BY ticker
) AS d ON d.ticker = t.ticker
ORDER BY closing_print_pct_of_day DESC
Run am yourself

Na this concentration give the imbalance feed its value. If few million shares remain unpaired at 3:50 p.m., e give information about where the close fit land. The ten minutes after that dey allow other participants take the opposite side.

How dem choose closing price when buy and sell no match?

Imbalance get exact meaning for NYSE under Rule 7.35(a)(4). E mean volume of better-priced orders for one side wey no fit pair with better-priced and at-priced orders for the other side at the Imbalance Reference Price. That reference price na the last NYSE sale, limited to the exchange own best bid and offer under Rule 7.35B(d). Two more prices for the feed help define the range. Continuous Book Clearing Price na the price wey every better-priced order on the imbalance side fit fill against the whole book. Na the highest possible close for buy imbalance and the lowest for sell imbalance. Closing Interest Only Clearing Price use the same calculation but restrict am to on-close interest.

With this information, DMM choose the closing price. The hard floor na the obligation wey we mention above: every better-priced order on the imbalance side must get satisfaction at the chosen price. So buy imbalance no fit close at a level wey leave LOC buyer with higher limit unfilled. MOC orders fill fully at the closing price. LOC orders fill when closing price dey at or better than their limit. Closing IO orders fill only against the imbalance side, after every other order. Closing D Orders reach their hidden price to absorb wetin remain. Any imbalance wey still remain na DMM responsibility. E fit take am with its own capital or, for extreme case, solicit offsetting orders after 4:00 p.m. under Rule 7.35B(j)(2). Allocation among orders at the same price follow Rule 7.35B(h) and parity rules for Rule 7.37(b).

NYSE closing auction versus Nasdaq closing cross

The Nasdaq closing cross get its own post. Here na the comparison in one place, with Nasdaq figures from its Closing Cross FAQ.

  • Who run am. NYSE: DMM, either manually or electronically, under fair-and-orderly obligation. Nasdaq: algorithm, with no market maker involved.
  • When the print land. NYSE: as soon after 4:00:00 p.m. as DMM fit close the stock, normally some seconds later. Nasdaq: 4:00:00 p.m.
  • Entry cutoffs. NYSE: 3:50 p.m. for both MOC and LOC, then only to offset published imbalance. Nasdaq: 3:55 p.m. for MOC and 3:58 p.m. for LOC. Late LOCs get repriced when dem more aggressive than the 3:50 or 3:55 reference price.
  • Cancel cutoff and offsetting orders. Both exchanges stop cancels at 3:50 p.m. and accept offsetting orders — NYSE Closing IO, Nasdaq Imbalance-Only — until 4:00 p.m.
  • Floor-broker tool. NYSE: Closing D Order, with entry until 3:59:50 p.m. Nasdaq: none.
  • Imbalance feed. NYSE: from 3:50 p.m., at least every second whenever e change. Nasdaq NOII: from 3:50 p.m. every ten seconds, then every second from 3:55 p.m.
  • Price rule. NYSE: DMM choose price wey satisfy all better-priced orders on the imbalance side. Nasdaq: price wey maximize matched shares, then minimize imbalance, then dey closest to midpoint.

FAQ

Wetin time NYSE closing auction dey happen?

Core Trading Hours end at 4:00 p.m. ET, and Rule 7.35B direct DMM to close each stock as soon as possible after that. Most days, print land within few seconds of 4:00:00 p.m. For 1:00 p.m. early-close day, the auction and every deadline move three hours earlier.

Wetin be cutoff for MOC and LOC orders for NYSE?

3:50 p.m. ET, the Closing Auction Imbalance Freeze Time. After that, exchange accept MOC and LOC orders only on the side wey offset published Significant Closing Imbalance. If no imbalance publish, exchange reject dem outright.

I fit cancel market-on-close order for NYSE after 3:50 p.m.?

No. On-close orders no fit cancel or reduce after 3:50 p.m., even if na to correct genuine error. The only exception na Rule 7.35B(j)(2)(B). DMM fit invoke am with Trading Official approval when mistaken order go dislocate the close.

NYSE closing price na the last trade for the day?

No. Official close na the closing auction print, a separate transaction wey land after the last continuous-session trade. For the KO example above, daily bar close match the auction print, no be the trade before am.

Wetin be Closing D Order?

Na limit order wey only NYSE Floor broker fit enter. E carry hidden discretionary price wey the order fit reach for closing auction. E count for published imbalance from 3:50 p.m. and no fit enter after 3:59:50 p.m.


Every panel above get its SQL underneath. You fit expand any one to see how dem pull the numbers. To trace the close for any NYSE-listed name on any past session, ask for am in plain English on the Strasmore terminal.

#closing auction#nyse#market on close#dmm#imbalance