STRASMORE/EXPLORE 2,170 QUERIES

The touch at the gap open: median quoted spread and quote rate, 9:30–9:42 ET vs a midday control (12 minutes each)

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-26, from Market Recap: July 6, 2026, The Day in Numbers.

as of table 10×9read in context →
The touch at the gap open: median quoted spread and quote rate, 9:30–9:42 ET vs a midday control (12 minutes each) — 10 rows by 9 columns, computed from US exchange, SIP and OPRA data.
tickeropen_spread_bpsmidday_spread_bpsspread_delta_bpsopen_updates_kmidday_updates_kquote_rate_ratiosession_updates_mdropped_invalid_quotes
DIA0.760.570.19105.919.65.40.837
IWM0.670.330.34219.198.42.22.5662
MSFT3.881.562.3225.26.63.80.32121
MU8.094.463.6353.515.23.50.69317
QQQ0.830.420.42357.9121.42.93.96239
SNDK21.078.1612.914.94.63.30.1638
SPY0.270.270276.992.833.35883
STX30.9425.625.322.90.83.40.0411
TSLA4.571.682.8940.617.72.30.6553
WDC14.679.285.399.52.14.50.140
Rows × columns
10 × 9
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for The touch at the gap open: median quoted spread and quote rate, 9:30–9:42 ET vs a midday control (12 minutes each), derived from the stored result.
ColumnTypeRangeNotes
ticker text 10 distinct values (DIA, IWM, MSFT…)
open_spread_bps number 0.27 to 30.94 US dollars
midday_spread_bps number 0.27 to 25.62
spread_delta_bps number 0 to 12.9
open_updates_k number 2.9 to 357.9 US dollars
midday_updates_k number 0.8 to 121.4
quote_rate_ratio number 2.2 to 5.4 ratio or rate
session_updates_m number 0.04 to 3.96
dropped_invalid_quotes number 7 to 883

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.

the exact SQL behind every number
SELECT
    ticker,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00'), 2) AS open_spread_bps,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS midday_spread_bps,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00')
        - quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS spread_delta_bps,
    round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / 1e3, 1) AS open_updates_k,
    round(countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00') / 1e3, 1) AS midday_updates_k,
    round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 1) AS quote_rate_ratio,
    round(count() / 1e6, 2) AS session_updates_m,
    countIf(bid_price <= 0 OR ask_price <= 0 OR bid_price > ask_price) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('DIA', 'IWM', 'MSFT', 'MU', 'QQQ', 'SNDK', 'SPY', 'STX', 'TSLA', 'WDC')
  AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 20:00:00'
GROUP BY ticker
ORDER BY ticker

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisMarket Recap: July 6, 2026, The Day in Numbers
Every split executed July 6, with its unadjusted close before and after (splits with no regular-session tape on both sides are dropped) table 12×7 The eleven sector ETFs: July 6 vs the July 2 close, split into gap and intraday table 11×6 Volume leaders two ways: top 6 by dollars traded, top 4 by shares traded (one reused-symbol listing excluded pending entity verification) table 10×5 SPY / QQQ / DIA / IWM: July 6 vs the July 2 close, regular hours table 4×10 The memory and storage names: change vs Thursday's close, range timing, and dollar volume table 4×10 Megacap rotation: change vs Thursday's close, range timing, and dollar volume table 4×10 See all 2,170 queries →