Mortgage affordability methodology
Last verified: Effective for Canadian mortgage qualification rules, 2026 by Fiscal Moose
Open the Mortgage Affordability calculatorThe Mortgage Affordability calculator works backward from your income, down payment, and monthly costs to the largest home price that still passes Canada’s mortgage-qualification rules: the stress test (you qualify at a higher rate than you pay) and the GDS and TDS debt-service ratios. This page documents the rules and conventions the calculator relies on, the sources we verify them against, the reference cases that authorise the formula to ship, and the known limitations of our model. For the payment side (the periodic payment, amortization, and the CMHC premium itself), see our mortgage payment calculator and its methodology page.
How the calculator works
The calculator solves a price, not a payment, all from the versioned constants in our data file and the conventions in the FCAC stress-test rule and the CMHC schedule:
- The stress test (minimum qualifying rate). A federally regulated lender requires you to qualify at the greater of your contract rate plus 2 percentage points or a 5.25% floor, even though you pay at your lower contract rate. So a 4% mortgage is tested at 6%, and a 2.5% mortgage is tested at the 5.25% floor. The minimum qualifying rate is derived inside the model, never an input, so it can never be silently set to the contract rate; qualifying at the contract rate overstates affordability by roughly a fifth, in the dangerous direction.
- The two debt-service ratios. Your gross debt service (GDS) (the qualifying mortgage payment plus property tax, heating, and half your condo fees) can’t exceed 39% of gross monthly income. Your total debt service (TDS) (all of that plus car loans, credit cards, lines of credit, and student loans) can’t exceed 44%. The binding budget is the smaller of the two, clamped at zero (carrying costs at or above the cap means no mortgage is affordable). These ratios are fractions, so the test uses a relative tolerance, never the one-cent money floor the dollar figures use.
- The price inversion (feasibility-bounded binary search). Given the maximum qualifying payment, the model searches for the largest purchase price whose qualifying GDS/TDS still pass. It is a binary search rather than a closed form because the CMHC premium feedback, the piecewise minimum down payment, and the $1.5 million insured cap are step functions. The search predicate is monotone only within the feasible region (where your cash meets the minimum down payment for that price), so the ceiling collapses to the conventional 20%-down ceiling when no insured path exists. The price is rounded down to the dollar, and a runtime fail-safe blanks the result rather than guess if a future data edit ever broke the search invariant.
- The CMHC reality at the solved price. Once the price is found, the
model reuses our mortgage payment engine (the same
calculateMortgagethe payment calculator uses) to compute the CMHC insurance premium, capitalize it onto the loan, and report the resulting payment at your contract rate, so the affordability number and the payment number tie out end to end. Down payments under 20% require insurance; homes priced at $1.5 million or more need at least 20% down and cannot be insured at all.
Current constants (2026)
| Stress-test floor | 5.25% (the minimum qualifying rate is never below this) |
|---|---|
| Stress-test spread | Contract rate + 2 percentage points (whichever is higher than the floor binds) |
| Gross debt service (GDS) maximum | 39% of gross income |
| Total debt service (TDS) maximum | 44% of gross income |
| Condo-fee share counted in GDS | 50% of monthly condo / strata fees |
| Minimum down payment | 5% to $500k; 10% from $500k to just under $1.5M; 20% at $1.5M and above |
These values are read directly from our versioned data files
(packages/data/src/mortgage/limits.ts). The debt-service ratio table and
the stress-test rule are also rendered on the calculator page itself.
Worked example
A household with $120,000 of gross annual income and $100,000 of cash, at a 4% contract rate over 25 years, with $4,800/yr property tax and $1,800/yr heating and no condo fees or other debt, qualifies at a minimum qualifying rate of 6.00% (4% + 2%). Gross debt service is the binding constraint, capping the qualifying payment at $3,350/month, which works back to a maximum home price of $609,335. The base mortgage is $509,335 (an 83.6% loan-to-value, so CMHC insurance applies), the 2.80% premium of $14,261 is capitalized onto the loan, and the buyer’s actual payment at the 4% contract rate is $2,754.22/month: they qualify on the higher $3,350 stress-test payment but pay the lower one. Qualifying at the contract rate instead would have returned about $717,709, overstating affordability by roughly $108,000.
Reference cases and verification
The affordability formula ships only after passing a suite of 30 reference
cases, each a known scenario with a known expected output: the binding
constraint (GDS, TDS, or the down-payment floor), the minimum qualifying rate at the
floor and at the spread, the $1.5 million cap behaviour, the all-cash (unaffordable)
edge, and the over-stating defects caught in adversarial review. The build fails if any
case diverges from its expected value beyond the case’s tolerance. The price solve
also has its own independent closed-form verifier
(scripts/verify-affordability-cases.ts) that re-derives the qualifying
payment and price on a separate code path, so a solve error cannot pass both checks.
The marquee anchor is the $609,335 worked example above, the figure that exposes whether a calculator qualifies you at the stress-test rate (the safe, correct way) or at your contract rate (the over-stating bug).
Our update cadence
The stress-test rule (the 2% spread and the 5.25% floor) is set by OSFI’s B-20 guideline for federally regulated lenders and by the Department of Finance for insured mortgages; the 39% / 44% debt-service maximums are the federal qualifying limits these rules apply. The Financial Consumer Agency of Canada publishes the consumer-facing summary of all of this, which is the page we verify against and refresh on an as-needed basis when the published rule changes. The minimum-down-payment bands and the $1.5 million insurable cap are CMHC / Department of Finance policy on the same as-needed cadence. The Bank of Canada policy-rate default is refreshed on the Bank’s announcement schedule, but it is only a convenience pre-fill, not a figure the methodology depends on.
If you find an error
If you spot a mistake in the calculator or this page, report it through our contact page. We commit to acknowledging within 24 hours, fixing clear formula or data errors within 7 days, and publishing a changelog entry describing what changed and when.
Professional-review status
This page is operator-verified against the Financial Consumer Agency of Canada, CMHC, and the Interest Act; it is not professional financial advice and has not been CPA- or broker-reviewed. The uninsured stress-test rate, the 39% / 44% debt-service maximums, and the minimum-down-payment bands were re-confirmed verbatim against the live source pages on 2026-07-06. The insured-mortgage qualifying rate is corroborated by FCAC and CMHC but is still flagged for a Department-of-Finance-instrument verbatim re-confirmation before any future indexability flip.
Sources
- Financial Consumer Agency of Canada: Preparing to get a mortgage (stress test + GDS/TDS ratios)
- Canada Mortgage and Housing Corporation: Mortgage Loan Insurance Cost
- Financial Consumer Agency of Canada: Preparing to get a mortgage (the stress test / minimum qualifying rate and the GDS/TDS debt-service ratios)
- Financial Consumer Agency of Canada: Down payment (minimum down-payment bands + the $1.5M insurable cap)
- Interest Act, s. 6: mortgage interest stated on a yearly or half-yearly basis (the semi-annual compounding convention the reused payment engine applies)
Known limitations
- Estimate only, not a lender pre-approval. Uses the federal GDS ≤ 39% / TDS ≤ 44% maximums and the stress-test qualifying rate (greater of contract + 2% or 5.25%). Individual lenders apply their own, often stricter, guidelines (e.g. 32%/40%) and additional credit criteria.
- You qualify at the minimum qualifying rate (MQR) but pay at your contract rate. The maximum price assumes you can carry the higher MQR payment even though your actual payment is lower.
- Excludes land-transfer / property-transfer tax and first-time-buyer rebates, closing costs, moving costs, and ongoing maintenance beyond property tax, heating, and condo fees.
- Variable-rate qualification nuances (the trigger rate), self-employed and commission income haircuts, and rental-income offsets are not modelled.
- Reuses the mortgage payment engine: semi-annual compounding; CMHC premium capitalized onto the loan; the non-traditional down-payment premium tier (4.50%) is not applied; CMHC premium provincial sales tax (ON/QC/SK) is not added.
- For a down payment between roughly $125,000 and $300,000 the maximum price can pin just below the $1.5 million insured-mortgage cap (homes priced at $1.5 million or more need 20% down) until your cash reaches the conventional 20% threshold.
- The 5.25% qualifying-rate floor, the 2% spread, and the 39% / 44% debt-service maximums are taken from the Financial Consumer Agency of Canada and were re-confirmed verbatim against the live pages 2026-07-06. The insured-mortgage MQR is corroborated by FCAC and CMHC Home Start but, as an independently-sourced Department of Finance figure, remains pending an operator verbatim re-confirmation before the calculator is promoted from noindex.