This page explains how the Investment Calculator builds its ranges, where its data comes from, how well it has done on past data, and what it leaves out. It describes model version 2026Q4-1, calibrated on US data from January 1954 to August 2026. The figures on this page update automatically when the model is recalibrated.
Data sources
- Stock prices, dividends, earnings, inflation and CAPE: Robert J. Shiller’s monthly US stock market data (shillerdata.com), from 1871.
- 10-year and 3-month Treasury yields: FRED series GS10 and TB3MS.
- Corporate bond yields (Moody’s Baa and Aaa): FRED series BAA and AAA.
- Daily S&P 500, consumer prices, VIX and the high-yield spread: FRED series SP500, CPIAUCSL, VIXCLS and BAMLH0A0HYM2, used for the live reading only.
Source: FRED, Federal Reserve Bank of St. Louis. Some of these series carry third-party copyright. The calculator shows only the latest reading of each, with its date, and never republishes their history.
Market stages
Each month is sorted into one of four stages by a fixed set of rules, applied in order. “Price” is the S&P 500’s average level for the month. “Drawdown” is how far it sits below its highest monthly average so far.
- Drawdown of 20% or more and price below its 10-month average: Contraction.
- Drawdown of 10% or more, price above its 10-month average and higher than three months earlier: Recovery.
- Drawdown of 10% or more and price below its 10-month average: Contraction.
- The 10-year Treasury yield fell below the 3-month yield at any point in the past 12 months, or the Baa−Aaa corporate spread is at or above the 80th percentile of its history, or price is below its 10-month average: Late-cycle.
- Otherwise: Expansion.
A deep drawdown where price is above trend but momentum is falling drops through to rule 4. A stalled rebound is treated as late-cycle risk, not recovery. A new stage becomes official only after the rules give it for 2 consecutive months.
Valuation is deliberately left out of these rules. Otherwise a high-valuation decade such as the 1990s would sit in one stage for years and the stage would say nothing. Valuation is handled separately, below.
Over the calibration period the months split as follows:
| Stage | Months | Share | Stock return after inflation (per year) | Volatility (per year) |
|---|---|---|---|---|
| Expansion | 417 | 48% | 9.3% | 10.3% |
| Late-cycle | 170 | 20% | 4.3% | 13.0% |
| Contraction | 172 | 20% | 3.0% | 16.4% |
| Recovery | 113 | 13% | 12.8% | 10.1% |
The stage rules are a judgement call. They are fixed in advance and the same rules run on the live data, but other reasonable rules would sort some months differently.
How a path is simulated
Every month in the calibration period is stored as one record of four numbers: the stock total return, the bond return, the cash return (all after inflation) and inflation itself. Keeping the four together preserves how they moved together in each real month.
A simulated path starts in today’s stage, or a stage you choose. It draws runs of up to 12 consecutive months, in historical order, from the months that history spent in that stage. It moves between stages with the monthly probabilities seen in the calibration period. Drawing runs rather than single months keeps the streaks of good and bad months that decide decade-long outcomes. With single months, the ranges were far too narrow. The Historical average scenario skips the stages and draws runs from all of history.
Each run uses 5,000 paths on the website and 2,000 in the app. Your inputs and the model version seed the random draws, so the same inputs give the same numbers. Contributions arrive at each month end; with Raise contributions with inflation on, they grow with each path’s own inflation. Fees come off monthly. The portfolio is rebalanced to your mix every month.
Valuation adjustment
Over overlapping 10-year windows since 1881, the annualized return of stocks after inflation is fitted against the logarithm of the starting CAPE:
expected 10-year return = 0.2468 − 0.0656 × ln(CAPE) (R² = 0.26, 1,629 monthly windows)
The windows overlap, which inflates the statistical confidence of this fit. Only its central estimate is used. The adjustment is the gap between that estimate and the historical average (7.5% a year after inflation over the calibration period), multiplied by a shrinkage factor of 0.50. That shrinkage reflects how loosely valuation predicts returns; the backtest below was used to choose it.
The adjustment applies in full for the first 10 years of a path, fades out evenly over years 11 to 20, and stops after that. Bonds get the same treatment, using today’s 10-year Treasury yield minus the past 12 months’ inflation against bonds’ historical average of 1.6% a year.
The live CAPE is an estimate: Shiller’s latest value, scaled by how far the S&P 500 has moved since that month.
Bond returns
Bond returns are approximated from the 10-year Treasury yield, as a bond held at a constant duration of 7.5 years: each month’s yield plus the price change from that month’s change in yield. Cash earns the 3-month Treasury bill rate. Both are converted to after-inflation returns with the same inflation figures as stocks.
Backtest
For each start month from January 1964 to July 2016, every 6 months, the whole model was rebuilt from data available up to that month only. It then simulated a 10-year, 100%-stock, no-contribution investment from that date and recorded where the real outcome fell among the simulated paths. Results are averaged over 3 random seeds.
A well-calibrated model puts 10% of real outcomes below its 10th percentile, 50% below its median, and so on. Measured results:
| Scenario | Below p10 | Below p25 | Below median | Below p75 | Below p90 |
|---|---|---|---|---|---|
| Target | 10% | 25% | 50% | 75% | 90% |
| Historical average | 25% | 29% | 45% | 64% | 91% |
| Today's market (shrinkage 0.50) | 16% | 23% | 30% | 55% | 84% |
The goal was for each end of the 9-in-10 range to miss by no more than 6 percentage points. 16% of outcomes fell below the model’s 10th percentile and 16% above its 90th, a largest miss of 6.0 points. That is just outside the target, and the ranges are shown as measured. Conditioning on the market changed the average gap between the median and the real 10-year return from 5.9 to 4.6 percentage points a year.
Real outcomes beat the model’s median in 70% of start months (the target is 50%). By decade of the start date:
| Start decade | Starts | Beat the median | Average CAPE | Real return (per year) | Model median (per year) |
|---|---|---|---|---|---|
| 1960s | 12 | 0% | 21.8 | -1.7% | 4.4% |
| 1970s | 20 | 45% | 12.9 | 3.9% | 5.7% |
| 1980s | 20 | 100% | 11.3 | 11.8% | 6.5% |
| 1990s | 20 | 85% | 25.0 | 6.8% | 3.6% |
| 2000s | 20 | 75% | 27.3 | 4.5% | 3.6% |
| 2010s | 14 | 100% | 23.4 | 10.9% | 4.5% |
Read these with care. The start dates overlap heavily: 106 starts with 10-year horizons hold only about 6 independent outcomes. One more decade of data could move any of these figures by tens of percentage points. The stage and CAPE for a start month also use that whole month’s average price, which is about two weeks of hindsight.
Limitations
- US data only. The US was one of the most successful markets of the period. Other countries’ investors saw worse.
- History from January 1954, limited by the 10-year Treasury series. Earlier crises, including the 1930s, are outside the stage pools.
- Few independent decades, as above, so the backtest is a sanity check, not a precise score.
- The stage rules are judgement calls, and the stage has little power to predict the next year.
- Bond returns are approximate, from yields rather than a real bond index.
- No taxes, no withdrawals, and no individual securities or funds.
Updates
The market reading refreshes daily. The model is recalibrated about once a quarter from fresh Shiller and FRED data; each version is named by year and quarter. If live data is more than 10 days old the calculator says so, and if it is more than 45 days old it switches to the historical scenario.
Educational scenarios, not a forecast or investment advice. Past performance doesn’t guarantee future results.