Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of September 22, 2026 · refreshed weekly

After-Hours Trading on Holidays and Weekends

Is after-hours trading open on holidays or weekends? What runs on a 1:00 p.m. early close, why Saturday is dark, and how to check any date yourself.

After-hours trading does not run on a full market holiday. When the NYSE and Nasdaq are shut for the day, the pre-market and post-market sessions are shut with them, and the overnight venues stay dark as well. On an early close day the regular session ends at 1:00 p.m. ET and a shortened evening window follows it, with the exact cutoff set by your broker rather than by one market-wide rule. Weekends are simpler: the overnight week stops Friday morning and restarts Sunday evening, so Saturday is genuinely dark.

Does after-hours trading run on a market holiday?

No. A full closure covers every session of the day. The 9:30 a.m. to 4:00 p.m. core is closed, and so are the extended windows on either side of it. The cleanest way to see that is to count one-minute bars, since a minute bar exists only when something actually traded in that minute. The panel below counts SPY minute bars in each ET clock hour across three consecutive days in November 2025: an ordinary Wednesday, the Thanksgiving holiday, and the half-day Friday that followed it.

QuerySPY minute bars by ET clock hour: a normal day, a holiday, a half day
et_hournormal_wednesday_barsholiday_thursday_barshalf_day_friday_bars
04:0050054
05:0057046
06:0056042
07:0060055
08:0060060
09:0060060
10:0060060
11:0060060
12:0060060
13:006001
14:006000
15:006000
16:0059049
17:005200
18:005100
The exact SQL behind every number
SELECT
    formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:00')    AS et_hour,
    countIf(toDate(toTimeZone(window_start, 'America/New_York')) = '2025-11-26') AS normal_wednesday_bars,
    countIf(toDate(toTimeZone(window_start, 'America/New_York')) = '2025-11-27') AS holiday_thursday_bars,
    countIf(toDate(toTimeZone(window_start, 'America/New_York')) = '2025-11-28') AS half_day_friday_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= '2025-11-26 00:00:00'
  AND window_start <  '2025-11-29 06:00:00'
  AND toDate(toTimeZone(window_start, 'America/New_York')) IN ('2025-11-26', '2025-11-27', '2025-11-28')
GROUP BY et_hour
ORDER BY et_hour
Run this yourself

Read the three columns side by side. At 12:00 ET the ordinary Wednesday carried 60 minute bars and the half-day Friday carried 60, while the holiday column shows 0. The holiday column holds that same value in the first hour on the panel, 04:00 ET, and in the last one, 18:00 ET. No pre-market bars, no regular session, no post-market bars, and nothing in the hours between them.

Your broker's app will still show a price for SPY on Thanksgiving. That number is the last print from the previous session, held on the screen until trading resumes. The mechanics of the two sessions that do run on a normal weekday are covered in after-hours and pre-market trading.

What happens to after-hours trading on a 1:00 p.m. early close?

An early close is a real trading day, only a short one: the regular session ends at 1:00 p.m. ET instead of 4:00 p.m. The question worth asking is what happens to the hours on either side. The pre-market window is unchanged, since it is anchored to the 9:30 a.m. open, which does not move. The evening is where firms differ.

QueryFirst and last SPY print, Thanksgiving 2025 week and the week after
session_dateweekdayfirst_print_et_minutelast_print_et_minutelast_print_et
2025-11-24Mon240119919:59
2025-11-25Tue240119919:59
2025-11-26Wed240113918:59
2025-11-27Thu00no trading
2025-11-28Fri240101916:59
2025-11-29Sat00no trading
2025-11-30Sun00no trading
2025-12-01Mon240119919:59
2025-12-02Tue240119919:59
2025-12-03Wed240119919:59
2025-12-04Thu240119919:59
2025-12-05Fri240113918:59
The exact SQL behind every number
SELECT
    toString(cal.day)                       AS session_date,
    formatDateTime(cal.day, '%a')           AS weekday,
    toUInt32(ifNull(t.first_minute, 0))     AS first_print_et_minute,
    toUInt32(ifNull(t.last_minute, 0))      AS last_print_et_minute,
    if(last_print_et_minute = 0,
       'no trading',
       concat(leftPad(toString(intDiv(last_print_et_minute, 60)), 2, '0'), ':',
              leftPad(toString(modulo(last_print_et_minute, 60)), 2, '0'))) AS last_print_et
FROM
(
    SELECT toDate('2025-11-24') + arrayJoin(range(12)) AS day
) AS cal
LEFT JOIN
(
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        min(toHour(toTimeZone(window_start, 'America/New_York')) * 60
            + toMinute(toTimeZone(window_start, 'America/New_York'))) AS first_minute,
        max(toHour(toTimeZone(window_start, 'America/New_York')) * 60
            + toMinute(toTimeZone(window_start, 'America/New_York'))) AS last_minute
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= '2025-11-24 00:00:00'
      AND window_start <  '2025-12-06 06:00:00'
    GROUP BY d
) AS t ON t.d = cal.day
ORDER BY cal.day
Run this yourself

The panel walks a fixed twelve-day stretch and reports, for every calendar day in it, the clock time of the first and the last SPY minute bar, measured in minutes past ET midnight. The ordinary Wednesday, 2025-11-26, printed its final bar at 18:59 ET. The half-day Friday, 2025-11-28, printed its final bar at 16:59 ET. The holiday Thursday and both weekend days carry the same label in that column: no trading.

That is the tape. The window your own account can send orders into is a separate question, and published broker schedules disagree. As of September 2026:

  • Fidelity's stock market hours page lists Nasdaq pre-market trading from 4:00 a.m. to 9:30 a.m. ET and a late trading session from 4:00 p.m. to 8:00 p.m. ET, and names the two scheduled 1:00 p.m. closes for 2026, the day after Thanksgiving and Christmas Eve.
  • Webull's 2026 after-hours guide states that on early-close days regular trading ends at 1:00 p.m. ET and extended-hours trading ends at 5:00 p.m. ET.

Those two figures answer different questions. The 8:00 p.m. cutoff is an ordinary full-day evening; the 5:00 p.m. cutoff is one firm's half-day evening. A third broker may publish a different hour again, and these schedules get revised without much fanfare. Check the schedule your own broker publishes for the specific date before leaving a limit order resting into the evening. Which dates carry the 1:00 p.m. close is covered in stock market holidays and early closes.

Is there any trading on Saturday or Sunday?

Not at any venue a retail account can reach. The weekday-by-weekday count makes the shape obvious.

QueryAverage SPY minute bars per calendar day, by weekday
weekdayavg_minute_barsdays_with_any_tradingdays_counted
Mon783.21517
Tue895.61818
Wed900.81818
Thu894.81818
Fri782.61618
Sat0018
Sun0017
The exact SQL behind every number
SELECT
    formatDateTime(cal.day, '%a')      AS weekday,
    round(avg(ifNull(t.bars, 0)), 1)   AS avg_minute_bars,
    countIf(ifNull(t.bars, 0) > 0)     AS days_with_any_trading,
    count()                            AS days_counted
FROM
(
    SELECT today() - 126 + arrayJoin(range(126)) AS day
) AS cal
LEFT JOIN
(
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        count()                                              AS bars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= today() - 130
    GROUP BY d
) AS t ON t.d = cal.day
WHERE cal.day <= today() - 3
GROUP BY weekday, toDayOfWeek(cal.day)
ORDER BY toDayOfWeek(cal.day)
Run this yourself

Over the trailing four months, Mon averaged 783.2 minute bars per calendar day. Sat averaged 0 across 18 of them, with 0 showing any trading at all, and Sun matched it at 0. Weekday averages land below a full tape's worth of minutes, since the window contains a holiday and an early close, and both average in as an empty or short day.

The overnight sessions that brokers advertise as 24 hour trading route to an alternative trading system rather than to an exchange. Blue Ocean ATS, the venue behind most retail overnight order flow, runs from 8:00 p.m. to 4:00 a.m. ET on Sunday through Thursday nights. There is no Friday night block: a trade struck on Friday evening would need reporting to a facility that does not operate on Saturday, and the week's final overnight session instead ends at 4:00 a.m. ET on Friday. The next one opens Sunday at 8:00 p.m. ET. Saturday sits in the middle of that gap with nothing open at either end. Trading US stocks 24 hours a day walks through how the overnight book works.

A price on your screen at noon on Saturday is a stale print. Nothing can execute against it, and the bid and offer beside it are the last ones quoted before the venue closed.

Does the longer trading week change any of this?

US exchange operators are moving toward a longer weekday. The SEC approved Nasdaq's proposal to expand its trading hours in 2026, and a near round-the-clock weekday session is scheduled to begin in December 2026, subject to the clearing and market-data plumbing being ready. Scheduled is the operative word, and start dates in this area have moved before. What none of the approved plans adds is a weekend. A 23 hour weekday still leaves a daily maintenance break, and it still stops on Friday evening and restarts on Sunday evening. The 23/5 US stock trading timeline follows the filings and the dates as they firm up.

How do I check whether a given day trades?

Rather than memorising a calendar, read the date off the exchange schedule. The panel below refreshes on its own: each closure drops off as it passes.

QueryUpcoming US market closures and early closes
holiday_dateclosure_labelweekdayholidayday_statusregular_close_etdays_away
2026-11-26November 26ThuThanksgivingclosed65
2026-11-27November 27FriThanksgivingearly-close01:00 PM66
2026-12-24December 24ThuChristmasearly-close01:00 PM93
2026-12-25December 25FriChristmasclosed94
2027-01-01January 1FriNew Years Dayclosed101
2027-01-18January 18MonMartin Luther King, Jr. Dayclosed118
2027-02-15February 15MonWashington's Birthdayclosed146
2027-03-26March 26FriGood Fridayclosed185
2027-05-31May 31MonMemorial Dayclosed251
2027-06-18June 18FriJuneteenthclosed269
2027-07-05July 5MonIndependence Dayclosed286
2027-09-06September 6MonLabor Dayclosed349
The exact SQL behind every number
SELECT
    toString(date)                                              AS holiday_date,
    concat(monthName(date), ' ', toString(toDayOfMonth(date)))  AS closure_label,
    formatDateTime(date, '%a')                                  AS weekday,
    any(name)                                                   AS holiday,
    any(status)                                                 AS day_status,
    any(if(status = 'early-close',
           formatDateTime(toTimeZone(close, 'America/New_York'), '%I:%i %p'),
           ''))                                                 AS regular_close_et,
    dateDiff('day', today(), date)                              AS days_away
FROM global_markets.stocks_market_holidays
WHERE date >= today()
GROUP BY date
ORDER BY date
Run this yourself

The next closure on the exchange calendar is Thanksgiving on November 26, 65 days out, and the forward calendar carries 12 dated closures in total. For the evening session, the status column is the one that matters. A full closure means no extended hours at all, at any hour of that day. An early close means a shortened afternoon whose end time your broker sets, with the pre-market that morning running normally. For a plain yes or no on the current date, is the stock market open today answers the single question.

FAQ

Is after-hours trading open on Thanksgiving or Christmas Day?

No. On a full market holiday the pre-market, the regular session and the post-market are all closed, and the overnight venues do not run that night either. Trading resumes at the next scheduled session, which after Thanksgiving is a shortened Friday.

Does after-hours trading close early on a half day?

Usually, though the cutoff belongs to your broker. Webull publishes a 5:00 p.m. ET extended-hours end on early-close days against an 8:00 p.m. ET end on ordinary days, and other firms publish other hours. Check the schedule for the date on your own platform.

Can you trade stocks on Saturday or Sunday?

No. The overnight venue behind most retail 24 hour trading runs Sunday through Thursday nights, 8:00 p.m. to 4:00 a.m. ET. Sunday evening opens the trading week and Friday morning closes it, which leaves Saturday with no session at any hour.

Why does my broker show a live-looking price when the market is closed?

The quote is the last print carried forward from the previous session. Nothing can execute against it while every venue is closed, and the first trade of the next session can open away from that level.

Do pre-market hours change on an early close day?

No. The pre-market window is anchored to the 9:30 a.m. ET open, which stays put on a half day. Only the afternoon is cut short.


Every panel above ships with the SQL that produced it, expandable underneath the table. To check whether a specific date traded, or when its last print landed, ask the question in plain English on the Strasmore terminal.