STRASMORE/EXPLORE 2,985 QUERIES

gap_trace

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 series 12×4read in context →
gap_trace — 12 rows by 4 columns, computed from US exchange, SIP and OPRA data.
session_dateopen_vs_prev_close_pctlow_vs_prev_close_pctclose_vs_prev_close_pct
2022-02-24-2.59-2.681.5
2022-06-13-2.55-4.23-3.8
2022-06-16-2.29-3.99-3.31
2022-09-13-2.22-4.64-4.35
2022-10-13-2.06-2.372.64
2024-08-05-3.99-4.25-2.91
2025-01-27-2.16-2.19-1.41
2025-04-03-3.44-4.93-4.93
2025-04-04-2.43-5.9-5.85
2025-04-07-3.18-4.65-0.18
2025-04-10-3-7.16-4.38
2026-03-03-1.65-2.44-0.88
Rows × columns
12 × 4
Period covered
to
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_trace, derived from the stored result.
ColumnTypeRangeNotes
session_date date 2022-02-24 to 2026-03-03
open_vs_prev_close_pct number -3.99 to -1.65 percent
low_vs_prev_close_pct number -7.16 to -2.19 percent
close_vs_prev_close_pct number -5.85 to 2.64 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
        date,
        toFloat64(any(open))  AS open_px,
        toFloat64(any(low))   AS low_px,
        toFloat64(any(close)) AS close_px
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= '2021-01-01'
      AND date <  '2026-10-01'
    GROUP BY date
),
with_prev AS
(
    SELECT
        date,
        open_px,
        low_px,
        close_px,
        any(close_px) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close
    FROM sessions
),
ranked AS
(
    SELECT
        date,
        round((open_px  / prev_close - 1) * 100, 2) AS open_vs_prev_close_pct,
        round((low_px   / prev_close - 1) * 100, 2) AS low_vs_prev_close_pct,
        round((close_px / prev_close - 1) * 100, 2) AS close_vs_prev_close_pct
    FROM with_prev
    WHERE prev_close > 0
    ORDER BY open_vs_prev_close_pct ASC
    LIMIT 12
)
SELECT
    toString(date)           AS session_date,
    open_vs_prev_close_pct,
    low_vs_prev_close_pct,
    close_vs_prev_close_pct
FROM ranked
ORDER BY date
⌘/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_down_counts table 6×5 → The 2s10s spread by month, full history series 604×5 → One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 → The 5s30s spread month by month, with both legs series 241×4 → 5s30s and 2s10s, monthly averages over 20 years series 241×3 → See all 2,985 queries →