spread_by_wat
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-10-16, from us-market-volume-by-hour-lagos-time.
| wat_time | et_time | avg_spread_cents | avg_spread_bps |
|---|---|---|---|
| 14:00 | 09:00 | 6.24 | 0.85 |
| 14:30 | 09:30 | 2.75 | 0.37 |
| 15:00 | 10:00 | 2.61 | 0.35 |
| 15:30 | 10:30 | 2.68 | 0.37 |
| 16:00 | 11:00 | 2.92 | 0.4 |
| 16:30 | 11:30 | 3.65 | 0.5 |
| 17:00 | 12:00 | 3.21 | 0.44 |
| 17:30 | 12:30 | 3.33 | 0.46 |
| 18:00 | 13:00 | 2.89 | 0.4 |
| 18:30 | 13:30 | 2.98 | 0.41 |
| 19:00 | 14:00 | 2.85 | 0.39 |
| 19:30 | 14:30 | 2.78 | 0.38 |
| 20:00 | 15:00 | 2.39 | 0.33 |
| 20:30 | 15:30 | 2.26 | 0.31 |
| 21:00 | 16:00 | 6.7 | 0.92 |
| 21:30 | 16:30 | 7.5 | 1.04 |
- Rows × columns
- 16 × 4
- 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 |
|---|---|---|---|
wat_time |
text | 16 distinct values (14:00, 14:30, 15:00…) | |
et_time |
text | 16 distinct values (09:00, 09:30, 10:00…) | |
avg_spread_cents |
number | 2.26 to 7.5 | |
avg_spread_bps |
number | 0.31 to 1.04 |
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(toStartOfInterval(sip_timestamp, INTERVAL 30 MINUTE), 'Africa/Lagos'), '%H:%i') AS wat_time,
formatDateTime(toTimeZone(toStartOfInterval(sip_timestamp, INTERVAL 30 MINUTE), 'America/New_York'), '%H:%i') AS et_time,
round(avg(toFloat64(ask_price - bid_price)) * 100, 2) AS avg_spread_cents,
round(avg(toFloat64(ask_price - bid_price) / toFloat64(ask_price + bid_price) * 2) * 10000, 2) AS avg_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-06-10 13:00:00'
AND sip_timestamp < '2026-06-10 21:00:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY toStartOfInterval(sip_timestamp, INTERVAL 30 MINUTE)
ORDER BY toStartOfInterval(sip_timestamp, INTERVAL 30 MINUTE)
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.