Lehman's Collapse: The 2008 Tape, Replayed
The ten worst SPY sessions, 2003-2025, plus where Lehman Monday ranksseries ·
2026-07-26 · 11×5
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×4
LEH month-end closes, January 2007 to the September 2008 filingseries ·
2026-07-26 · 21×3
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×6
The ten worst SPY sessions, 2003-2025, plus where Lehman Monday ranks
The ten worst SPY sessions, 2003-2025, plus where Lehman Monday ranks
| session | rank | change_pct | tarp_vote_rank | post_lehman_2008_top10 |
|---|---|---|---|---|
| 2020-03-16 | 1 | -11.6 | 6 | 6 |
| 2020-03-12 | 2 | -9.6 | 6 | 6 |
| 2008-10-15 | 3 | -9.2 | 6 | 6 |
| 2008-12-01 | 4 | -8.9 | 6 | 6 |
| 2020-03-09 | 5 | -7.7 | 6 | 6 |
| 2008-09-29 | 6 | -7 | 6 | 6 |
| 2008-10-09 | 7 | -6.8 | 6 | 6 |
| 2008-11-20 | 8 | -6.6 | 6 | 6 |
| 2011-08-08 | 9 | -6.5 | 6 | 6 |
| 2008-10-07 | 10 | -6.1 | 6 | 6 |
| 2008-09-15 | 34 | -4.3 | 6 | 6 |
the exact SQL behind every number
WITH daily AS (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS close_usd
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2003-09-10 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
row_number() OVER (ORDER BY (close_usd / prev_close - 1) ASC, et_date ASC) AS rank,
toString(et_date) AS session,
round((close_usd / prev_close - 1) * 100, 1) AS change_pct
FROM changes
WHERE prev_close > 0 AND isFinite(close_usd / prev_close)
),
(SELECT any(rank) FROM ranked WHERE session = '2008-09-29') AS tarp_rank_s,
(SELECT countIf(rank <= 10 AND session BETWEEN '2008-09-16' AND '2008-12-31') FROM ranked) AS post_lehman_s
SELECT
session,
rank,
change_pct,
tarp_rank_s AS tarp_vote_rank,
post_lehman_s AS post_lehman_2008_top10
FROM ranked
WHERE rank <= 10 OR session = '2008-09-15'
ORDER BY rank
More from this analysisLehman's Collapse: The 2008 Tape, Replayed
LEH month-end closes, January 2007 to the September 2008 filing
series 21×3
→
SPY by half-hour: September 15, 2008 regular session
series 13×4
→
SPY closes and Treasury yields, September 15-19, 2008: the whipsaw week
series 5×6
→
The financials in Lehman week: Friday 9/12 close to Friday 9/19 close
table 6×8
→
See all 2,170 queries →