STRASMORE/EXPLORE 2,948 QUERIES

expiry_friday_clock

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-10-02, from when-do-ndx-options-expire.

as of series 7×3read in context →
expiry_friday_clock — 7 rows by 3 columns, computed from US exchange, SIP and OPRA data.
et_timeexpiry_friday_millionsordinary_friday_millions
09:004.53.9
10:005.84.8
11:006.52.7
12:003.81.8
13:0031.9
14:004.12.2
15:0010.94.7
Rows × columns
7 × 3
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 expiry_friday_clock, derived from the stored result.
ColumnTypeRangeNotes
et_time text 7 distinct values (09:00, 10:00, 11:00…)
expiry_friday_millions number 3 to 10.9
ordinary_friday_millions number 1.8 to 4.8

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
    formatDateTime(toStartOfHour(toTimeZone(window_start, 'America/New_York')), '%H:00') AS et_time,
    round(toFloat64(sumIf(volume, is_expiry = 1)) / 1e6, 1) AS expiry_friday_millions,
    round(toFloat64(sumIf(volume, is_expiry = 0)) / 1e6, 1) AS ordinary_friday_millions
FROM
(
    SELECT
        window_start,
        volume,
        toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-09-18') AS is_expiry,
        toHour(toTimeZone(window_start, 'America/New_York')) * 60
            + toMinute(toTimeZone(window_start, 'America/New_York')) AS minute_of_day
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'QQQ'
      AND window_start >= toDateTime('2026-09-11 00:00:00')
      AND window_start <  toDateTime('2026-09-19 05:00:00')
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (toDate('2026-09-11'), toDate('2026-09-18'))
)
WHERE minute_of_day >= 570
  AND minute_of_day <  960
GROUP BY et_time
ORDER BY et_time
⌘/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 analysiswhen-do-ndx-options-expire
opening_share_by_expiry series 12×4 → ndx_monthly_ladder series 9×6 → qqq_expiration_weekdays ranking 5×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,948 queries →