STRASMORE/EXPLORE 2,309 QUERIES

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.

as of ranking 16×4read in context →
hourly_profile — 16 rows by 4 columns, computed from US exchange, SIP and OPRA data.
et_hourtrades_kmedian_trade_sharesavg_trade_shares
04:009.1830
05:003.6627
06:004.31033
07:006.5939
08:0010.11042
09:00185.12062
10:00196.9440
11:00231.9544
12:00161.11856
13:00135.21952
14:00101.51249
15:00170.32052
16:005.662859
17:002.1543
18:001.8425
19:001.9529
Rows × columns
16 × 4
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for hourly_profile, derived from the stored result.
ColumnTypeRangeNotes
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 →