How Retirement Replay works

The whole machine, opened up: where every number comes from, how prices and yields become returns, exactly which tax rules run, and what we deliberately simplified. The dataset is downloadable below, so every claim on the tool is checkable.

The method: every start year, replayed

Retirement Replay runs your household through every historical start year the chosen assets support, one strand per January, month by month. Each strand earns the returns of its own stretch of history, pays its own inflation, and funds your spending after tax. Nothing is sampled or randomized: the same inputs always produce the same strands, and any strand can be replayed and audited event by event in the theatre.

Everything runs in today's dollars under current law. Canadian brackets, benefit amounts, and thresholds are indexed to inflation, so 2026 rules in real dollars stay aligned with them, and the historical series carry the inflation itself. When the tax engine rolls to a new year, this tool inherits it automatically.

The data, series by series

Starts and ends below are read from the data file itself, so this table cannot drift from what the simulator uses.

SeriesRunsSourceConstruction
Canadian inflation (CPI, all items)1914-01 → 2026-04StatCan WDS v41690973 (18-10-0004)levels as published
US dollar in Canadian dollars1950-10 → 2026-05StatCan WDS v37426 (10-10-0009) + BoC Valet FXMUSDCADsplice continuity asserted <1%
US equity, total return (USD)1871-02 → 2026-05Shiller ie_data.xls(P_t + D_t/12)/P_{t-1} - 1
Canadian large-cap equity, total return1956-02 → 2026-05StatCan WDS v122620+v122628 (10-10-0125) + Yahoo XIU.TO adjusted closeC_t/C_{t-1}-1+Y_t/1200, then adjclose ratios
Government of Canada long bonds, total return1936-02 → 2026-05StatCan WDS v122487 (10-10-0122)constant-maturity par-bond N=10, annual coupon + y/12 income
Cash (3-month T-bills), total return1935-07 → 2026-05StatCan WDS v122541 (10-10-0122)y_{t-1}/1200
5-year GIC ladder, total return1968-07 → 2026-05BoC Valet V80691336trailing-60-month ladder mean /1200 (expanding first 60m)
Posted 5-year GIC rate1968-07 → 2026-05BoC Valet V80691336monthly average of weekly postings
GoC long bond yield1936-01 → 2026-05StatCan WDS v122487as published
3-month T-bill yield1935-06 → 2026-05StatCan WDS v122541as published
US inflation (parity testing)1871-01 → 2026-05Shiller ie_data.xls col Elevels as published
US 10-year bonds (parity testing)1871-02 → 2026-05Shiller ie_data.xls col G (GS10)constant-maturity par-bond N=10, annual coupon + y/12 income

Take the data

One wide CSV of every monthly series (returns as decimals, yields and rates in percent, CPI as index levels), and the life tables behind the mortality view, population and pensioner side by side. Sources: Statistics Canada (Open Licence), the Bank of Canada, Robert Shiller's public dataset, and exchange-traded fund market data; attribute them, not us.

From prices and yields to returns

Where a published total-return series exists we use it; where it does not, returns are reconstructed with the standard methods below and labelled generically.

US equity, 1871 onward

TR = (P + D/12) / P[prev] − 1

Shiller's monthly-average prices and dividends. Averaging smooths the wildest single days, and one convention runs the whole series.

Canadian equity, 1956 onward

TR = C/C[prev] − 1 + Y/1200

Composite close plus composite dividend yield until late 1999, then dividend-adjusted ETF closes. The two agree within 0.39% a year where they overlap.

Bonds (constant maturity)

TR = parPrice(Δy, 10y) − 1 + y[prev]/1200

A par bond repriced for the month's yield move plus accrued coupon, the standard simulation approach for yield-only history.

Cash and GICs

cash: y[prev]/1200 · GIC: mean(rate, 60m)/1200

T-bills earn last month's yield. The GIC ladder holds five annual rungs, so each month earns the trailing five-year average of posted rates.

US returns convert to Canadian dollars at each month's actual exchange rate before anything else happens, so currency risk lives in the data rather than in an assumption. Real values deflate by Canadian CPI.

The tax layer, rule by rule

The rules below run inside every simulated year, using the same 2026 engine that powers the site's calculators.

After-tax spending

Each year the solver searches for the gross withdrawals whose after-tax remainder equals your spending target, account by account, against full federal and provincial brackets.

RRIF minimums

Forced withdrawals from age 72 at the CRA factors, taxed as income, with anything beyond spending reinvested outside the RRIF.

OAS recovery tax

Each person's OAS claws back at 15% of net income above $95,323, and the repaid amount is deductible, so fully clawed-back OAS nets exactly zero.

Capital gains

Non-registered withdrawals realize gains against a continuously tracked cost base at the 50% inclusion rate.

Couples

Two taxpayers: withdrawal income splits evenly across both ladders and each faces the clawback on their own income, which is where much of the couples advantage comes from.

Survivorship

After a modelled death the survivor's CPP combines with 60% of the deceased's, capped at the maximum single pension ($1,507.65/month at 65); the deceased's OAS ends.

Guaranteed Income Supplement

Low income plus OAS in pay earns GIS automatically: up to $1,109.85 a month for a single person, shrinking as income other than OAS and TFSA withdrawals rises, gone at $22,512. Deferring OAS forfeits it. Rates for April to June 2026.

Pensions, indexed or not

A pension with cost-of-living raises holds its real value. Switch it to no raises and each history erodes it along its own recorded inflation path; a survivor share keeps following the original nominal trajectory.

Deliberate simplifications

  • Age and pension-income credits are not modelled, which slightly overstates tax. The error is conservative.
  • GIS runs as a straight line from each published maximum to its published income cutoff rather than the official bracket tables; it never pays past the real cutoff. The Allowance for a partner aged 60 to 64 is not modelled.
  • Tax solves once per simulated year, not monthly.
  • Investment income inside non-registered accounts is taxed on withdrawal as realized gains, not as it accrues. One knock-on effect: taxable income in early retirement can read lower than a portfolio paying interest and dividends would report, which can overstate GIS in those years.
  • VPW caps its withdrawal percentage at 10% a year, following the published tables.
  • Years before retirement use a single labelled growth assumption rather than historical sequences, so every strand starts at the same balance.

Caveats

  • Overlapping windows are not independent samples: a 1965 start and a 1966 start share most of their history. Treat the cohort as a tour of recorded sequences rather than a probability distribution.
  • Shiller's prices are monthly averages of daily closes, which softens the very worst single months.
  • Pre-1999 Canadian equity is a reconstruction (price index plus dividend yield), labelled generically on purpose.
  • The life tables are averages: the Canadian population by default, or CPM2014 pensioners on the toggle (base table, without the CPM-B improvement scale, so current pensioners likely run a little lighter still). Your health, income, and habits move you off either.
  • History constrains imagination in both directions: the future can be kinder and crueller than anything in the record.

Sources

Statistics Canada 18-10-0004 · CPI, all items, monthly since 1914 (vector v41690973)
Statistics Canada 10-10-0122 · GoC yields and T-bill auctions since the 1930s (v122487, v122541)
Statistics Canada 10-10-0125 · TSE composite close and dividend yields, 1956 to 1999 (v122620, v122628)
Statistics Canada 10-10-0009 · USD/CAD noon average, 1950 to 2017 (v37426), spliced to Bank of Canada Valet
Statistics Canada 13-10-0114 · Complete life table, single age by sex
CIA CPM2014 · Canadian Pensioners' Mortality composite tables via the SOA table service (t2790, t2791); base table
canada.ca · GIS maximums and income cutoffs, quarterly table, April to June 2026
Bank of Canada Valet · FXMUSDCAD monthly average; V80691336 posted 5-year fixed term, weekly since 1968
Robert Shiller · US prices, dividends, CPI, and GS10 yields since 1871 (shillerdata.com)
Exchange market data · Dividend-adjusted ETF closes for the modern Canadian equity era

Statistics Canada data is used under the Statistics Canada Open Licence; Bank of Canada data under its terms of use. Reconstructed series are labelled generically and are not products of, or endorsed by, any index provider.

Historical results are not a guarantee of future ones. Retirement Replay is an educational simulation, not financial advice.