STRASMORE/EXPLORE 2,595 QUERIES

early_closes

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-25, from mutual-fund-order-cutoff-times-by-broker.

as of series 6×5read in context →
early_closes — 6 rows by 5 columns, computed from US exchange, SIP and OPRA data.
session_datesession_labelweekdaylast_bar_etsession_minutes
2024-07-03Jul 3, 2024Wed13:00211
2024-11-29Nov 29, 2024Fri13:00211
2024-12-24Dec 24, 2024Tue13:00211
2025-07-03Jul 3, 2025Thu13:00211
2025-11-28Nov 28, 2025Fri13:00211
2025-12-24Dec 24, 2025Wed13:00211
Rows × columns
6 × 5
Period covered
to
Computed
Completeness
No missing values
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 early_closes, derived from the stored result.
ColumnTypeRangeNotes
session_date date 2024-07-03 to 2025-12-24
session_label text 6 distinct values (Dec 24, 2024, Dec 24, 2025, Jul 3, 2024…)
weekday text 4 distinct values (Fri, Thu, Tue…)
last_bar_et text 1 distinct value (13:00)
session_minutes number every row is 211

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(session_day) AS session_date,
    session_label,
    weekday,
    last_bar_et,
    session_minutes
FROM
(
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York'))                        AS session_day,
        formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%b %e, %Y') AS session_label,
        formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%a')     AS weekday,
        formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i')  AS last_bar_et,
        toUInt32(count())                                                          AS session_minutes
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2024-01-01 00:00:00')
      AND window_start <  today() - 2
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
    GROUP BY session_day
    HAVING session_minutes BETWEEN 60 AND 330
)
ORDER BY session_day
⌘/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 analysismutual-fund-order-cutoff-times-by-broker
upcoming series 12×7 → session_lengths ranking 2×2 → 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 → 3m10y and 2s10s spreads, monthly averages over twenty years series 241×4 → 2s10s spread, monthly average: last 20 years series 240×2 → See all 2,595 queries →