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

Iron Condor Win Rate and Expectancy
Short strikes touched versus short strikes finishing in the moneyseries · 2026-10-05 · 5×5Preview: a 5-point series, ending higher. Credit, risk and breakeven win rate for nine SPY condor structurestable · 2026-10-05 · 9×6 Premium per dollar of spot at the same 16 delta, five underlyingsranking · 2026-10-05 · 5×4Preview: 5 ranked values, largest first. Advertised iron condor win rate by short delta band (SPY)table · 2026-10-05 · 5×5
How to Read an Event Contract Ladder
One threshold, re-read every session: implied probability above a fixed strikeseries · 2026-10-01 · 28×3Preview: a 16-point series, ending lower. A real strike ladder: SPY call prices by threshold, one pinned sessionranking · 2026-10-01 · 12×3Preview: 12 ranked values, smallest first. Ladder audit by expiration: rung count, ordering breaks, and probability inside the 8% bandseries · 2026-10-01 · 5×4Preview: a 5-point series, roughly flat. Differencing the rungs: probability above each threshold, and the bucket between themranking · 2026-10-01 · 11×3Preview: 11 ranked values, smallest first.
How to Pick an Option Strike Price by Delta
Median premium collected per delta band, as a percent of the share priceranking · 2026-09-27 · 9×4Preview: 9 ranked values, smallest first. Implied versus realized in the money share by the contract's own implied volatilitytable · 2026-09-27 · 7×5 The 15 to 25 delta band at three horizons: implied versus realized in the money sharetable · 2026-09-27 · 3×5 Delta band versus the share of contracts that finished in the money, 30 days outtable · 2026-09-27 · 9×5
How Long a Losing Streak Is Normal
Chance of at least one losing streak of five, eight or ten in a 200 trade seriesranking · 2026-08-17 · 5×4Preview: 5 ranked values, smallest first. Chance of at least one five loss run at a 70 percent win rate, by series lengthranking · 2026-08-17 · 5×2Preview: 5 ranked values, smallest first. One named window against somewhere in a 200 trade series, at a 70 percent win rateranking · 2026-08-17 · 3×4Preview: 3 ranked values, largest first. How long the worst losing run of a 200 trade series usually is, at a 70 percent win rateranking · 2026-08-17 · 7×3Preview: 7 ranked values, largest first. Drawdown from an eight and a ten loss streak, by risk per traderanking · 2026-08-17 · 4×4Preview: 4 ranked values, smallest first.
How to De-Vig Betting Odds Into Probabilities
Implied probability by quote format, illustrative quotesranking · 2026-08-11 · 5×2Preview: 5 ranked values, largest first. De-vig methods on one lopsided market, -750 against +475ranking · 2026-08-11 · 4×3Preview: 4 ranked values, largest first. Book sum and overround on four illustrative marketsranking · 2026-08-11 · 4×3Preview: 4 ranked values, smallest first.
Event Contract Prices as Probabilities
Yes and No probabilities across one SPY chain: call side, put side, and the pair totaltable · 2026-08-03 · 8×5 How a near coin flip resolves: average implied probability by checkpoint, split by outcomeranking · 2026-08-03 · 6×4Preview: 6 ranked values, smallest first. Contracts priced near a coin flip: implied vs realized outcome by name, 2023 through June 2026ranking · 2026-08-03 · 6×4Preview: 6 ranked values, largest first. Implied probability vs what happened: SPY calls 30 days from expiry, 2022 through June 2026ranking · 2026-08-03 · 10×4Preview: 10 ranked values, smallest first.
Short strikes touched versus short strikes finishing in the money

Short strikes touched versus short strikes finishing in the money

most recentas of series 5×5read in context →
Short strikes touched versus short strikes finishing in the money — 5 rows by 5 columns, computed from US exchange, SIP and OPRA data.
monthtouched_strike_pctfinished_itm_pcttouch_to_itm_ratiotracked_count
2026-022514.31.7556
2026-0340.330.61.3262
2026-045048.11.0452
2026-0520.71.71258
2026-0737.112.92.8862
the exact SQL behind every number
WITH shorts AS
(
    SELECT
        date                                                   AS entry_date,
        expiration_date                                        AS expiry,
        if(delta < 0, 'put', 'call')                           AS side,
        argMin(toFloat64(strike_price), abs(abs(delta) - 0.16)) AS short_strike
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= '2026-01-02'
      AND date <  '2026-08-01'
      AND iv_converged = 1
      AND volume > 100
      AND days_to_expiry BETWEEN 28 AND 35
      AND abs(delta) BETWEEN 0.13 AND 0.19
    GROUP BY entry_date, expiry, side
),
tape AS
(
    SELECT
        date,
        toFloat64(high)  AS high,
        toFloat64(low)   AS low,
        toFloat64(close) AS close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= '2026-01-02'
      AND date <= '2026-09-30'
),
outcomes AS
(
    SELECT
        s.entry_date            AS entry_date,
        s.expiry                AS expiry,
        s.side                  AS side,
        s.short_strike          AS short_strike,
        max(t.high)             AS path_high,
        min(t.low)              AS path_low,
        argMax(t.close, t.date) AS final_close
    FROM shorts AS s
    CROSS JOIN tape AS t
    WHERE t.date >  s.entry_date
      AND t.date <= s.expiry
    GROUP BY entry_date, expiry, side, short_strike
)
SELECT
    formatDateTime(toStartOfMonth(entry_date), '%Y-%m') AS month,
    round(100 * avg(if(side = 'put', path_low <= short_strike,
                                     path_high >= short_strike)), 1) AS touched_strike_pct,
    round(100 * avg(if(side = 'put', final_close < short_strike,
                                     final_close > short_strike)), 1) AS finished_itm_pct,
    round(avg(if(side = 'put', path_low <= short_strike, path_high >= short_strike))
        / avg(if(side = 'put', final_close < short_strike, final_close > short_strike)), 2)
                                                                      AS touch_to_itm_ratio,
    count()                                                           AS tracked_count
FROM outcomes
GROUP BY month
HAVING countIf(if(side = 'put', final_close < short_strike, final_close > short_strike)) > 0
ORDER BY month
$