STRASMORE/EXPLORE 2,170 QUERIES

Trading sessions vs calendar days, twelve months through June 2026

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-08-01, from When Do Mutual Fund Trades Settle?.

as of series 12×4read in context →
Trading sessions vs calendar days, twelve months through June 2026 — 12 rows by 4 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labeltrading_sessionscalendar_days
2025-07July 20252231
2025-08August 20252131
2025-09September 20252130
2025-10October 20252331
2025-11November 20251930
2025-12December 20252231
2026-01January 20262031
2026-02February 20261928
2026-03March 20262231
2026-04April 20262130
2026-05May 20262031
2026-06June 20262130
Rows × columns
12 × 4
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 Trading sessions vs calendar days, twelve months through June 2026, derived from the stored result.
ColumnTypeRangeNotes
month date 2025-07 to 2026-06
month_label text 12 distinct values (April 2026, August 2025, December 2025…)
trading_sessions number 19 to 23
calendar_days number 28 to 31

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.

the exact SQL behind every number
WITH sessions AS (
    SELECT DISTINCT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2025-07-01') AND toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
)
SELECT formatDateTime(toStartOfMonth(session_date), '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(toStartOfMonth(session_date), 'MMMM yyyy') AS month_label,
       count() AS trading_sessions,
       toDayOfMonth(toLastDayOfMonth(session_date)) AS calendar_days
FROM sessions
GROUP BY month, month_label, calendar_days
ORDER BY month

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisWhen Do Mutual Fund Trades Settle?
Short end vs long end of the Treasury curve: monthly averages, July 2024 to June 2026 series 24×4 Longest breaks between US trading sessions, January to late July 2026 ranking 10×2 How far the S&P 500 tracker moved open to close: sessions by size band, July 2025 to June 2026 ranking 5×3 One session, many prices: VOO in half-hour marks, Wednesday July 22, 2026 series 32×3 One session's price path, SPY every 15 minutes on June 17, 2026 series 27×2 Average move by New York half hour, two foreign listings series 25×3 See all 2,170 queries →