STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

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

The 2011 US Downgrade: Black Monday's Tape
The ten worst SPY sessions, 2003–2025: August 8, 2011 is the odd one outseries · 2026-07-26 · 10×5Preview: a 10-point series, roughly flat. Treasury yields through the downgrade window, August 1–15, 2011series · 2026-07-26 · 11×5Preview: a 11-point series, ending lower. The recovery, dated: reclaim, failed hold, true bottom, and the last close belowscalar · 2026-07-26 · 1×9120.03 SPY by half-hour: August 8, 2011 regular sessionseries · 2026-07-26 · 13×4Preview: a 13-point series, ending higher. August 8, 2011 across the tape: banks, staples, gold, and the fear gaugeranking · 2026-07-26 · 9×4Preview: 9 ranked values, smallest first. SPY on August 8, 2011: the downgrade Monday, receiptedscalar · 2026-07-26 · 1×11120.03 SPY closes, August 8-12, 2011: crash, rip, crash, ripseries · 2026-07-26 · 5×4Preview: a 5-point series, ending lower.
Lehman's Collapse: The 2008 Tape, Replayed
The ten worst SPY sessions, 2003-2025, plus where Lehman Monday ranksseries · 2026-07-26 · 11×5Preview: a 11-point series, roughly flat. The full bear market: SPY peak close to trough close, and the road backscalar · 2026-07-26 · 1×11156.41 SPY by half-hour: September 15, 2008 regular sessionseries · 2026-07-26 · 13×4Preview: a 13-point series, ending higher. LEH month-end closes, January 2007 to the September 2008 filingseries · 2026-07-26 · 21×3Preview: a 16-point series, ending lower. The financials in Lehman week: Friday 9/12 close to Friday 9/19 closetable · 2026-07-26 · 6×8 SPY on September 15, 2008: the Lehman Monday, receiptedscalar · 2026-07-26 · 1×11125.75 SPY closes and Treasury yields, September 15-19, 2008: the whipsaw weekseries · 2026-07-26 · 5×6Preview: a 5-point series, ending higher.
How Markets Recover From Crashes
The S&P 500's underwater curve: worst drawdown from a prior high, by monthseries · 2026-07-16 · 127×2Preview: a 16-point series, ending higher. The S&P 500's underwater record since 2016 (SPY, one scorecard)scalar · 2026-07-16 · 1×634.2 S&P 500 worst intra-year drawdown vs the year's price return, since 2016ranking · 2026-07-16 · 11×3Preview: 11 ranked values, largest first. How far below its high the S&P 500 sits: share of trading days since 2016ranking · 2026-07-16 · 5×2Preview: 5 ranked values, largest first.
The ten worst SPY sessions, 2003–2025: August 8, 2011 is the odd one out

The ten worst SPY sessions, 2003–2025: August 8, 2011 is the odd one out

most recentas of series 10×5read in context →
The ten worst SPY sessions, 2003–2025: August 8, 2011 is the odd one out — 10 rows by 5 columns, computed from US exchange, SIP and OPRA data.
sessionchange_pctdowngrade_ranktop10_outside_crisestwo_week_slide_pct
2020-03-16-11.691-10.8
2020-03-12-9.691-10.8
2008-10-15-9.291-10.8
2008-12-01-8.991-10.8
2020-03-09-7.791-10.8
2008-09-29-791-10.8
2008-10-09-6.891-10.8
2008-11-20-6.691-10.8
2011-08-08-6.591-10.8
2008-10-07-6.191-10.8
the exact SQL behind every number
WITH daily AS (
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
        argMax(toFloat64(close), window_start) AS close_usd
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
      AND window_start >= toDateTime('2003-01-01 00:00:00') AND window_start < toDateTime('2026-01-01 00:00:00')
    GROUP BY et_date
),
changes AS (
    SELECT et_date, close_usd,
           lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily
),
ranked AS (
    SELECT et_date, close_usd,
           round((close_usd / prev_close - 1) * 100, 1) AS change_pct,
           row_number() OVER (ORDER BY close_usd / prev_close ASC, et_date ASC) AS day_rank
    FROM changes
    WHERE prev_close > 0
),
enriched AS (
    SELECT et_date, change_pct, day_rank,
           max(if(et_date = toDate('2011-08-08'), day_rank, 0)) OVER () AS downgrade_rank,
           sum(if(day_rank <= 10 AND toYear(et_date) NOT IN (2008, 2020), 1, 0)) OVER () AS top10_outside_crises,
           round((max(if(et_date = toDate('2011-08-05'), close_usd, 0)) OVER () / max(if(et_date = toDate('2011-07-22'), close_usd, 0)) OVER () - 1) * 100, 1) AS two_week_slide_pct
    FROM ranked
)
SELECT
    toString(et_date) AS session,
    change_pct,
    downgrade_rank,
    top10_outside_crises,
    two_week_slide_pct
FROM enriched
WHERE day_rank <= 10
ORDER BY day_rank
$