open_spread_trace
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 the-10-am-rule-in-stocks.
| et_time | spy_spread_bps | aapl_spread_bps |
|---|---|---|
| 09:30 | 0.44 | 2.71 |
| 09:35 | 0.44 | 2.31 |
| 09:40 | 0.44 | 2.32 |
| 09:45 | 0.44 | 2.71 |
| 09:50 | 0.44 | 2.32 |
| 09:55 | 0.3 | 2.32 |
| 10:00 | 0.44 | 1.94 |
| 10:05 | 0.44 | 1.93 |
| 10:10 | 0.3 | 1.54 |
| 10:15 | 0.3 | 1.54 |
| 10:20 | 0.3 | 1.54 |
| 10:25 | 0.3 | 1.15 |
- Rows × columns
- 12 × 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_time |
text | 12 distinct values (09:30, 09:35, 09:40…) | |
spy_spread_bps |
number | 0.3 to 0.44 | |
aapl_spread_bps |
number | 1.15 to 2.71 |
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(toStartOfFiveMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
round(quantileDeterministicIf(0.5)(
10000 * (toFloat64(ask_price) - toFloat64(bid_price))
/ ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
toUInt64(sequence_number),
ticker = 'SPY'), 2) AS spy_spread_bps,
round(quantileDeterministicIf(0.5)(
10000 * (toFloat64(ask_price) - toFloat64(bid_price))
/ ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
toUInt64(sequence_number),
ticker = 'AAPL'), 2) AS aapl_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL')
AND sip_timestamp >= '2026-03-10 13:29:00'
AND sip_timestamp < '2026-03-10 14:31:00'
AND bid_price > 0
AND ask_price > bid_price
AND sequence_number >= 0
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
+ toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 630
GROUP BY et_time
HAVING countIf(ticker = 'SPY') > 0
AND countIf(ticker = 'AAPL') > 0
ORDER BY et_time
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.