Why Trading Volume Dies at Midday: U-Shape
Share of regular-session volume by half hour, SPY and AAPLseries ·
2026-09-28 · 13×3
Average one-minute SPY range in basis points, by half hourseries ·
2026-09-28 · 13×3
SPY open, midday and close volume against an average minute, by yearranking ·
2026-09-28 · 8×4
Open, midday and close volume against an average session minuteranking ·
2026-09-28 · 6×4
The 10:00 AM Rule in Stocks, Tested
Volume and range coverage by half hour of the session, 2023 to 2025series ·
2026-09-26 · 13×3
Median quoted spread by five minute bucket, SPY and AAPL, 10 March 2026series ·
2026-09-26 · 12×3
First 30 minutes: share of the day's range and volume, 2023 to 2025ranking ·
2026-09-26 · 6×3
Average one minute range by ET clock minute, 09:30 to 10:59series ·
2026-09-26 · 90×3
Session coverage behind the long-run panelsranking ·
2026-09-26 · 6×4
When Do 0DTE Options Trade? By the Hour
Same-day share of options volume by weekday: all sessions, June 1 to July 10, 2026series ·
2026-08-13 · 5×5
Median bid-ask spread on SPY same-day contracts quoted $1-$10, by ET hour: July 10, 2026ranking ·
2026-08-13 · 7×4
What the last hour trades: same-day volume by premium paid, 10am hour vs. closing hour, July 10, 2026ranking ·
2026-08-13 · 5×4
0DTE contract volume, share of all options volume, and flow rate by ET hour: Friday, July 10, 2026table ·
2026-08-13 · 7×5
Same-day calls vs. puts by ET hour, and the put share of 0DTE volume: July 10, 2026ranking ·
2026-08-13 · 7×4
Same-day options volume by underlying: the ten heaviest names, July 10, 2026table ·
2026-08-13 · 10×5
Share of regular-session volume by half hour, SPY and AAPL
Share of regular-session volume by half hour, SPY and AAPL
| et_time | spy_pct | aapl_pct |
|---|---|---|
| 09:30 | 12.15 | 17.86 |
| 10:00 | 8.93 | 9.69 |
| 10:30 | 7.44 | 7.73 |
| 11:00 | 6.97 | 7.04 |
| 11:30 | 6.05 | 6.16 |
| 12:00 | 5.35 | 5.46 |
| 12:30 | 5.16 | 5.16 |
| 13:00 | 5.15 | 5.25 |
| 13:30 | 5.15 | 4.88 |
| 14:00 | 5.9 | 5.03 |
| 14:30 | 6.02 | 5.12 |
| 15:00 | 7.49 | 6.21 |
| 15:30 | 18.26 | 14.4 |
the exact SQL behind every number
WITH session_minutes AS
(
SELECT
ticker,
formatDateTime(
toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
'%H:%i') AS et_time,
toFloat64(volume) AS share_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'AAPL')
AND window_start >= '2025-01-02 00:00:00'
AND window_start < '2026-07-01 00:00:00'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
),
by_bucket AS
(
SELECT
ticker,
et_time,
sum(share_volume) AS bucket_volume
FROM session_minutes
GROUP BY ticker, et_time
),
ticker_totals AS
(
SELECT
ticker,
sum(bucket_volume) AS ticker_volume
FROM by_bucket
GROUP BY ticker
)
SELECT
b.et_time AS et_time,
round(100 * sumIf(b.bucket_volume, b.ticker = 'SPY')
/ max(if(t.ticker = 'SPY', t.ticker_volume, 0)), 2) AS spy_pct,
round(100 * sumIf(b.bucket_volume, b.ticker = 'AAPL')
/ max(if(t.ticker = 'AAPL', t.ticker_volume, 0)), 2) AS aapl_pct
FROM by_bucket AS b
INNER JOIN ticker_totals AS t ON t.ticker = b.ticker
GROUP BY b.et_time
ORDER BY b.et_time
More from this analysisWhy Trading Volume Dies at Midday: U-Shape
Average one-minute SPY range in basis points, by half hour
series 13×3
→
SPY open, midday and close volume against an average minute, by year
ranking 8×4
→
Open, midday and close volume against an average session minute
ranking 6×4
→
AAPL price vs. running VWAP: July 2, 2026 regular session, sampled every 5 minutes
series 78×3
→
See all 3,256 queries →