The opening premium priced: median and 90th-percentile spread at the open (9:30-10:00 ET) vs. midday (12:00-14:00 ET)
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-18, from Why Are Spreads Wider at the Open? Real Data.
| ticker | valid_updates_m | open30_cents | midday_cents | open30_bps | midday_bps | open_vs_midday_x | open30_p90_cents | midday_p90_cents | open30_p90_bps | p90_x | dropped_onesided_locked_crossed |
|---|---|---|---|---|---|---|---|---|---|---|---|
| SPY | 16.55 | 2 | 2 | 0.26 | 0.26 | 1 | 3 | 3 | 0.39 | 1 | 128824 |
| AAPL | 4.69 | 7 | 3 | 2.03 | 0.89 | 2.28 | 13 | 6 | 3.89 | 2.24 | 40256 |
| ETSY | 0.34 | 19 | 7 | 25.24 | 9.71 | 2.6 | 42 | 12 | 56.51 | 3.63 | 348 |
- Rows × columns
- 3 × 12
- 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 | 3 distinct values (AAPL, ETSY, SPY) | |
valid_updates_m |
number | 0.34 to 16.55 | |
open30_cents |
number | 2 to 19 | |
midday_cents |
number | 2 to 7 | |
open30_bps |
number | 0.26 to 25.24 | |
midday_bps |
number | 0.26 to 9.71 | |
open_vs_midday_x |
number | 1 to 2.6 | US dollars |
open30_p90_cents |
number | 3 to 42 | |
midday_p90_cents |
number | 3 to 12 | |
open30_p90_bps |
number | 0.39 to 56.51 | |
p90_x |
number | 1 to 3.63 | |
dropped_onesided_locked_crossed |
text | 3 distinct values (128824, 348, 40256) |
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(countIf(isNotNull(spread_cents)) / 1e6, 2) AS valid_updates_m,
round(quantileExactIf(0.5)(spread_cents, clock_min BETWEEN 810 AND 839), 2) AS open30_cents,
round(quantileExactIf(0.5)(spread_cents, clock_min BETWEEN 960 AND 1079), 2) AS midday_cents,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839), 2) AS open30_bps,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS midday_bps,
round(quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.5)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS open_vs_midday_x,
round(quantileExactIf(0.9)(spread_cents, clock_min BETWEEN 810 AND 839), 2) AS open30_p90_cents,
round(quantileExactIf(0.9)(spread_cents, clock_min BETWEEN 960 AND 1079), 2) AS midday_p90_cents,
round(quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 810 AND 839), 2) AS open30_p90_bps,
round(quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 810 AND 839)
/ quantileExactIf(0.9)(spread_bps, clock_min BETWEEN 960 AND 1079), 2) AS p90_x,
toString(countIf(isNull(spread_cents))) AS dropped_onesided_locked_crossed
FROM (
SELECT ticker,
toHour(sip_timestamp) * 60 + toMinute(sip_timestamp) AS clock_min,
if(bid_price > 0 AND ask_price > bid_price, toFloat64(ask_price - bid_price) * 100, NULL) AS spread_cents,
if(bid_price > 0 AND ask_price > bid_price, toFloat64(ask_price - bid_price) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, NULL) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'ETSY')
AND sip_timestamp >= toDateTime(today() - 14)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'ETSY'], ticker)
在你的 AI 助手中使用这些数据
打开即可查询,已带上本页数据。免费,无需账号。