Lehman's Collapse: The 2008 Tape, Replayed
September 15, 2008: Lehman Brothers filed for bankruptcy before the open. What the S&P 500 tape actually did that day and that week, minute by minute.
On the morning of September 15, 2008, Lehman Brothers filed the largest bankruptcy in US history, and the S&P 500 opened into it. This page replays that session from the stored minute tape — the gap, the failed morning stabilization, the close at the day's bottom — and the week that followed, which was stranger than most retellings admit. Every number is a stored query over the 2008 tape; expand any panel for the SQL.
The day, on one row
The exact SQL behind every number
WITH
(
SELECT argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2008-09-12 00:00:00') AND window_start < toDateTime('2008-09-15 04:00:00')
) AS prior_rth_close
SELECT
round(prior_rth_close, 2) AS prior_close,
round(toFloat64(argMinIf(open, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)), 2) AS rth_open,
round((toFloat64(argMinIf(open, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / prior_rth_close - 1) * 100, 1) AS gap_pct,
round(minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS rth_low,
formatDateTime(toTimeZone(argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 'America/New_York'), '%H:%i') AS low_et,
round(maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS rth_high,
round(toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)), 2) AS rth_close,
round((toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / prior_rth_close - 1) * 100, 1) AS day_change_pct,
round((minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / prior_rth_close - 1) * 100, 1) AS low_vs_prior_pct,
round(toFloat64(sum(volume)) / 1e6, 1) AS day_shares_m,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_minute_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2008-09-15 04:00:00') AND window_start < toDateTime('2008-09-15 23:59:00')From Friday's $125.75 close, SPY opened at $121.81 — a -3.1% gap down, severe but not yet panic. The panic took all day to arrive: the low of $120.14 printed at 15:59 ET — the final minute of the session. SPY closed at $120.34, -4.3% on the day, on 465.5 million shares. A crash that closes on its exact low is a specific and ominous shape: no dip-buyers stepped in front of the bell.
The shape of the session
The exact SQL behind every number
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(toFloat64(argMax(close, window_start)), 2) AS bucket_close,
round(min(toFloat64(low)), 2) AS bucket_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2008-09-15 04:00:00') AND window_start < toDateTime('2008-09-15 23:59:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY et_time
ORDER BY et_timeThe morning actually stabilized — the tape held its opening range for hours, drifting near $123.88 through late morning. The afternoon buckets tell the real story: each half-hour closed lower than the last into the final print. This is what a systemic-fear session looks like in buckets — not one waterfall, but a market that keeps re-asking the same question and getting a worse answer.
The week nobody remembers correctly
The exact SQL behind every number
SELECT
toString(et_date) AS session,
close_usd,
round(if(prev_close = 0, NULL, (close_usd / prev_close - 1) * 100), 1) AS change_pct,
shares_m
FROM (
SELECT et_date, close_usd, shares_m,
lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
FROM (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS close_usd,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2008-09-12 00:00:00') AND window_start < toDateTime('2008-09-19 23:59:00')
GROUP BY et_date
)
)
WHERE et_date >= toDate('2008-09-15') AND et_date <= toDate('2008-09-19')
ORDER BY et_dateMemory says Lehman week was a straight collapse. The tape disagrees: Tuesday closed 1.3%, Wednesday fell -4.6% (the money-market and AIG stress day), and then Thursday and Friday rallied — 3.7% and 3.7% — ending the week at $125.04, close to where it began, following the first announcements of what became the TARP program. The true collapse came two weeks later: September 29, the day the first TARP vote failed in the House, remains one of the largest single-day point drops of that era. The lesson the minute data preserves: the biggest headlines and the biggest price damage are routinely days apart, and the overnight gap carries the first shock while the sessions after carry the verdict.
The era around the day
The session did not arrive from nowhere. Bear Stearns had failed into a rescue six months earlier; Fannie Mae and Freddie Mac were placed into conservatorship the week before; and the same weekend Lehman filed, Merrill Lynch sold itself to Bank of America and AIG began the spiral that ended in its own rescue the next day. The tape above is one Monday inside a rolling six-month sequence of institution-scale failures — which is why its close-on-the-low shape mattered more than its headline percentage. Markets that keep discovering new problems close on their lows repeatedly; that autumn did so for weeks.
What is a systemic crash, mechanically?
Unlike a single-stock collapse, a systemic session reprices everything at once: correlations converge toward one, index products carry the flow, and volume concentrates in the most liquid instruments — which is why SPY's 465.5 million shares that Monday is itself part of the record. The 2008 sequence eventually bottomed 5+ months later; the March 2009 bottom carries that day's tape, and March 2020 shows the modern version with circuit breakers attached.
Lehman crash FAQ
How much did the market fall when Lehman collapsed?
On the filing day itself — September 15, 2008 — SPY closed -4.3% down, finishing at its exact low of the session. The larger declines of the crisis came in the following weeks, once the failed first TARP vote and the money-market fallout landed.
Did the market crash immediately at the open?
It gapped -3.1% down at the open and then held surprisingly stable through the morning. The selling accelerated in the afternoon and never stopped — the day's low printed in the last minute of trading.
Was Lehman the bottom of the 2008 crash?
Not close. The market fell for another five-plus months after the filing; the bottom printed on March 9, 2009 — receipted here — roughly forty percent below the Lehman-Monday close.
Every panel above is a stored, versioned query over the historical tape — expand the SQL to see each measurement. Want to feel this day instead of reading it? It is one of the playable scenarios in the Strasmore Labs trading simulator.