hourly_profile
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-09-17, from nasdaq-closing-cross-explained.
| et_hour | trades_k | median_trade_shares | avg_trade_shares |
|---|---|---|---|
| 04:00 | 9.1 | 8 | 30 |
| 05:00 | 3.6 | 6 | 27 |
| 06:00 | 4.3 | 10 | 33 |
| 07:00 | 6.5 | 9 | 39 |
| 08:00 | 10.1 | 10 | 42 |
| 09:00 | 185.1 | 20 | 62 |
| 10:00 | 196.9 | 4 | 40 |
| 11:00 | 231.9 | 5 | 44 |
| 12:00 | 161.1 | 18 | 56 |
| 13:00 | 135.2 | 19 | 52 |
| 14:00 | 101.5 | 12 | 49 |
| 15:00 | 170.3 | 20 | 52 |
| 16:00 | 5.6 | 6 | 2859 |
| 17:00 | 2.1 | 5 | 43 |
| 18:00 | 1.8 | 4 | 25 |
| 19:00 | 1.9 | 5 | 29 |
- Rows × columns
- 16 × 4
- 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_hour |
text | 16 distinct values (04:00, 05:00, 06:00…) | |
trades_k |
number | 1.8 to 231.9 | count |
median_trade_shares |
number | 4 to 20 | count |
avg_trade_shares |
number | 25 to 2,859 | 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.
the exact SQL behind every number
SELECT
concat(if(cal.h < 10, '0', ''), toString(cal.h), ':00') AS et_hour,
round(ifNull(t.trade_count, 0) / 1000, 1) AS trades_k,
toUInt32(round(ifNull(t.median_trade_shares, 0), 0)) AS median_trade_shares,
toUInt32(round(ifNull(t.avg_trade_shares, 0), 0)) AS avg_trade_shares
FROM
(
SELECT toUInt8(4 + arrayJoin(range(16))) AS h
) AS cal
LEFT JOIN
(
SELECT
toHour(toTimeZone(sip_timestamp, 'America/New_York')) AS h,
count() AS trade_count,
quantileExact(0.5)(toFloat64(size)) AS median_trade_shares,
avg(toFloat64(size)) AS avg_trade_shares
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-09-10 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-09-11 00:00:00', 'UTC')
GROUP BY h
) AS t ON t.h = cal.h
ORDER BY cal.h
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 analysisnasdaq-closing-cross-explained
close_codes
ranking 4×3
→
close_seconds
series 20×4
→
cross_share
series 8×4
→
cross_print
table 6×6
→
Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays
ranking 25×4
→
Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years)
ranking 25×3
→
See all 2,309 queries →