STRASMORE/EXPLORE 2,830 QUERIES

weekday_shape

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-30, from es-futures-trading-hours.

as of series 5×4read in context →
weekday_shape — 5 rows by 4 columns, computed from US exchange, SIP and OPRA data.
weekdaysession_countavg_volume_millionsearliest_print_et
Monday1544.804:00
Tuesday1745.804:00
Wednesday1746.404:00
Thursday1749.304:00
Friday1548.904:00
Rows × columns
5 × 4
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 weekday_shape, derived from the stored result.
ColumnTypeRangeNotes
weekday text 5 distinct values (Friday, Monday, Thursday…)
session_count number 15 to 17 count
avg_volume_millions number 44.8 to 49.3 count
earliest_print_et text 1 distinct value (04:00)

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.

WITH sessions AS
(
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        sum(volume)                                          AS vol,
        min(toTimeZone(window_start, 'America/New_York'))    AS first_bar
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= today() - 120
      AND window_start <  today() - 2
    GROUP BY d
)
SELECT
    any(formatDateTime(d, '%W'))            AS weekday,
    count()                                 AS session_count,
    round(avg(vol) / 1e6, 1)                AS avg_volume_millions,
    min(formatDateTime(first_bar, '%H:%i')) AS earliest_print_et
FROM sessions
GROUP BY toDayOfWeek(d)
ORDER BY toDayOfWeek(d)
⌘/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 analysises-futures-trading-hours
closing_minutes series 31×2 → volume_by_et_hour ranking 16×3 → spread_by_et_hour ranking 16×3 → 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 → The 5s30s spread month by month, with both legs series 241×4 → See all 2,830 queries →