STRASMORE/EXPLORE 2,985 QUERIES

gap_down_counts

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-03, from why-stop-orders-fill-below-the-stop-price.

as of table 6×5read in context →
gap_down_counts — 6 rows by 5 columns, computed from US exchange, SIP and OPRA data.
symbolsession_countopens_1pct_belowopens_3pct_belowdeepest_gap_down_abs_pct
NVDA14413054714.18
XOM1441173186.34
AAPL1441151149.45
MSFT1441149128.65
SPY14418343.99
KO14413125.29
Rows × columns
6 × 5
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 gap_down_counts, derived from the stored result.
ColumnTypeRangeNotes
symbol text 6 distinct values (AAPL, KO, MSFT…)
session_count number every row is 1,441 count
opens_1pct_below number 31 to 305
opens_3pct_below number 2 to 47
deepest_gap_down_abs_pct number 3.99 to 14.18 percent

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 sessions AS
(
    SELECT
        ticker,
        date,
        toFloat64(any(open))  AS open_px,
        toFloat64(any(close)) AS close_px
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'XOM')
      AND date >= '2021-01-01'
      AND date <  '2026-10-01'
    GROUP BY ticker, date
),
gaps AS
(
    SELECT
        ticker,
        round((open_px / prev_close - 1) * 100, 2) AS gap_pct
    FROM
    (
        SELECT
            ticker,
            date,
            open_px,
            any(close_px) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close
        FROM sessions
    )
    WHERE prev_close > 0
)
SELECT
    ticker                        AS symbol,
    count()                       AS session_count,
    countIf(gap_pct <= -1)        AS opens_1pct_below,
    countIf(gap_pct <= -3)        AS opens_3pct_below,
    round(abs(min(gap_pct)), 2)   AS deepest_gap_down_abs_pct
FROM gaps
GROUP BY ticker
ORDER BY opens_3pct_below DESC
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysiswhy-stop-orders-fill-below-the-stop-price
spread_by_clock series 27×4 → gap_trace series 12×4 → The 2s10s spread, every print of the half table 124×2 → The 2s10s spread, every print of the half table 124×2 → Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print table 100×7 → SPY at one-minute resolution, 2:00–3:30 pm ET on May 6, 2010 table 90×4 → See all 2,985 queries →