STRASMORE/EXPLORE 2,648 QUERIES

activity_by_slot

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-26, from us-market-volume-by-hour-beijing-time.

as of series 13×4read in context →
activity_by_slot — 13 rows by 4 columns, computed from US exchange, SIP and OPRA data.
et_timebeijing_timetrade_count_per_minrange_bps
09:3021:3028466.8
10:0022:0020805.9
10:3022:3019965.6
11:0023:0017554.7
11:3023:3016044.5
12:0000:0013713.9
12:3000:3011643.7
13:0001:0012273.8
13:3001:3013843.6
14:0002:0014643.7
14:3002:3013553.4
15:0003:0016183.5
15:3003:3034324.4
Rows × columns
13 × 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 activity_by_slot, derived from the stored result.
ColumnTypeRangeNotes
et_time text 13 distinct values (09:30, 10:00, 10:30…)
beijing_time text 13 distinct values (00:00, 00:30, 01:00…)
trade_count_per_min number 1,164 to 3,432 count
range_bps number 3.4 to 6.8

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.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH spy_bars AS
(
    SELECT
        toTimeZone(window_start, 'America/New_York') AS et,
        toHour(et) * 60 + toMinute(et)               AS et_min,
        intDiv(et_min, 30) * 30                      AS slot,
        transactions,
        toFloat64(high)                             AS hi,
        toFloat64(low)                              AS lo,
        toFloat64(close)                            AS cl
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-04-01 04:00:00', 'UTC')
      AND window_start <  toDateTime('2026-07-01 04:00:00', 'UTC')
      AND et_min >= 570
      AND et_min <  960
      AND cl > 0
)
SELECT
    formatDateTime(toDateTime(slot * 60, 'UTC'), '%H:%i')                  AS et_time,
    formatDateTime(toDateTime(((slot + 720) % 1440) * 60, 'UTC'), '%H:%i') AS beijing_time,
    round(avg(transactions), 0)                                           AS trade_count_per_min,
    round(avg(10000 * (hi - lo) / cl), 1)                                 AS range_bps
FROM spy_bars
GROUP BY slot
ORDER BY slot
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.