How Mutual Fund NAV Is Calculated: Example
Share of SPY's session volume by half hour, June 2026 averageseries ·
2026-09-28 · 13×2
Average move from the 11:30 a.m. ET European close to the 4:00 p.m. close, Q2 2026ranking ·
2026-09-28 · 5×3
One session's price path, SPY every 15 minutes on June 17, 2026series ·
2026-09-28 · 27×2
Distance from the 10:00 a.m. ET price to the close, SPY, by monthseries ·
2026-09-28 · 12×4
Do Mutual Funds Trade in the Primary Market?
Where an average session's share volume lands on the clock, September 1 to 15, 2026series ·
2026-09-22 · 64×2
Average trades per session across six exchange-listed funds, August 2026ranking ·
2026-09-22 · 6×2
One session of prices in an exchange-listed fund, 30-minute ET bucketsseries ·
2026-09-22 · 32×4
How far one exchange-listed fund's price travels within a session, August 2026series ·
2026-09-22 · 21×4
Share of SPY's session volume by half hour, June 2026 average
Share of SPY's session volume by half hour, June 2026 average
| et_time | share_of_volume_pct |
|---|---|
| 09:30 | 10.97 |
| 10:00 | 7.39 |
| 10:30 | 6.06 |
| 11:00 | 5.53 |
| 11:30 | 6.5 |
| 12:00 | 5.05 |
| 12:30 | 4.45 |
| 13:00 | 4.82 |
| 13:30 | 4.87 |
| 14:00 | 5.68 |
| 14:30 | 6.11 |
| 15:00 | 8.11 |
| 15:30 | 24.45 |
the exact SQL behind every number
WITH trades AS
(
SELECT
toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session_date,
if(has(conditions, 8), '15:30',
formatDateTime(
toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE),
'%H:%i')) AS et_time,
toFloat64(size) AS shares
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-01 04:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-07-01 04:00:00', 'UTC')
AND NOT hasAny(conditions, [15, 16, 38])
AND (has(conditions, 8)
OR (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) BETWEEN 570 AND 959)
),
bucket_totals AS
(
SELECT session_date, et_time, sum(shares) AS bucket_shares
FROM trades
GROUP BY session_date, et_time
),
session_totals AS
(
SELECT session_date, sum(bucket_shares) AS session_shares
FROM bucket_totals
GROUP BY session_date
)
SELECT
b.et_time AS et_time,
round(avg(b.bucket_shares / s.session_shares) * 100, 2) AS share_of_volume_pct
FROM bucket_totals AS b
INNER JOIN session_totals AS s ON s.session_date = b.session_date
GROUP BY b.et_time
ORDER BY b.et_time
More from this analysisHow Mutual Fund NAV Is Calculated: Example
One session's price path, SPY every 15 minutes on June 17, 2026
series 27×2
→
Distance from the 10:00 a.m. ET price to the close, SPY, by month
series 12×4
→
Average move from the 11:30 a.m. ET European close to the 4:00 p.m. close, Q2 2026
ranking 5×3
→
Where an average session's share volume lands on the clock, September 1 to 15, 2026
series 64×2
→
See all 3,256 queries →