The cost floor: median quoted spread in basis points of the midpoint, regular hours, June 22-26 2026
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-07-31, from Multi-Agent AI Trading Systems: What Is Real.
| ticker | spread_bps | round_trip_bps | quote_updates_m |
|---|---|---|---|
| SPY | 0.27 | 0.55 | 27 |
| AAPL | 1.01 | 2.03 | 7.2 |
| KO | 1.25 | 2.49 | 1.8 |
| MSFT | 1.35 | 2.7 | 3.4 |
| F | 7.08 | 14.17 | 0.6 |
| RIOT | 7.09 | 14.19 | 4.4 |
- Rows × columns
- 6 × 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 |
|---|---|---|---|
ticker |
text | 6 distinct values (AAPL, F, KO…) | |
spread_bps |
number | 0.27 to 7.09 | |
round_trip_bps |
number | 0.55 to 14.19 | |
quote_updates_m |
number | 0.6 to 27 |
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 ticker,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS spread_bps,
round(2 * quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS round_trip_bps,
round(count() / 1e6, 1) AS quote_updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'KO', 'F', 'RIOT')
AND sip_timestamp >= toDateTime('2026-06-22 00:00:00')
AND sip_timestamp < toDateTime('2026-06-27 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > bid_price) > 0
ORDER BY spread_bps
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.