volume_by_beijing_hour
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-28, from us-daylight-saving-switch-in-beijing-time.
| et_time | beijing_summer | beijing_winter | summer_volume_mn | winter_volume_mn |
|---|---|---|---|---|
| 04:00 | 16:00 | 17:00 | 0.4 | 0.7 |
| 05:00 | 17:00 | 18:00 | 0.2 | 0.7 |
| 06:00 | 18:00 | 19:00 | 0.6 | 0.8 |
| 07:00 | 19:00 | 20:00 | 1.1 | 1.6 |
| 08:00 | 20:00 | 21:00 | 2.7 | 3 |
| 09:00 | 21:00 | 22:00 | 43.3 | 47.3 |
| 10:00 | 22:00 | 23:00 | 44.7 | 61.3 |
| 11:00 | 23:00 | 00:00 | 36.9 | 40.9 |
| 12:00 | 00:00 | 01:00 | 29.8 | 35.2 |
| 13:00 | 01:00 | 02:00 | 27.2 | 29.2 |
| 14:00 | 02:00 | 03:00 | 45.7 | 40.7 |
| 15:00 | 03:00 | 04:00 | 95.1 | 87.2 |
| 16:00 | 04:00 | 05:00 | 34.6 | 33 |
| 17:00 | 05:00 | 06:00 | 1 | 1.5 |
| 18:00 | 06:00 | 07:00 | 0.4 | 1 |
| 19:00 | 07:00 | 08:00 | 0.3 | 0.6 |
- Rows × columns
- 16 × 5
- 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_time |
text | 16 distinct values (04:00, 05:00, 06:00…) | |
beijing_summer |
text | 16 distinct values (00:00, 01:00, 02:00…) | |
beijing_winter |
text | 16 distinct values (00:00, 01:00, 02:00…) | |
summer_volume_mn |
number | 0.2 to 95.1 | count |
winter_volume_mn |
number | 0.6 to 87.2 | 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
formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:00') AS et_time,
anyIf(formatDateTime(toTimeZone(window_start, 'Asia/Shanghai'), '%H:00'),
toDate(toTimeZone(window_start, 'America/New_York')) < toDate('2025-11-01')) AS beijing_summer,
anyIf(formatDateTime(toTimeZone(window_start, 'Asia/Shanghai'), '%H:00'),
toDate(toTimeZone(window_start, 'America/New_York')) > toDate('2025-11-01')) AS beijing_winter,
round(sumIf(volume,
toDate(toTimeZone(window_start, 'America/New_York')) < toDate('2025-11-01')) / 1e6, 1) AS summer_volume_mn,
round(sumIf(volume,
toDate(toTimeZone(window_start, 'America/New_York')) > toDate('2025-11-01')) / 1e6, 1) AS winter_volume_mn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-10-27 06:00:00', 'UTC')
AND window_start < toDateTime('2025-11-08 06:00:00', 'UTC')
AND toHour(toTimeZone(window_start, 'America/New_York')) BETWEEN 4 AND 19
GROUP BY et_time
ORDER BY et_time
在你的 AI 助手中使用这些数据
打开即可查询,已带上本页数据。免费,无需账号。