STRASMORE/EXPLORE 2,500 QUERIES

session_clock

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-23, from us-stock-market-hours-beijing-time.

as of series 32×4read in context →
session_clock — 32 rows by 4 columns, computed from US exchange, SIP and OPRA data.
beijing_timeet_timevolume_millionstrades_thousands
16:0004:000.4214
16:3004:300.122.1
17:0005:000.12.4
17:3005:300.122.3
18:0006:000.122.1
18:3006:300.152.7
19:0007:000.748.7
19:3007:300.497.5
20:0008:000.8311.5
20:3008:301.0314.2
21:0009:001.1119
21:3009:3020.1301.2
22:0010:0014.6246.6
22:3010:3011.93234
23:0011:0027.99207.2
23:3011:3010.06199
00:0012:007.77140.3
00:3012:306.81117.3
01:0013:0010.51100.6
01:3013:305.41132.5
02:0014:0011.11152.9
02:3014:3024.35201.3
03:0015:0018.52250
03:3015:3043.66455.1
04:0016:0032.631.8
04:3016:301.258.4
05:0017:000.164.3
05:3017:300.432.2
06:0018:000.193.3
06:3018:300.173
07:0019:000.12.3
07:3019:300.172.4
Rows × columns
32 × 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 session_clock, derived from the stored result.
ColumnTypeRangeNotes
beijing_time text 32 distinct values (00:00, 00:30, 01:00…)
et_time text 32 distinct values (04:00, 04:30, 05:00…)
volume_millions number 0.1 to 43.66 count
trades_thousands number 2.1 to 455.1 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.

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.

SELECT
    beijing_time,
    et_time,
    round(sum(volume) / 1e6, 2)       AS volume_millions,
    round(sum(transactions) / 1e3, 1) AS trades_thousands
FROM
(
    SELECT
        formatDateTime(toStartOfInterval(toTimeZone(window_start, 'Asia/Shanghai'), INTERVAL 30 MINUTE), '%H:%i')    AS beijing_time,
        formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
        toHour(toTimeZone(window_start, 'America/New_York')) * 60
            + intDiv(toMinute(toTimeZone(window_start, 'America/New_York')), 30) * 30                                AS et_minute_of_day,
        volume,
        transactions
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-09-14 08:00:00', 'UTC')
      AND window_start <  toDateTime('2026-09-19 00:00:00', 'UTC')
)
GROUP BY beijing_time, et_time, et_minute_of_day
ORDER BY et_minute_of_day
⌘/Ctrl + Enter

Work with this data in your AI assistant

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