STRASMORE/EXPLORE 3,094 QUERIES

How often six household names opened 2% or more below the prior close (10 years)

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-05, from Protective Put vs Stop-Loss Order.

as of table 6×5read in context →
How often six household names opened 2% or more below the prior close (10 years) — 6 rows by 5 columns, computed from US exchange, SIP and OPRA data.
tickergap_down_2pct_rate_pctworst_gap_down_pctgap_down_day_countsession_count
NVDA7.2119.31812509
AAPL3.2712.96822510
MSFT2.3911.86602511
SPY110.45252511
JNJ0.967.98242511
KO0.6412.85162511
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 How often six household names opened 2% or more below the prior close (10 years), derived from the stored result.
ColumnTypeRangeNotes
ticker text 6 distinct values (AAPL, JNJ, KO…)
gap_down_2pct_rate_pct number 0.64 to 7.21 percent
worst_gap_down_pct number 7.98 to 19.3 percent
gap_down_day_count number 16 to 181 count
session_count number 2,509 to 2,511 count

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(overnight_move_pct <= -2) * 100.0 / count(), 2) AS gap_down_2pct_rate_pct,
    round(abs(min(overnight_move_pct)), 2)                        AS worst_gap_down_pct,
    countIf(overnight_move_pct <= -2)                             AS gap_down_day_count,
    count()                                                       AS session_count
FROM
(
    SELECT
        ticker,
        round((toFloat64(open) / toFloat64(prev_close) - 1) * 100, 3) AS overnight_move_pct
    FROM
    (
        SELECT
            ticker,
            date,
            open,
            any(close) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close
        FROM
        (
            SELECT
                ticker,
                date,
                any(open)  AS open,
                any(close) AS close
            FROM global_markets.stocks_daily_aggs
            WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
              AND date >= '2016-10-01'
              AND date <= '2026-09-30'
              AND (ticker, date) NOT IN (SELECT ticker, execution_date FROM global_markets.stocks_splits)
            GROUP BY ticker, date
        )
    )
    WHERE prev_close > 0
)
GROUP BY ticker
ORDER BY gap_down_2pct_rate_pct 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 analysisProtective Put vs Stop-Loss Order
AAPL's ten deepest overnight gaps down since October 2016, and where the session low went series 10×4 → The SPY $740 put's value over its final weeks (expired Jun 18 2026) series 11×2 → 100 SPY shares alone vs. the same shares with one $740 put held against them series 11×3 → The SPY $760 call you could sell to finance the put (early June 2026) series 5×2 → A decade of SPY put-call ratios: median, low and high of the daily reading by year table 12×5 → S&P 500 tracker (SPY): down sessions by calendar year, 2016 to mid-2026 table 11×5 → See all 3,094 queries →