US stocks 23/5 trading plan for December 2026
US stocks fit start 23/5 trading on December 6, 2026, if CTA and UTP SIP feeds ready. See how overnight trades affect dates, bars, volume and LULD bands.
US stocks 23/5 trading plan dey start on Sunday, December 6, 2026, when the two consolidated data feeds wey dey behind every US stock quote, CTA and UTP SIPs, plan to begin operation from 9 p.m. ET Sunday reach 8 p.m. ET Friday, with one-hour maintenance pause every evening. This one add new overnight session, from 9 p.m. to 4 a.m. ET, before pre-market. The mechanics pass the headline for importance: every print between 9 p.m. and 8 p.m. the next day get one trade date, overnight volume enter the daily bar, official open and close remain where dem dey, and price bands work differently after dark. Every date for this page na plan, and e go hold only if the SIPs ready on time.
When 23/5 trading go start for US stocks?
The schedule dey rest on two documents. SEC order 34-106061 approve amendments to CTA and UTP plans wey extend the SIPs’ operating hours, while UTP Vendor Alert #2026-24 set the target: Sunday, December 6, 2026, with first prints at 9 p.m. ET. SIP, meaning Securities Information Processor, na utility wey dey merge trades and quotes from every exchange into one official tape. CTA carry NYSE-listed names, while UTP carry Nasdaq-listed names. From that evening, the plan be say both go run 23 hours per day, five days per week:
- 9:00 p.m. to 4:00 a.m. ET: the new overnight session
- 4:00 a.m. to 9:30 a.m. ET: pre-market, unchanged
- 9:30 a.m. to 4:00 p.m. ET: the regular session, unchanged
- 4:00 p.m. to 8:00 p.m. ET: after-hours, unchanged
- 8:00 p.m. to 9:00 p.m. ET: the SIP maintenance pause, no consolidated prints
The week go open at 9 p.m. Sunday and end at 8 p.m. Friday. Weekends remain dark. The exchanges wey dey expected for the first cohort, as of September 2026, na Cboe EDGX, NYSE Arca, 24X National and Nasdaq. Each venue dey file its own rule change and choose its own start date, so make you see that list as expected, no be final. The SIPs’ readiness na the gating item: if the feeds delay, the whole timeline go move with dem. For wetin you fit do tonight, see wetin you fit do today. This page dey explain wetin go change for the tape once the SIPs extend.
How the tape dey look today?
Today, the consolidated tape dey run from 4 a.m. to 8 p.m. ET, making 16 hours. The panel below group one month of SPY minute bars by ET clock hour. E no assume any session time; e simply report where prints dey.
| ET hour | volume for millions | share pct | minute bars |
|---|---|---|---|
| 04:00 | 2 | 0.27 | 1102 |
| 05:00 | 0.8 | 0.12 | 937 |
| 06:00 | 1.4 | 0.2 | 1014 |
| 07:00 | 4 | 0.55 | 1149 |
| 08:00 | 7.6 | 1.06 | 1189 |
| 09:00 | 78 | 10.85 | 1198 |
| 10:00 | 89.4 | 12.45 | 1200 |
| 11:00 | 76.9 | 10.71 | 1200 |
| 12:00 | 57.4 | 7.99 | 1200 |
| 13:00 | 58.1 | 8.09 | 1200 |
| 14:00 | 68.4 | 9.52 | 1200 |
| 15:00 | 184.6 | 25.69 | 1200 |
| 16:00 | 84.1 | 11.7 | 1165 |
| 17:00 | 2.4 | 0.33 | 993 |
| 18:00 | 2.4 | 0.33 | 961 |
| 19:00 | 1.1 | 0.15 | 967 |
The exact SQL behind every number
WITH
(
SELECT sum(volume)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 30
AND window_start < today() - 2
) AS month_volume
SELECT
formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:00') AS et_hour,
round(toFloat64(sum(volume)) / 1e6, 1) AS volume_millions,
round(100 * toFloat64(sum(volume)) / toFloat64(month_volume), 2) AS share_pct,
count() AS minute_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 30
AND window_start < today() - 2
GROUP BY et_hour
HAVING count() >= 5
ORDER BY et_hourThe tape cover 16 clock hours, from 04:00 to 19:00 ET, and e no get prints between 8 p.m. and 4 a.m. That empty period na exactly where the plan place the overnight session: seven hours from 9 p.m. to 4 a.m., plus the maintenance hour before am. The distribution no balance: the 04:00 hour carry 0.27% of SPY’s volume for the month, while the 19:00 hour carry 0.15%, beside regular session wey take almost everything. Overnight volume go join that curve for the thin end of the clock, and our pre-market and after-hours guide explain how thin book dey behave during those hours.
Which trade date overnight print go carry?
Under the plan, the full window from 9 p.m. to 8 p.m. na one trading day. Dem name am after the calendar day wey the regular session fall on. A print at 9:30 p.m. on Sunday, December 6 go carry Monday, December 7 as its trade date. A print at 11 p.m. Monday belong to Tuesday. The pause from 8 p.m. to 9 p.m. na the seam between two trade dates.
Notice wetin this one do to the calendar. The wall-clock date of that Sunday 9:30 p.m. print na Sunday, but its trade date na Monday. Any logic wey group prints by ET calendar date, including the SQL under every panel for this page, correct today for one reason: nothing dey print after 8 p.m. Once the extension go live, prints after 9 p.m. ET go enter the next trade date, and “group by ET date” must become “group by ET date, shifted forward after 9 p.m.”
The timestamps behind each panel dey stored in UTC, then dem convert dem to New York time before assigning a date. For December, Eastern time na UTC minus five, so a print stamped 02:30 UTC on Monday na a 9:30 p.m. ET Sunday print with Monday trade date. The market data timestamps guide dey explain the conversion.
Wetin go happen to the daily OHLCV bar?
A daily OHLCV bar — open, high, low, close, volume — dey built from the consolidated tape according to rule. Consolidated daily volume count every eligible print wey get that trade date, no matter which session e happen. Today, that already mean say pre-market and after-hours volume dey inside the daily bar. After the extension, overnight volume go join am. The official open remain the 9:30 a.m. opening auction, and the official close remain the 4:00 p.m. closing auction. Neither one go move. The first print at 9 p.m. no be the open, and the last print before 8 p.m. no be the close.
| session date | session label | daily bar for millions | regular session for millions | outside regular pct |
|---|---|---|---|---|
| 2026-10-02 | Oct 2 | 46.3 | 39.2 | 15.34 |
| 2026-10-05 | Oct 5 | 44.8 | 37.1 | 17.28 |
| 2026-10-06 | Oct 6 | 36.1 | 30 | 16.83 |
| 2026-10-07 | Oct 7 | 31 | 26.3 | 14.99 |
| 2026-10-08 | Oct 8 | 40.4 | 32.9 | 18.52 |
| 2026-10-09 | Oct 9 | 22.6 | 19.6 | 13.41 |
| 2026-10-12 | Oct 12 | 18.7 | 16.9 | 9.77 |
| 2026-10-13 | Oct 13 | 25.9 | 22.2 | 14.34 |
| 2026-10-14 | Oct 14 | 55.7 | 48 | 13.77 |
| 2026-10-15 | Oct 15 | 43.3 | 36.6 | 15.42 |
| 2026-10-16 | Oct 16 | 64.4 | 54.9 | 14.66 |
| 2026-10-19 | Oct 19 | 38.7 | 32.2 | 16.81 |
| 2026-10-20 | Oct 20 | 35 | 30 | 14.4 |
| 2026-10-21 | Oct 21 | 31.9 | 28 | 12.35 |
| 2026-10-22 | Oct 22 | 54.1 | 44.2 | 18.34 |
| 2026-10-23 | Oct 23 | 33.4 | 29.6 | 11.48 |
| 2026-10-26 | Oct 26 | 31.7 | 26.9 | 15.19 |
| 2026-10-27 | Oct 27 | 28.6 | 24 | 16.21 |
| 2026-10-28 | Oct 28 | 30.1 | 25.9 | 14.1 |
| 2026-10-29 | Oct 29 | 40.3 | 31.7 | 21.41 |
The exact SQL behind every number
SELECT
toString(daily.date) AS session_date,
concat(formatDateTime(daily.date, '%b'), ' ', toString(toDayOfMonth(daily.date))) AS session_label,
round(toFloat64(daily.day_volume) / 1e6, 1) AS daily_bar_millions,
round(toFloat64(intraday.regular_volume) / 1e6, 1) AS regular_session_millions,
round(100 * (toFloat64(daily.day_volume) - toFloat64(intraday.regular_volume))
/ toFloat64(daily.day_volume), 2) AS outside_regular_pct
FROM
(
SELECT
date,
max(volume) AS day_volume
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= today() - 30
AND date < today() - 2
GROUP BY date
) AS daily
INNER JOIN
(
SELECT
toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS et_date,
sumIf(toFloat64(size), has(conditions, 8)
OR (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) BETWEEN 570 AND 959) AS regular_volume
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= today() - 30
AND sip_timestamp < today() - 2
AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY et_date
HAVING countIf(has(conditions, 8)) > 0
) AS intraday ON intraday.et_date = daily.date
ORDER BY daily.dateOn Oct 29, SPY daily bar carry 40.3 million shares. Out of that, 31.7 million trade during regular session, the 9:30 to 4:00 clock window plus the closing auction print wey end am. That leave 21.41% of the day outside regular session. That gap na today’s extended-hours share, and na the line wey go increase once the tape add seven more hours. How dem build OHLCV bars cover the auction-based open and close in detail.
Prints outside regular session carry the Form T sale condition, and Form T prints never update last-sale price or the session high and low. But dem update consolidated volume. Under the plan, overnight session go get the same treatment: a 2 a.m. print go add to volume but leave last sale unchanged. The codes involved already dey defined on the tape.
| id | condition name | meaning |
|---|---|---|
| 12 | Form T/Extended Hours | |
| 13 | Extended Hours (Sold Out Of Sequence) | |
| 248 | Extended Hours Trade | Transaction represents a trade that was executed outside of regular market hours. Trades do not update Open, High, Low, and Closing Prices. |
The exact SQL behind every number
SELECT
id,
any(name) AS condition_name,
any(description) AS meaning
FROM global_markets.stocks_condition_codes
WHERE name ILIKE '%form t%'
OR name ILIKE '%extended%hours%'
GROUP BY id
ORDER BY idThe tape define 3 extended-hours sale conditions, with Form T/Extended Hours as the first one. Trade condition codes explained decode the full list, including the codes wey fit move last sale.
How I fit compare volume across the December boundary?
If the plan hold, January 2027 daily volume compared with November 2026 volume go compare a 23-hour trade date with a 16-hour one. The solution na to compare like with like: divide the tape by ET clock time and keep the same slice on both sides of the boundary. The regular-session slice, from 9:30 to 4:00, no change under the extension and e provide the cleanest baseline. The panel below measure how large the outside-regular share already be for seven household names. Na the share wey a naive before-and-after comparison go silently inflate.
| ticker | premarket pct | after-hours pct | outside regular pct |
|---|---|---|---|
| SPY | 2.7 | 13.05 | 15.75 |
| AAPL | 1.98 | 12.99 | 14.96 |
| AMZN | 2.55 | 11.47 | 14.02 |
| MSFT | 2.04 | 11.94 | 13.98 |
| KO | 1.88 | 11.72 | 13.6 |
| NVDA | 3.19 | 7.16 | 10.36 |
| TSLA | 3.44 | 5.41 | 8.84 |
The exact SQL behind every number
SELECT
ticker,
round(100 * sumIf(shares, NOT is_close AND minute_of_day < 570) / sum(shares), 2) AS premarket_pct,
round(100 * sumIf(shares, NOT is_close AND minute_of_day >= 960) / sum(shares), 2) AS after_hours_pct,
round(100 * sumIf(shares, NOT is_close AND (minute_of_day < 570 OR minute_of_day >= 960))
/ sum(shares), 2) AS outside_regular_pct
FROM
(
SELECT
ticker,
toFloat64(size) AS shares,
has(conditions, 8) AS is_close,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS minute_of_day
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'AMZN', 'KO')
AND sip_timestamp >= today() - 30
AND sip_timestamp < today() - 2
AND NOT hasAny(conditions, [15, 16, 38])
)
GROUP BY ticker
HAVING sum(shares) > 0
ORDER BY outside_regular_pct DESCOver the trailing month, SPY print 15.75% of its volume outside regular session, the largest share among the seven. The share split into 2.7% pre-market and 13.05% after-hours. TSLA dey for the other end at 8.84%. A ranking of names by total volume fit change after the extension simply because of who trade overnight, even though the regular-session slice remain unchanged. Keep regular-session volume series beside the consolidated one, like the panel above show, and compare December with November using that series.
How LULD bands dey work overnight?
Limit Up-Limit Down (LULD) na price-band mechanism wey limit, then pause, a stock wey move outside a band around reference price. During regular session, the reference price dey roll: dem recompute am from the previous five minutes of trading, and the bands move with am. The overnight plan different. The bands static: dem publish dem once at 9 p.m. ET, using the reference price available at that time, and hold dem for the whole overnight session. The quote feed’s LULD price-band indicator get two new values, G and H, reserved for the overnight regime, so data consumer fit tell overnight band from daytime band. Static band no re-center, so if a stock move far after 9 p.m., e go remain against that band until daytime machinery restart. Why stocks halt under Limit Up-Limit Down cover the daytime regime.
What if the SIPs no ready?
Two parts of the plumbing don already move ahead of the tape. NSCC, the clearinghouse wey net and guarantee US equity trades, don run 24/5 since June 29, 2026, as of September 2026. So overnight trade already get clearing path, and e settle T+1 from its trade date like any daytime trade. Also, 24X National get SEC exemptive relief wey go take effect January 24, 2027. That relief na the stated fallback: if the SIPs’ December date delay, 24X overnight session fit open under that relief before the consolidated feeds. Either way, launch depend on the SIPs’ readiness, and every date for this page mean “planned for,” no be “happening on.” The SIP vs direct exchange feeds guide explain why the consolidated feed na the thing wey must ready.
FAQ
When 23/5 stock trading go start?
The plan na Sunday, December 6, 2026 at 9 p.m. ET, when CTA and UTP SIPs dey scheduled to begin 23-hour operation under SEC order 34-106061 and UTP Vendor Alert #2026-24. The date go hold only if the SIPs ready. If dem delay, the exchanges’ overnight sessions go move with dem.
Which trade date Sunday night stock trade get?
Monday. Under the plan, the trading day run from 9 p.m. ET reach 8 p.m. ET the next evening. So a print at 9:30 p.m. Sunday carry Monday’s trade date and count toward Monday’s consolidated volume.
Overnight trading go change official open and close?
No. The official open remain the 9:30 a.m. ET opening auction, and the official close remain the 4:00 p.m. ET closing auction. Overnight prints carry the Form T condition: dem add to volume but never update last-sale price.
LULD price bands dey apply during overnight session?
Yes, but in static form. Under the plan, dem publish the bands once at 9 p.m. ET for the whole overnight session, instead of rolling dem like dem do during regular session. The quote feed mark dem with the new indicator values G and H.
Every panel above carry its SQL. Expand am to see exactly how dem cut the session slice, or run the same clock-hour breakdown on any ticker from the Strasmore terminal.