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.
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
$