# Total return companions: how long did each crash take to come back, with dividends?

Generated 2026-09-22 by `scripts/research-total-return.mjs`. Observation cutoff **2026-09-14**, the same as [crash-data.json](crash-data.json). This report adds total-return and inflation-adjusted views to the US episodes of the main research. It does not replace the price-basis research, and it does not extend to non-US benchmarks, whose total-return indices are licensed and are therefore recorded as **N/M** (not measured), never estimated.

## Why two resolutions

- **Daily:** the S&P 500 total-return index (`^SP500TR`, Yahoo Finance, unadjusted daily close) starts on 1988-01-04. Episodes with peaks after that date get a daily total-return companion computed with exactly the rules of the price research.
- **Monthly:** Robert Shiller's monthly S&P data (monthly *average* prices, published dividend rate, CPI) reaches back to 1871 and is the only free source for 1929, 1973 and 1987 with dividends. Nominal total return is `TR_t = TR_{t-1} × (P_t + D_t/12) / P_{t-1}, P = monthly average price, D = published dividend rate`; the real series is Shiller's own CPI-adjusted total-return column. **Monthly averages land on different dates and shallower depths than daily closes** — the 1929 monthly average peak is 31.30 (September 1929) against the 31.92 daily close of 7 September. The monthly columns answer "how long", not "how deep on the worst day".

The two are never mixed in one cell.

## Results — US episodes

Peak → bottom → first recovery · fall · months peak-to-recovery. Price column from crash-data.json (daily closes). "N/M" = not measured.

| Episode | Benchmark | Price (daily) | Total return, daily (^SP500TR) | Total return, monthly nominal (Shiller) | Total return, monthly real (Shiller) |
| --- | --- | --- | --- | --- | --- |
| 1929 · Wall Street crash | United States · S&P composite predecessor | 1929-09-07 → 1932-06-01 → 1954-09-22 · −86.22% · 300.5 mo | N/M | 1929-09 → 1932-06 → 1945-01 · −81.76% · 184 mo | 1929-09 → 1932-06 → 1936-11 · −76.8% · 86 mo |
| 1973 · Oil shock & stagflation | United States · S&P 500 | 1973-01-11 → 1974-10-03 → 1980-07-17 · −48.2% · 90.2 mo | N/M | 1973-01 → 1974-12 → 1976-07 · −39.16% · 42 mo | 1973-01 → 1974-12 → 1985-01 · −50.06% · 144 mo |
| 1987 · Black Monday | United States · S&P 500 | 1987-08-25 → 1987-12-04 → 1989-07-26 · −33.51% · 23.0 mo | N/M | 1987-08 → 1987-12 → 1989-05 · −26.04% · 21 mo | 1987-08 → 1987-12 → 1989-08 · −26.68% · 24 mo |
| 1987 · Hong Kong market crash | Hong Kong · Hang Seng | 1987-10-01 → 1987-12-07 → 1991-07-16 · −52.02% · 45.5 mo | N/M | N/M | N/M |
| 1989 · Japanese asset bubble | Japan · Nikkei 225 | 1989-12-29 → 2009-03-10 → 2024-02-22 · −81.87% · 409.8 mo | N/M | N/M | N/M |
| 1994 · Mexican peso crisis | Mexico · IPC | 1994-02-08 → 1995-02-27 → 1996-01-02 · −49.38% · 22.8 mo | N/M | N/M | N/M |
| 1997 · Asian crisis in Korea | South Korea · KOSPI | 1997-06-17 → 1998-06-16 → 1999-04-27 · −64.66% · 22.3 mo | N/M | N/M | N/M |
| 1997 · Asian crisis in Thailand | Thailand · SET Index | 1997-01-22 → 1998-09-04 → 2007-07-13 · −75.87% · 125.6 mo | N/M | N/M | N/M |
| 1997 · Asian crisis in Indonesia | Indonesia · Jakarta Composite | 1997-07-08 → 1998-09-21 → 2004-01-09 · −65.33% · 78.1 mo | N/M | N/M | N/M |
| 1999 · Greek bubble & debt crisis | Greece · ATHEX Composite | 1999-09-17 → 2016-02-11 → not recovered · −93.06% · ≥ 322.0 mo | N/M | N/M | N/M |
| 2000 · Dot-com bubble | United States · Nasdaq Composite | 2000-03-10 → 2002-10-09 → 2015-04-23 · −77.93% · 181.4 mo | 2000-09-01 → 2002-10-09 → 2006-10-23 · −47.41% · 73.7 mo | 2000-08 → 2003-02 → 2006-10 · −41.56% · 74 mo | 2000-08 → 2009-03 → 2013-05 · −51.76% · 153 mo |
| 1999 · UK millennium peak | United Kingdom · FTSE 100 | 1999-12-30 → 2003-03-12 → 2015-02-24 · −52.57% · 181.9 mo | N/M | N/M | N/M |
| 2000 · French dot-com bubble | France · CAC 40 | 2000-09-04 → 2003-03-12 → 2021-11-02 · −65.29% · 253.9 mo | N/M | N/M | N/M |
| 2007 · Chinese equity bubble | China · Shanghai Composite | 2007-10-16 → 2008-11-04 → not recovered · −71.98% · ≥ 227.0 mo | N/M | N/M | N/M |
| 2007 · Global financial crisis | United States · S&P 500 | 2007-10-09 → 2009-03-09 → 2013-03-28 · −56.78% · 65.6 mo | 2007-10-09 → 2009-03-09 → 2012-04-02 · −55.25% · 53.8 mo | 2007-10 → 2009-03 → 2012-08 · −49.04% · 58 mo | 2007-10 → 2009-03 → 2013-03 · −49.94% · 65 mo |
| 2008 · Global crisis in India | India · BSE Sensex | 2008-01-08 → 2009-03-09 → 2010-11-04 · −60.91% · 33.9 mo | N/M | N/M | N/M |
| 2008 · Global crisis in Brazil | Brazil · Ibovespa | 2008-05-20 → 2008-10-27 → 2017-09-11 · −59.96% · 111.7 mo | (price column is TR) | N/M | N/M |
| 2015 · Chinese bubble & long slump | China · Shanghai Composite | 2015-06-12 → 2019-01-03 → not recovered · −52.3% · ≥ 135.1 mo | N/M | N/M | N/M |
| 2020 · COVID shock in Australia | Australia · All Ordinaries | 2020-02-20 → 2020-03-23 → 2021-04-14 · −37.09% · 13.8 mo | N/M | N/M | N/M |
| 2020 · COVID shock | United States · S&P 500 | 2020-02-19 → 2020-03-23 → 2020-08-18 · −33.92% · 5.9 mo | 2020-02-19 → 2020-03-23 → 2020-08-10 · −33.79% · 5.7 mo | 2020-02 → 2020-03 → 2020-08 · −18.92% · 6 mo | 2020-01 → 2020-03 → 2020-08 · −18.86% · 7 mo |
| 2004 · Election uncertainty | India · BSE Sensex | 2004-04-23 → 2004-05-17 → 2004-11-08 · −23.97% · 6.5 mo | N/M | N/M | N/M |
| 2013 · Nikkei spring sell-off | Japan · Nikkei 225 | 2013-05-22 → 2013-06-13 → 2013-11-28 · −20.36% · 6.2 mo | N/M | N/M | N/M |
| 2016 · Brexit vote shock | United Kingdom · FTSE 100 | 2016-06-23 → 2016-06-27 → 2016-06-29 · −5.62% · 0.2 mo | N/M | N/M | N/M |
| 2018 · February volatility correction | United States · S&P 500 | 2018-01-26 → 2018-02-08 → 2018-08-24 · −10.16% · 6.9 mo | 2018-01-26 → 2018-02-08 → 2018-07-25 · −10.1% · 5.9 mo | 2018-01 → 2018-04 → 2018-07 · −4.44% · 6 mo | 2018-01 → 2018-04 → 2018-08 · −5.46% · 7 mo |
| 2018 · Fourth-quarter correction | United States · S&P 500 | 2018-09-20 → 2018-12-24 → 2019-04-23 · −19.78% · 7.1 mo | 2018-09-20 → 2018-12-24 → 2019-04-12 · −19.36% · 6.7 mo | 2018-09 → 2018-12 → 2019-04 · −11.08% · 7 mo | 2018-09 → 2018-12 → 2019-04 · −10.65% · 7 mo |
| 2018 · Australian market correction | Australia · All Ordinaries | 2018-08-30 → 2018-12-21 → 2019-04-24 · −14.35% · 7.8 mo | N/M | N/M | N/M |
| 2022 · Inflation & rate-hike bear market | United States · S&P 500 | 2022-01-03 → 2022-10-12 → 2024-01-19 · −25.43% · 24.5 mo | 2022-01-03 → 2022-10-12 → 2023-12-13 · −24.49% · 23.3 mo | 2022-01 → 2022-10 → 2023-07 · −17.57% · 18 mo | 2022-01 → 2022-10 → 2024-02 · −22.24% · 25 mo |
| 2024 · Election-result pullback | India · BSE Sensex | 2024-06-03 → 2024-06-04 → 2024-06-07 · −5.74% · 0.1 mo | N/M | N/M | N/M |
| 2025 · Tariff shock correction | United States · S&P 500 | 2025-02-19 → 2025-04-08 → 2025-06-27 · −18.9% · 4.2 mo | 2025-02-19 → 2025-04-08 → 2025-06-26 · −18.75% · 4.2 mo | N/M | N/M |

Nasdaq 2000: the companion columns show the **S&P 500** over its own 2000 peak window (price peak 24 March 2000, total-return peak 1 September 2000), because no free Nasdaq total-return series exists. They are not the Nasdaq Composite with dividends.

## Worst case by holding period (Shiller monthly, every start month 1871-01 → 2024-06)

| Holding period (years) | Worst nominal total return | Share of start months that lost money (nominal) | Worst real total return | Share losing (real) |
| --- | --- | --- | --- | --- |
| 1 | -62.3% (from 1931-06) | 27.7% | -58.1% (from 1931-06) | 30.8% |
| 2 | -74.3% (from 1930-06) | 20.4% | -68.2% (from 1930-06) | 25.2% |
| 3 | -78.6% (from 1929-07) | 15.3% | -72.8% (from 1929-07) | 21.5% |
| 5 | -61.3% (from 1929-09) | 10.4% | -50.8% (from 1929-09) | 18.9% |
| 10 | -33.7% (from 1929-08) | 3.0% | -45.7% (from 1999-03) | 11.2% |
| 15 | -5.2% (from 1929-09) | 0.1% | -27.6% (from 1905-12) | 4.5% |
| 20 | 50.0% (from 1929-09) | 0.0% | -4.3% (from 1901-06) | 0.1% |

Longest wait from any start month until the total-return index first regained that month's level: **nominal 184 months (1929-09 → 1945-01)**, **real 153 months (2000-08 → 2013-05)**. These are historical worst cases from one country's index over 150 years, not bounds on the future.

## Sources and reproducibility

- Daily: [^SP500TR on Yahoo Finance](https://finance.yahoo.com/quote/%5ESP500TR/history/); API URL and raw-response SHA-256 (`fad1afe0f9fb8bb8…`) are in total-return.json; 9747 observations 1988-01-04 → 2026-09-14.
- Monthly: [Shiller's data page](https://shillerdata.com/), file `ie_data.xls` (1623552 bytes, SHA-256 `59532175bd1b95ce…`), extracted once with `scripts/extract-shiller.py` into [sources/shiller-ie-data.csv](sources/shiller-ie-data.csv); the CSV's SHA-256 is recorded in total-return.json. Data through 2024-06 in the copy retrieved on 2026-09-21. Attribution: Robert J. Shiller, *Irrational Exuberance*, online data.
- Run `node scripts/research-total-return.mjs` to regenerate this report, `total-return.json` and the browser module `total-return-data.js`. The daily source is cached in ignored `tmp/crash-research/`.
- Recovery here means the index regained its own level. It says nothing about an individual investor's break-even (contributions, taxes, fees, FX, timing).

## Publication caveat

Index total-return data carries the same display-rights question as the price research. Shiller's data is freely distributed with attribution; Yahoo's redistribution terms apply to the daily series.
