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×5
Treasury yields through the downgrade window, August 1–15, 2011series ·
2026-07-26 · 11×5
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×4
August 8, 2011 across the tape: banks, staples, gold, and the fear gaugeranking ·
2026-07-26 · 9×4
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×4
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
| session | change_pct | downgrade_rank | top10_outside_crises | two_week_slide_pct |
|---|---|---|---|---|
| 2020-03-16 | -11.6 | 9 | 1 | -10.8 |
| 2020-03-12 | -9.6 | 9 | 1 | -10.8 |
| 2008-10-15 | -9.2 | 9 | 1 | -10.8 |
| 2008-12-01 | -8.9 | 9 | 1 | -10.8 |
| 2020-03-09 | -7.7 | 9 | 1 | -10.8 |
| 2008-09-29 | -7 | 9 | 1 | -10.8 |
| 2008-10-09 | -6.8 | 9 | 1 | -10.8 |
| 2008-11-20 | -6.6 | 9 | 1 | -10.8 |
| 2011-08-08 | -6.5 | 9 | 1 | -10.8 |
| 2008-10-07 | -6.1 | 9 | 1 | -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
More from this analysisThe 2011 US Downgrade: Black Monday's Tape
SPY by half-hour: August 8, 2011 regular session
series 13×4
→
Treasury yields through the downgrade window, August 1–15, 2011
series 11×5
→
SPY closes, August 8-12, 2011: crash, rip, crash, rip
series 5×4
→
August 8, 2011 across the tape: banks, staples, gold, and the fear gauge
ranking 9×4
→
See all 2,170 queries →