SPY and SPX option volume by the minute, 15:45 to 16:25 ET
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-16, from What Time Do Options Stop Trading?.
| et_time | spy_pct | spx_pct |
|---|---|---|
| 15:45 | 11 | 5.21 |
| 15:46 | 3.07 | 3.77 |
| 15:47 | 3.19 | 3.78 |
| 15:48 | 3.04 | 3.79 |
| 15:49 | 3.03 | 4.36 |
| 15:50 | 4.92 | 6.83 |
| 15:51 | 2.72 | 4.27 |
| 15:52 | 3.17 | 5.99 |
| 15:53 | 2.93 | 4.44 |
| 15:54 | 3.7 | 6.08 |
| 15:55 | 3.93 | 6.81 |
| 15:56 | 3.09 | 4.8 |
| 15:57 | 3.36 | 4.48 |
| 15:58 | 3.2 | 4.67 |
| 15:59 | 6.14 | 8.25 |
| 16:00 | 4.12 | 1.76 |
| 16:01 | 2.57 | 1.32 |
| 16:02 | 2.29 | 1.27 |
| 16:03 | 2.55 | 1.52 |
| 16:04 | 2.97 | 1.02 |
| 16:05 | 3.25 | 1.56 |
| 16:06 | 3.27 | 1.29 |
| 16:07 | 2.34 | 1.5 |
| 16:08 | 1.46 | 1.53 |
| 16:09 | 1.51 | 1.98 |
| 16:10 | 2.07 | 1.76 |
| 16:11 | 1.71 | 1.18 |
| 16:12 | 1.37 | 1.49 |
| 16:13 | 3.42 | 0.85 |
| 16:14 | 4.59 | 0.81 |
| 16:15 | 0 | 0.28 |
| 16:16 | 0 | 0.21 |
| 16:17 | 0 | 0.27 |
| 16:18 | 0 | 0.16 |
| 16:19 | 0 | 0.18 |
| 16:20 | 0 | 0.11 |
| 16:21 | 0 | 0.11 |
| 16:22 | 0 | 0.13 |
| 16:23 | 0 | 0.05 |
| 16:24 | 0 | 0.05 |
| 16:25 | 0 | 0.05 |
- Rows × columns
- 41 × 3
- Period covered
- to
- 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 |
|---|---|---|---|
et_time |
date | 15:45 to 16:25 | |
spy_pct |
number | 0 to 11 | percent |
spx_pct |
number | 0.05 to 8.25 | percent |
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
SELECT
et_time,
round(100 * spy_contracts / sum(spy_contracts) OVER (), 2) AS spy_pct,
round(100 * spx_contracts / sum(spx_contracts) OVER (), 2) AS spx_pct
FROM
(
SELECT
concat(toString(intDiv(945 + grid.slot, 60)), ':',
leftPad(toString(modulo(945 + grid.slot, 60)), 2, '0')) AS et_time,
ifNull(tape.spy_contracts, 0) AS spy_contracts,
ifNull(tape.spx_contracts, 0) AS spx_contracts
FROM
(
SELECT arrayJoin(range(41)) AS slot
) AS grid
LEFT JOIN
(
WITH
extract(ticker, '^O:([A-Z]+)') AS root,
toTimeZone(sip_timestamp, 'America/New_York') AS et
SELECT
toHour(et) * 60 + toMinute(et) - 945 AS slot,
sumIf(size, root = 'SPY') AS spy_contracts,
sumIf(size, root IN ('SPX', 'SPXW')) AS spx_contracts
FROM global_markets.options_trades
WHERE (ticker LIKE 'O:SPY%' OR ticker LIKE 'O:SPX%')
AND root IN ('SPY', 'SPX', 'SPXW')
AND sip_timestamp >= '2026-07-13 19:45:00'
AND sip_timestamp < '2026-07-17 20:30:00'
AND (toHour(et) * 60 + toMinute(et)) BETWEEN 945 AND 985
GROUP BY slot
) AS tape ON tape.slot = grid.slot
)
ORDER BY et_time
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 analysisWhat Time Do Options Stop Trading?
Last SPY and SPX option print, minutes past the 4:00 p.m. equity close
series 12×4
→
Share of late session option volume printed after 4:00 p.m. ET, July 15, 2026
ranking 7×3
→
Last SPY option print on each 1:00 p.m. ET early close since July 2024
ranking 6×3
→
Dividend owed per assigned contract, recent ex dividend dates
series 6×3
→
What 100 shares per contract is worth, six household names
series 6×3
→
SPY: widest open print to close print gaps on monthly expiration Fridays since 2021
ranking 12×4
→
See all 2,170 queries →