spread_by_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-27, from us-premarket-and-after-hours-in-beijing-time.
| et_hour | avg_spread_bps | quote_count |
|---|---|---|
| 04:00 | 19 | 150 |
| 05:00 | 19.74 | 219 |
| 06:00 | 23.95 | 195 |
| 07:00 | 14.29 | 237 |
| 08:00 | 14.82 | 835 |
| 09:00 | 2.43 | 100405 |
| 10:00 | 1.48 | 151094 |
| 11:00 | 1.42 | 115311 |
| 12:00 | 1.43 | 59105 |
| 13:00 | 1.4 | 55371 |
| 14:00 | 1.35 | 46091 |
| 15:00 | 1.27 | 66892 |
| 16:00 | 38.89 | 260 |
| 17:00 | 38.66 | 196 |
| 18:00 | 11.43 | 171 |
| 19:00 | 9.18 | 278 |
- Rows × columns
- 16 × 3
- 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…) | |
avg_spread_bps |
number | 1.27 to 38.89 | |
quote_count |
number | 150 to 151,094 | 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
concat(leftPad(toString(et_h), 2, '0'), ':00') AS et_hour,
round(avg(
(toFloat64(ask_price) - toFloat64(bid_price))
/ ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000
), 2) AS avg_spread_bps,
count() AS quote_count
FROM
(
SELECT
toHour(toTimeZone(sip_timestamp, 'America/New_York')) AS et_h,
ask_price,
bid_price
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'KO'
AND sip_timestamp >= toDateTime('2026-06-10 04:00:00', 'America/New_York')
AND sip_timestamp < toDateTime('2026-06-10 20:00:00', 'America/New_York')
AND bid_price > 0
AND ask_price > bid_price
)
GROUP BY et_h
HAVING count() >= 20
ORDER BY et_h
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.