STRASMORE/EXPLORE 2,648 QUERIES

us_closures

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-26, from us-stock-market-hours-german-time.

as of series 12×8read in context →
us_closures — 12 rows by 8 columns, computed from US exchange, SIP and OPRA data.
closure_dateclosure_labelweekdayholidayday_statuset_closegerman_closedays_away
2026-11-2626 NovemberThuThanksgivingclosed61
2026-11-2727 NovemberFriThanksgivingearly-close13:November19:November62
2026-12-2424 DecemberThuChristmasearly-close13:December19:December89
2026-12-2525 DecemberFriChristmasclosed90
2027-01-011 JanuaryFriNew Years Dayclosed97
2027-01-1818 JanuaryMonMartin Luther King, Jr. Dayclosed114
2027-02-1515 FebruaryMonWashington's Birthdayclosed142
2027-03-2626 MarchFriGood Fridayclosed181
2027-05-3131 MayMonMemorial Dayclosed247
2027-06-1818 JuneFriJuneteenthclosed265
2027-07-055 JulyMonIndependence Dayclosed282
2027-09-066 SeptemberMonLabor Dayclosed345
Rows × columns
12 × 8
Period covered
to
Computed
Completeness
Some fields are partly empty — see the columns below
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for us_closures, derived from the stored result.
ColumnTypeRangeNotes
closure_date date 2026-11-26 to 2027-09-06
closure_label text 12 distinct values (1 January, 15 February, 18 January…)
weekday text 3 distinct values (Fri, Mon, Thu)
holiday text 10 distinct values (Christmas, Good Friday, Independence Day…)
day_status text 2 distinct values (closed, early-close)
et_close text 2 distinct values (13:December, 13:November) 2 of 12 rows populated
german_close text 2 distinct values (19:December, 19:November) 2 of 12 rows populated
days_away number 61 to 345

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

SELECT
    toString(date)                                             AS closure_date,
    concat(toString(toDayOfMonth(date)), ' ', monthName(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'), '%H:%M'),
           ''))                                                AS et_close,
    any(if(status = 'early-close',
           formatDateTime(toTimeZone(close, 'Europe/Berlin'), '%H:%M'),
           ''))                                                AS german_close,
    dateDiff('day', today(), date)                             AS days_away
FROM global_markets.stocks_market_holidays
WHERE date >= today()
GROUP BY date
ORDER BY date
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisus-stock-market-hours-german-time
open_clock_by_week series 58×4 → intraday_profile series 16×4 → session_clock table 5×7 → mismatch_by_year table 5×6 → The 2s10s spread by month, full history series 604×5 → One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 → See all 2,648 queries →