STRASMORE/EXPLORE 3,256 QUERIES 22Y EQUITIES · 12Y OPTIONS

3,256 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

What Happens After a Big One-Day Gain
How the next session split: gapped up, gapped up and faded, closed highertable · 2026-10-04 · 5×5 Overnight gap versus intraday run: what the next session didtable · 2026-10-04 · 3×5 Next-session returns after a big one-day gain, by size of the gaintable · 2026-10-04 · 5×5 The full spread of next-session returns for top-20 daily gainersranking · 2026-10-04 · 5×3Preview: 5 ranked values, smallest first. Sample coverage and next-session medians, year by yeartable · 2026-10-04 · 4×5
The 7% Sell Rule Explained: O'Neil's Stop-Loss
Position size allowed by a $500 risk budget at each stop distanceranking · 2026-09-12 · 3×2Preview: 3 ranked values, largest first. Gain needed to get back to even after a lossranking · 2026-09-12 · 6×3Preview: 6 ranked values, smallest first.
Stop Order vs Stop-Limit Order: How Each Fills
Average one-minute high-low range by time of dayseries · 2026-08-08 · 13×3Preview: a 13-point series, ending lower. Sessions that gapped through a 2% stop, and whether the limit price tradedranking · 2026-08-08 · 5×3Preview: 5 ranked values, smallest first. NVDA's largest gap-down opens and the 30 minutes that followedseries · 2026-08-08 · 8×3Preview: a 8-point series, ending higher. How often each stock opened below the prior closeranking · 2026-08-08 · 5×3Preview: 5 ranked values, largest first.
Do Stock Gaps Always Get Filled? The Data
Average one-minute range and volume by time of day, 2025series · 2026-08-06 · 26×3Preview: a 16-point series, ending lower. Same-session gap fill rate by gap size, eight large caps, 2021 to 2026ranking · 2026-08-06 · 5×3Preview: 5 ranked values, largest first. Gap fill rate by how heavy the gap day's volume wasranking · 2026-08-06 · 3×4Preview: 3 ranked values, largest first. Share of 1%+ gaps filled, by how long you waitranking · 2026-08-06 · 4×3Preview: 4 ranked values, largest first.
Why Do Stocks Gap Up or Down Overnight?
Overnight gaps by ticker, H1 2026: average absolute gap and the single biggest gapseries · 2026-07-26 · 6×5Preview: a 6-point series, ending higher. MSFT straddle prices at the close before the gap: Jan 28, 2026, Jan 30 expirytable · 2026-07-26 · 4×5 MSFT: how the January 29, 2026 gap formed, 30-minute premarket bucketsseries · 2026-07-26 · 11×8Preview: a 11-point series, ending higher. SPY, H1 2026: average absolute overnight gap vs average absolute intraday movescalar · 2026-07-26 · 1×4123 What crossed the wire during SPY's biggest overnight gap of H1 2026table · 2026-07-26 · 2×3 SPY overnight gaps by weekday: every session, January 2024 through June 2026series · 2026-07-26 · 5×4Preview: a 5-point series, ending lower. SPY's six biggest overnight gaps of H1 2026: and the same day's open-to-close moveseries · 2026-07-26 · 6×3Preview: a 6-point series, ending higher.
How the next session split: gapped up, gapped up and faded, closed higher

How the next session split: gapped up, gapped up and faded, closed higher

most recentas of table 5×5read in context →
How the next session split: gapped up, gapped up and faded, closed higher — 5 rows by 5 columns, computed from US exchange, SIP and OPRA data.
gain_bucketobservationsgapped_up_pctgapped_up_then_faded_pctclosed_higher_pct
under 10%66349.624.947.5
10 to 15%275248.427.444.7
15 to 25%574345.826.143.1
25 to 50%413342.324.441.1
50% and up168931.219.532.7
the exact SQL behind every number
WITH bars AS
(
    SELECT
        ticker,
        date,
        max(toFloat64(open))   AS o,
        max(toFloat64(close))  AS c,
        max(toFloat64(volume)) AS vol
    FROM global_markets.stocks_daily_aggs
    WHERE date >= today() - 1095
      AND date <= today() - 2
      AND ifNull(otc, 0) = 0
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, date
),
seq AS
(
    SELECT
        ticker,
        date,
        c,
        vol,
        lagInFrame(c)     OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_c,
        leadInFrame(o)    OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS next_o,
        leadInFrame(c)    OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS next_c,
        leadInFrame(date) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS next_date
    FROM bars
),
movers AS
(
    SELECT
        date,
        ticker,
        100 * (c / prev_c - 1)      AS gain_pct,
        100 * (next_o / c - 1)      AS next_gap_pct,
        100 * (next_c / next_o - 1) AS next_oc_pct,
        100 * (next_c / c - 1)      AS next_cc_pct,
        row_number() OVER (PARTITION BY date ORDER BY c / prev_c DESC, ticker ASC) AS rnk
    FROM seq
    WHERE prev_c >= 5
      AND next_o > 0
      AND next_c > 0
      AND c * vol >= 5000000
      AND dateDiff('day', date, next_date) <= 6
)
SELECT
    multiIf(gain_pct < 10, 'under 10%',
            gain_pct < 15, '10 to 15%',
            gain_pct < 25, '15 to 25%',
            gain_pct < 50, '25 to 50%',
                           '50% and up')                                       AS gain_bucket,
    count()                                                                    AS observations,
    round(100 * countIf(next_gap_pct > 0) / count(), 1)                         AS gapped_up_pct,
    round(100 * countIf(next_gap_pct > 0 AND next_oc_pct < 0) / count(), 1)     AS gapped_up_then_faded_pct,
    round(100 * countIf(next_cc_pct > 0) / count(), 1)                          AS closed_higher_pct
FROM movers
WHERE rnk <= 20
GROUP BY gain_bucket
ORDER BY min(gain_pct) ASC
$