STRASMORE/EXPLORE 2,469 QUERIES

close_gap

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-22, from can-you-place-a-limit-order-on-a-mutual-fund.

as of ranking 6×4read in context →
close_gap — 6 rows by 4 columns, computed from US exchange, SIP and OPRA data.
tickeravg_gap_bpswidest_gap_bpsobservations
IVV0.94.251
VTI0.93.751
VOO0.82.851
QQQ0.8351
SPY0.72.951
DIA0.61.551
Rows × columns
6 × 4
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 close_gap, derived from the stored result.
ColumnTypeRangeNotes
ticker text 6 distinct values (DIA, IVV, QQQ…)
avg_gap_bps number 0.6 to 0.9
widest_gap_bps number 1.5 to 4.2
observations number every row is 51

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.

WITH last_regular_minute AS
(
    SELECT
        ticker,
        toDate(toTimeZone(window_start, 'America/New_York')) AS d,
        argMax(toFloat64(close), window_start)               AS minute_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'IVV', 'VOO', 'QQQ', 'VTI', 'DIA')
      AND window_start >= today() - 75
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
    GROUP BY ticker, d
)
SELECT
    a.ticker                                                                AS ticker,
    round(avg(abs(toFloat64(a.close) / m.minute_close - 1) * 10000), 1)     AS avg_gap_bps,
    round(max(abs(toFloat64(a.close) / m.minute_close - 1) * 10000), 1)     AS widest_gap_bps,
    count()                                                                 AS observations
FROM global_markets.stocks_daily_aggs AS a
INNER JOIN last_regular_minute AS m ON m.ticker = a.ticker AND m.d = a.date
WHERE a.ticker IN ('SPY', 'IVV', 'VOO', 'QQQ', 'VTI', 'DIA')
  AND a.date >= today() - 75
  AND a.date <= today() - 3
GROUP BY a.ticker
ORDER BY avg_gap_bps DESC
⌘/Ctrl + Enter
More from this analysiscan-you-place-a-limit-order-on-a-mutual-fund
daily_swing series 29×4 etf_intraday series 13×3 closures series 12×6 Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays ranking 25×4 Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years) ranking 25×3 SPY options median spread by expiration date, near-the-money strikes only ranking 25×4 See all 2,469 queries →