Inspectable Arithmetic for the TFSA vs RRSP vs FHSA Calculator (Canada)

Version 1.0
Last updated: March 2026

Transparent arithmetic is the operating system of this calculator.

This document publishes the formulae, computational structure, and assumptions used to generate the outputs displayed on the calculator page.

No opinions. No hidden assumptions. Just arithmetic.

Purpose

This calculator compares the after-tax future value of contributing a fixed cash amount to different Canadian registered accounts: TFSA, RRSP, and FHSA. It models recurring or lump-sum contributions, simple net investment growth, and explicit tax treatment on contribution and withdrawal under user-supplied marginal tax rates.

Definitions

Let:

Core Equations

1. Net return and monthly rate

Net annual nominal return (after fees):

rnet = (r − f) / 100

Nominal monthly rate:

rm = (1 + rnet)1/12 − 1

If “Show results in real dollars” is enabled, the calculator converts to a real annual rate first:

rreal = \(\dfrac{1 + r_{\text{net}}}{1 + i_d}\) − 1

and then to a real monthly rate:

rm,real = (1 + rreal)1/12 − 1

The engine uses a single monthly rate for all accounts. There is no asset-location modeling (no different returns per account).

2. Contributions and horizon

Time horizon in months:

N = 12T

Contribution schedule:

3. Refund arithmetic

For any RRSP or FHSA deposit d in a month, the modeled refund is:

refund = d × tnow/100

Refund handling modes:

There is one refund bucket per strategy. The calculator does not separately label which portion of Brefund originated from RRSP vs FHSA contributions.

4. Monthly evolution (per strategy)

For each month t = 0,…,N−1, the engine:

  1. Computes the intended gross contribution Gt for that month based on mode (monthly, annual/12, or lump at t = 0).
  2. Allocates Gt between TFSA, RRSP, and FHSA according to the strategy and FHSA annual room constraints (see next section).
  3. Applies refunds on RRSP/FHSA deposits into the refund bucket when “reinvest refund” is selected.
  4. Applies growth to all balances using the monthly rate.

Growth step (using either rm or rm,real):

BTFSA,t+1 = BTFSA,t(1 + rm)
BRRSP,t+1 = BRRSP,t(1 + rm)
BFHSA,t+1 = BFHSA,t(1 + rm)
Brefund,t+1 = Brefund,t(1 + rm)

FHSA Room and Allocation Rules

5. FHSA annual room

Let:

For each simulation year y = 1,…,⌈T⌉, FHSA room at the start of the year is:

room1 = R0
roomy = R   for y ≥ 2

At each month in year y, any amount assigned to FHSA reduces roomy. If a monthly allocation would exceed roomy, the engine:

  1. Contributes up to roomy to FHSA.
  2. Spills the remainder of that month’s contribution to TFSA or RRSP, depending on the strategy.

FHSA lifetime caps and carry-forward rules are not modeled in this version. Only the annual room you specify is enforced.

6. Strategies

The engine simulates several deterministic strategies:

The OPTIMAL strategy is defined as:

Withdrawals and After-Tax Values

7. Withdrawal tax treatment at horizon

At the end of the horizon (month N), balances are:

BTFSA,N, BRRSP,N, BFHSA,N, Brefund,N

After-tax values by account:

VTFSA = BTFSA,N
VRRSP = BRRSP,N(1 − tret/100)
\(\displaystyle V_{\text{FHSA}} = \begin{cases} B_{\text{FHSA},N} & \text{if FHSA is eligible and “plan to buy using FHSA” is checked (home-qualified)} \\ B_{\text{FHSA},N}(1 - t_{\text{ret}}/100) & \text{otherwise (FHSA behaves like RRSP)} \end{cases} \)
Vrefund = Brefund,N

Total after-tax value for a given strategy is:

V_{\text{total}} = V_{\text{TFSA}} + V_{\text{RRSP}} + V_{\text{FHSA}} + V_{\text{refund}}

Allocation Summary

The calculator reports a human-readable “optimal split” sentence based on the simulated strategy that maximizes Vtotal:

Worked Example (Using Your Last Inputs)

The example below substitutes the last inputs you used on the calculator page (if available from this browser). Values are rounded for readability.

Open the TFSA vs RRSP vs FHSA calculator, enter your assumptions, and then click “Inspect the Arithmetic” to see a worked example here with your values.

Assumptions and Limitations

  1. All simulations use monthly time steps with deterministic compounding and fixed contribution schedules.
  2. Investment returns, fees, and (optionally) inflation are modeled as constant over the full horizon.
  3. RRSP and FHSA refunds are either treated as immediately spent (default) or reinvested in a TFSA-like bucket; actual tax timing and withholding are more complex in practice.
  4. Tax rates tnow and tret are user-supplied and held constant; the calculator does not derive marginal rates from taxable income.
  5. FHSA modeling uses only the annual room you specify; lifetime FHSA contribution caps, carry-forward mechanics, and detailed withdrawal conditions are not modeled.
  6. Non-registered (taxable) accounts are not included in this version; it is an account-to-account comparison between registered options.
  7. All results are rounded for display; internal calculations use full floating-point precision.

If any discrepancy is identified between this documentation and the calculator output, the arithmetic in the engine governs.