The July 2026 holiday move: SPY volume in contracts expiring Thursday July 2 vs Friday July 3
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.
- Rows × columns
- 1 × 2
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
thursday_july2_contracts_mm |
number | every row is 12.84 | count |
friday_july3_contracts_mm |
number | every row is 0 | count |
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 round(sumIf(vol, expiry = '2026-07-02') / 1e6, 2) AS thursday_july2_contracts_mm,
round(sumIf(vol, expiry = '2026-07-03') / 1e6, 2) AS friday_july3_contracts_mm
FROM (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
toFloat64(volume) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-29 04:00:00'
AND window_start < '2026-07-03 04:00:00'
AND ticker LIKE 'O:SPY2%'
)
WHERE expiry IS NOT NULL
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.