Retirement planner

Will your money last through retirement?

Test your retirement date, spending, CPP and OAS timing, and investment risk. Free to use; no sign-up needed to calculate.

Display Options
Switch projected values between nominal and real today-dollar terms.
Choose the currency label shown in the planner. This is display-only for now and does not apply FX conversion.
Label only — investment returns, taxes, CPP/OAS, and report calculations remain unchanged.
Choose how compact the planner output should feel. This is UI-only for now.
UI preference only — calculations, report values, and optimizer logic remain unchanged.

🔒 Tax analysis comes with the paid report

Everything else in the planner is free, including a preview of your tax result. The paid report shows your best withdrawal plan year by year, couples and pension splitting, and a personalized decision report (PDF).

Planner setup
Build the plan in four steps
Use the four steps to set up your plan. Detailed results and actions remain available below.
Portfolio → Auto Return & Volatility
μ (CAGR): — σ (Vol): —
Return assumptions: FP Canada guidelines

Enter your asset mix. Each asset class uses the FP Canada and IFP 2026 Projection Assumption Guidelines rate, then your fees are subtracted.

—

Long-term guideline rates, before fees. Source: FP Canada and Institute of Financial Planning, Projection Assumption Guidelines 2026. You can still type any return yourself.

Portfolio Lab
Estimate return (CAGR) + volatility (σ), then apply into planner.
CAGR (annual)
—
Volatility σ (annual)
—

Allocation (will populate after Calculate in Step 2)
...
Ticker Weight Value Max Drawdown
Return (indexed growth)
Total Return
—
Start → End
—
CAGR (annual)
—
Indexed growth (start = 1.0)
Drawdown (portfolio + components)
Max Drawdown
—
Peak → Trough
—
Recovery
—
Underwater (portfolio drawdown % over time)
Components (using normalized weights)
Ticker Weight Max DD Trough
Run Calculate to populate.
Cash Deployment Cockpit
Status: not loaded
Deployment Posture
—
Open this tab to load the current cash deployment reading.
Deployment Risk Score ⓘ
—
—
Entry Opportunity Score ⓘ
—
—
Signal Alignment Score ⓘ
—
—
ML Confirmation Layer ⓘ
Waiting for ML winner configuration...
No ML winner configuration loaded yet.
This layer shows the currently validated ML challenger winners by horizon. CDC rules still drive the cockpit; ML acts as a historical validation and ranking layer.
Recent Daily Trend ⓘ
Select 1W, 1M, 3M, 6M, 12M, 3Y, or 5Y to view the market mood proxy and deployment-score history.
Waiting for backend history...
Lines show Market Mood (Raw Regime), Deployment Risk Score, Entry Opportunity Score, and Signal Alignment Score across the selected trading-day history.
Benchmark Price Validation ⓘ
Waiting for benchmark price history...
Synced to the same period toggle above.
Benchmark price history is shown separately for after-the-fact validation of historical deployment zones.
Dots mark ranked candidate entry windows selected from a combination of factors — including Market Mood, Deployment Risk, Entry Opportunity, Signal Alignment, and posture logic — rather than simply the deepest price lows.
Candidate Agreement Table ⓘ
Waiting for CDC / ML candidate agreement data...
Rank Entry Date Source CDC Hist. ML Live ML Simple Agreement Read Return TD 63d Return 126d Return 252d Return
No CDC / ML candidate agreement rows loaded yet.
Historical rows show mature CDC / ML / Simple validation. Live rows use the same unified candidate universe and show current CDC rank, Live ML rank, return-to-date, and whether 63d/126d/252d outcomes are still maturing.
Market Mood (Raw Regime) ⓘ
Waiting for backend data...
Fear & Greed Proxy
—
Regime Band
—
Regime Trend
—
Price Context ⓘ
Waiting for backend data...
Drawdown
—
Drawdown Band
—
Trend vs 125MA
—
Price Action
—
Distance vs 125MA
—
Market Mood (Raw Regime) is the broad fear/greed backdrop. Deployment Risk Score is the caution level for putting cash to work right now. They can differ when the market mood is fearful but the environment is still deteriorating or not yet attractive enough for deployment.
ML Risk Overlay (QQQ)
Status
—
Regime probability (model uncertainty)
Most likely: —
Alternate: —
Think of it like a risk warning level:
  • If DEFENSIVE is ~5% → basically ignore; deploy normally.
  • If DEFENSIVE is ~33% → deploy carefully (defensive is a real possibility).
  • If DEFENSIVE is ~70% → likely stay defensive.
Open this tab to load ML state + signals.
As of
—
Confidence ⓘ
—
Deployment band ⓘ
—
—
How this works (training → live):
• Training (history): For each past day T, we saved the signals at T (using only data up to T), then assigned a state label based on what happened after T (6-month reward vs 3-month drawdown “pain”).
• Live (today): We compute today’s signals and the model outputs a Status % (e.g., DEFENSIVE 88%) meaning: in history, days with similar signals most often ended up labeled DEFENSIVE — so the Status % is the model’s confidence for that state (not “today vs 6 months ago”).
Signals (what the model “saw” today)
Signal Today Percentile Read ⓘ
1m return — — —
3m return — — —
QQQ vs GLD (3m) — — —
QQQ vs TLT (3m) — — —
QQQ vs HYG (3m) — — —
3m vol — — —
Vol trend — — —
Dist to 200d SMA — — —
1y drawdown — — —
Percentile is “where today ranks vs history” for that signal (0% = very low vs history, 100% = very high vs history). The Read column summarizes what it implies (leans deploy vs leans defensive).
Signals → State (why)
—
Top drivers today
  • Open this tab to load drivers.
What that usually maps to
—
Action hint
—
10-day trend
—
Defensive probability (bars). Higher = more “defensive” regime risk.
Important (horizon): Not a next-day price call. Calibrated to ~6-month forward reward with a ~3-month drawdown “pain check.”
So RISK_ON can still appear even if QQQ is down recently — short-term drawdowns can still happen.
How to use the band: scale in/out gradually (not “all-in timing”).
Open this tab to load the 10-day series.
ML Guide
Find fund mixes that match the risk you are comfortable with, using historical data.
  1. Choose your style mix with the sliders below (they must add up to 100%).
  2. Click "Show frontier". Each dot is a real fund mix, plotted by risk (volatility) and past return (CAGR).
  3. Click a dot near the risk you want. Six presets appear around it: 2 safer, 2 riskier, 2 similar.
  4. Click Load on a preset. Its funds and weights fill in at the top, and Summary, Return and Drawdown update.
Style weights (sum must be 100%)
—
—

Efficient frontier slice (preview) ⓘ
σ (risk) vs CAGR
Click a point to generate the nearest 6 presets (2 safer, 2 riskier, 2 neighbors).
Target: —
Note: this is a UI preview slice. Later you’ll swap these preview points for true stats from your DB (RUN ETL) universe + ranking logic.
Presets (6)
Reality Check Pack
ⓘ
Adds 3 additional “stress test” runs on top of the main Monte Carlo (more compute, better reality check).
Stress window is fixed at first 5 years after retirement (same as your current stress logic).
More inputs
Other Assets / Future Liquidations
Use this for assets outside your invested portfolio, such as home equity, rental property equity, partnership interest, private business value, or other non-market assets.
Included in projections
If liquidation age is entered, the asset grows separately until that age. Net proceeds after haircut are then added to Taxable / Non-Registered assets and flow through the projection, Monte Carlo, Part A, and Optimizer. If liquidation age is blank or zero, the asset remains in the Other Assets column and continues growing separately.
Asset 1
Asset 2
Asset 3
Advanced override: direct net liquidation proceeds
Optional advanced fields. Use these only if you already know the exact net cash proceeds to add at a future age. Most users should use the Other Assets / Future Liquidations section above, where current asset value, growth rate, liquidation age, and haircut are calculated automatically. These legacy fields are kept for compatibility with older saved scenarios and manual override cases.
Next step
Run your plan, then generate your report.

Calculate Planner refreshes your dashboard. Generate Report creates your full retirement, portfolio, cash-reserve, and tax-aware decision report.

Important: After changing inputs, click Calculate and wait for Cash Reserve and Tax Optimizer to finish before generating the report.
Saved scenarios
Load a saved case, then Calculate to refresh the dashboard.
Setup Mode

Plan Setup

Build the plan inputs here. This phase shows the future setup workspace without moving fields yet.

Inputs stay connected to one planner form
Plan Setup inputs
Timeline & retirement start
When you were born, when you plan to retire, how long to plan for, and where you live.
Province sets the 2026 federal + provincial income tax used in Tax Analysis: brackets, basic personal amount, and the age and pension credits from 65.
Savings & Investments inputs
Assets, savings & portfolio risk
Review current invested assets, monthly contributions, portfolio return, volatility, and investment assumptions.
These are real submitted inputs. They remain connected to the original Calculate form.
Assumptions inputs
Spending, income, tax & inflation
Review spending, support income, tax, inflation, saving growth, and planned expense adjustments.
Tax strategy & withdrawal rules
Detailed tax-aware settings stay in Tax Inputs
Below is a live summary of what is set in Tax Inputs. Change them there; Tax Analysis updates instantly.
Strategy & income tax
Withdrawal strategy—
Meltdown target income—
Province / tax tables—
Custom brackets—
OAS & RRIF
OAS—
OAS clawback—
Index OAS—
RRIF—
Accounts today
Taxable · RRSP · TFSA—
Taxable cost base (ACB)—
Capital-gain inclusion—
Before retirement
Yearly savings split—
Taxable drag—
These are the same inputs Tax Analysis and the Decision Report use.
Change any value with Edit Tax Inputs; this table and Tax Analysis update together.
Profile & Timeline

Birth date, retirement timing, and planning horizon.

Coming next: move the safest Plan Setup inputs here first.
Guided explanation

Each card will include plain-English guidance explaining why the input matters.

This is where the Optiml-style explanation layer will be added.
Decision Dashboard

Deterministic projection vs Monte Carlo risk

This tool doesn’t predict markets. It stress-tests whether your plan survives different futures. Use the smooth projection as the upside target, then use Monte Carlo to understand downside risk, sequence risk, and how much portfolio volatility the plan can afford.

📉 Asset vs. Retirement Expense
Shows the deterministic path: assets, retirement spending, and withdrawal-rate pressure over time.
Deterministic view
📉 Monte Carlo Simulation: Retirement Asset Range
Stress-tests the plan under uncertain market returns, inflation paths, and withdrawal sequence risk.
Benchmark: S&P 500 SPY • 20y • CAGR 10.8% • σ 19.4%
Monte Carlo risk view
✅ Probability of plan success ⓘ (no depletion through age 90): 100.0%
Strong
Success = assets never hit $0 before age 90.
Band guide: <65% = caution, 66–88% = okay, 89%+ = strong
If Caution: adjust one lever — retire later • spend less • save more • reduce volatility.
📌 Executive dashboard
How safe is this plan?
Baseline success: 100.0% Strong
How fragile is it under stress?
Enable Reality Check Pack to see stress fragility.
What should I change first?
Run Sensitivity to show the top lever.
⚠️ Depletion Risk Summary (Based on 300 Monte Carlo Simulations)
  • 0.0% chance of running out of money by age 75
  • 0.0% chance of running out of money by age 85
  • 0.0% chance of running out of money by age 90
📝 MC notes (end labels)
  • End age: —
  • Median assets: — (plan) vs — (benchmark)
  • Depletion: — (plan) vs — (benchmark)
Monte Carlo results include volatility drag and sequence risk. Return Std Dev (σ) ⓘ controls how “bumpy” yearly market returns are around your average return. Note: this version uses a single σ across pre- and post-retirement.
Assumes current savings, asset, CPP, expenses, and retirement age remain fixed. Market returns and inflation are randomly varied in each simulation.
Interactive stress test
Live What-If

Adjust retirement age, spending, savings, tax, inflation, and return assumptions to see how the projected path responds before saving or generating a report.

Restore sliders from the current inputs above.
More controls
🧭 Strategy Coach (beta)
Lever (choose one)
🎯 Goals (beta) — extra expenses or inflows

Enabled Name Type When Amount Infl.

Note: goals are merged client-side into asset liquidations (post-tax) before the live update call.

🧯 Cash Reserve Tradeoff Test
Tests whether holding cash improves plan survival enough to justify the lost investment growth.
Cash reserve results will load after the Live What-If engine runs.
Highest-Success Reserve
—
Waiting for result
Success Change
—
vs no cash reserve
Median Opportunity Cost
—
opportunity cost vs no cash
Avoided Investment Sales
—
negative-return years
Cash Years Cash Target MC Success Success Δ P10 Final Median Final Opportunity Cost Cash Depleted Avoided Sales Read
Waiting for cash-reserve calculation...
Scenario-dependent read
This checks whether cash reserve is worth its opportunity cost under stress cases such as higher volatility, lower post-retirement return, higher spending, or earlier retirement.
Scenario Base Success Best Cash Best Success Gain Median Cost Avoided Sales Read
Waiting for scenario matrix...
🔄 Compare Saved Scenarios
Scenario snapshot (saved in DB)
Select Scenario A / B above; this shows the key plan inputs saved on each scenario.
Scenario Plan snapshot Assumptions
Waiting for selection…

🔄 Compare
Monte Carlo Simulation

Sensitivity – Dollar Impact (Core Inputs)
Retirement Age – Dollar Impact (Own Scale)
Tax-Aware Retirement Plan
These inputs mirror the top form; they’re tucked away to keep the page clean while reviewing Tax-Aware Visuals.

RRIF minimums are always taken first (from the year after conversion).
Tax Inputs
Six short steps. Results update as you type; the page stays usable behind this panel.
Optimized: RRSP meltdown
Draws RRSP each year until RRIF conversion, up to a target taxable income, so low tax brackets are not wasted. Extra cash goes to the TFSA, then Taxable. Compared with the six fixed orders on after-tax estate value.
Blank = Auto.
Run the plan to see your best meltdown target.
Income tax (2026)
Same field as in 1. Plan Setup; changing either one updates both.
Common inputs (example): OAS Monthly ≈ $800 starting at 65; Clawback threshold $95,323/yr (2026; grows with inflation when a province is selected); Clawback rate 15%; RRIF start age 71. Check Index OAS to grow OAS with inflation. Adjust to your year/province.

Custom brackets (advanced): used only when Province or territory (top of this panel, or 1. Plan Setup) is set to Custom brackets. Otherwise the 2026 federal + provincial table shown above is used.
Example only: ~$57,375 → ~14.5%; ~$114,750 → ~20.5%; income above that typically ~26-32% depending on province/territory. See simple bracket table (CRA) .
Note: With brackets ON the flat Income Tax Rate (%) is ignored. Use Taxable Drag (%) to include ongoing tax on taxable investment income. RRIF-min taxes still show under “Tax paid from Taxable (overlay)”.

Optional friction on Taxable growth only. Enter manually, or use the helper below and tick Auto-apply to fill this for you. If you want to overwrite the helper, simply uncheck Auto-apply and type your own value here.
Ongoing Taxable Income Drag
Estimates recurring tax friction while taxable investments remain invested. It includes dividends, interest, and foreign-income withholding — not tax on a later sale.
Income stream Allocation (% of taxable) Yield (% on that slice) Effective Tax Rate before retirement (%) Contribution to Annual Drag (%)
Eligible dividends 0.000
Interest / foreign income 0.000
Annual Ongoing Drag (Σ contributions) 0.000%
Implied Taxable Drag d = Annual Drag ÷ Return Rate 0.00%
Allocation is the share of your taxable balance producing each recurring income stream. Yield is the annual dividend, interest, distribution, or withholding-bearing yield. Each row uses Allocation × Yield × Effective Tax Rate. The result reduces taxable-account growth only. The after-tax income is reinvested and added to your cost base (ACB), so it is not taxed again on sale. In retirement (2026 province tables) this income is taxed with the real brackets instead: interest and foreign income in full, eligible dividends grossed up 38% with the dividend tax credit. If you type your own Taxable Drag (Auto-apply off), that flat drag is used throughout. Realized capital gains are excluded here. They will be calculated separately when the planner sells taxable assets.
Example: 60% equities at 2% yield taxed at 10% → 0.12%; 40% bonds at 4% yield taxed at 30% → 0.48%. Annual ongoing drag = 0.60%.

Allocate your current assets across these three accounts. The total here should match your current portfolio balance. ⓘ
What you paid for these investments, including reinvested dividends. Equal to the balance means no gain today; it then moves with the balance.
Share of a realized capital gain that is taxable (50% under current law).
Total allocated: $0
Pre-retirement contribution split: Each pre-retirement year we deposit savings in this order TFSA → RRSP → Taxable. Amounts below are annual targets; Taxable is auto-computed as Monthly Savings × 12 − TFSA − RRSP. ⓘ
Tip: If TFSA + RRSP exceeds Monthly Savings × 12, we’ll use TFSA first, then RRSP, and set Taxable to $0 for that year.
Savings grow each pre-retirement year by your Annual Saving Increase Rate (%) and are then split in this order TFSA → RRSP → Taxable. ⓘ
TFSA cap grows automatically from $7,000 in 2025 by ≈2.1%/yr for 2026+. We apply that cap before RRSP and Taxable in the yearly split. ⓘ
Withdrawal Strategy Review
Compare six fixed withdrawal orders and the Optimized: RRSP meltdown on after-tax estate value, tax pressure, and account balances.

Recommended Withdrawal & Tax Plan: Year-by-year retirement flows for your selected withdrawal order (e.g., Taxable → TFSA → RRSP), including OAS, RRIF minimums, tax on taxable and RRSP withdrawals, and ending balances by account. Use the CSV to view all rows.

Age Baseline Assets (100% Taxable) Living Expense Living Exp. Adjustment Liq Added From Taxable Realized Gain Taxable Gain Income From TFSA From RRSP (Gross) RRIF Min % CPP / Support OAS (Gross) OAS Clawback OAS (Net) Tax on Realized Gain Tax on RRSP (overlay) Taxable Drag End Taxable End TFSA End RRSP End Total Estate Tax (if plan ended) After-Tax Estate

Optimize withdrawals (beta)
Next-$1 Analyzer (first retirement year)
RRSP marginal on next $1: —
Taxable marginal on next $1: —
OAS headroom / status: —
Optimizer result (summary)
—