STRASMORE/EXPLORE 3,256 QUERIES

The rest of 2026, measured: each month's busiest forward expiration date, July 6-9 tape

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-10, from When Do Options Expire? Friday 4 PM ET & Daily.

as of series 6×5read in context →
The rest of 2026, measured: each month's busiest forward expiration date, July 6-9 tape — 6 rows by 5 columns, computed from US exchange, SIP and OPRA data.
monthbusiest_expiry_dateweekdaycontracts_mmunderlyings
2026-072026-07-17Friday31.54613
2026-082026-08-21Friday14.64368
2026-092026-09-18Friday8.52198
2026-102026-10-16Friday31707
2026-112026-11-20Friday1.61493
2026-122026-12-18Friday3.22432
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 The rest of 2026, measured: each month's busiest forward expiration date, July 6-9 tape, derived from the stored result.
ColumnTypeRangeNotes
month text 6 distinct values (2026-07, 2026-08, 2026-09…)
busiest_expiry_date date 2026-07-17 to 2026-12-18
weekday text 1 distinct value (Friday)
contracts_mm number 1.6 to 31.5 count
underlyings number 1,493 to 4,613

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 per_expiry AS (
    SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
           sum(toFloat64(volume)) AS v,
           uniqExact(substring(ticker, 3, length(ticker) - 17)) AS underlyings
    FROM global_markets.options_minute_aggs
    WHERE window_start >= '2026-07-06 04:00:00'
      AND window_start < '2026-07-10 04:00:00'
    GROUP BY expiry
)
SELECT formatDateTime(toStartOfMonth(expiry), '%Y-%m') AS month,
       toString(argMax(expiry, (v, toString(expiry)))) AS busiest_expiry_date,
       dateName('weekday', argMax(expiry, (v, toString(expiry)))) AS weekday,
       round(max(v) / 1e6, 1) AS contracts_mm,
       argMax(underlyings, (v, toString(expiry))) AS underlyings
FROM per_expiry
WHERE expiry >= '2026-07-13' AND expiry <= '2026-12-31'
GROUP BY month
HAVING toDayOfWeek(argMax(expiry, (v, toString(expiry)))) = 5
   AND toDayOfMonth(argMax(expiry, (v, toString(expiry)))) BETWEEN 15 AND 21
ORDER BY month
⌘/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 Options Expire? Friday 4 PM ET & Daily
SPY options volume by June 2026 expiration date: a new expiry every session series 21×2 → NVDA options volume by June 2026 expiration date: top six expiries series 6×2 → Options volume by expiration weekday: all US options traded June 1 - July 9, 2026 series 5×5 → June 2026 SPY options volume by days-to-expiry at the time of the trade series 4×3 → The daily-expiration club: every root with an expiry on all 21 June 2026 sessions ranking 11×3 → Who owns Wednesday: roots by distinct Wednesday-dated expirations, July 6-9, 2026 tape table 8×5 → See all 3,256 queries →