Home Affordability SimulatorBuy the house without giving up early retirement

Methodology

This page documents the model precisely enough that you can decide whether to trust it. The simulator runs entirely in your browser: thousands of joint paths of market returns, home prices, and employment, with the purchase evaluated across a grid of prices on identical draws so every price comparison is apples-to-apples, path by path. The headline question is the purchase price that keeps your probability of reaching financial independence by your target age in comfortable territory. (Internally the engine also runs a no-purchase reference path on the same draws; it anchors the math but is not a product surface.)

Market and home-price model

Portfolio returns are annual, independent lognormal draws with your expected return and volatility. Home prices follow their own lognormal process, correlated with the market through a Cholesky factor (default correlation 0.35 — home prices and equities fell together in 2008–2012 and the model lets them). Returns are nominal; all reported wealth is deflated to today's dollars at your inflation assumption.

Because paths are sequential, the model prices sequence-of-returns risk: a crash the year after you drain your taxable account for a down payment hurts far more than the same crash in year 25, and the simulation sees exactly that difference.

Income and job-loss risk

Income grows at your nominal rate. Each year carries a job-loss hazard (default 3%) that is multiplied (default 3×) in any year the market falls more than 15% — the mechanism by which your job and your portfolio crater together. A job-loss event costs a configurable number of months of income (default 6), spilling into the next year when the spell crosses a year boundary. During shortfall years the household pauses retirement contributions before selling assets.

Life changes (what-ifs)

Optional future events, all specified in today's dollars. An income change (e.g. going part-time in year 5) applies from that year onward and is indexed with your income growth rate, like the base salary; a spending change applies from its year onward and is indexed with inflation, like base spending; a one-time expense or windfall lands once, as after-tax cash in that year (a windfall flows into the taxable account). Both the buy path and the internal no-purchase reference see the same events, so comparisons stay apples-to-apples. Changes affect pre-independence cash flow only — your retirement spending target is set separately in the FIRE panel, so a permanent spending change you expect to persist into retirement should also be reflected there.

Taxes

Accounts and the withdrawal ladder

Three buckets: taxable (with cost-basis tracking), pre-tax (401(k)/IRA), and Roth. The down payment is funded by selling taxable assets, which realizes capital gains at time zero — a cost most calculators skip. When a year's bills exceed income, the model sells taxable first (grossed up for the capital gains tax on the sale), then pre-tax (grossed up for ordinary tax plus the 10% penalty before age 59½), then Roth. All accounts earn the same portfolio return.

The full cost of owning

Principal and interest from true monthly amortization; property tax on the simulated home value each year; insurance growing with inflation; maintenance as a percentage of simulated home value; HOA dues; PMI on the original loan until amortization reaches 78% of the purchase price; buyer closing costs at purchase. Home equity is always counted net of selling costs, so "net worth" means what you could actually walk away with.

Financial independence detection

A path reaches financial independence in the first year its investable portfolio (taxable + pre-tax + Roth, excluding home equity) crosses a housing-aware FIRE threshold:

The reported probability is the share of paths that have crossed the threshold by your target age while the plan is intact. First crossing counts — a later crash can dip a path back below it, which is the same convention most FIRE planning uses — but a crossing after the plan has broken does not: a forced sale dumps home equity into the portfolio and swaps in the lower renter threshold, and crediting that as independence would make an unaffordable price score better than a barely-affordable one. Escape velocity is detected as the first year expected portfolio growth (balance × expected return) exceeds that year's additions from saving; note that a house-poor path can hit it early simply by contributing less.

The price sweep re-runs the purchase at a grid of prices up to the largest you can fund, on the same draws, tracing how FI probability falls as price rises. The headline's "comfortable up to" and "stretch to" prices are where that curve crosses the verdict-tier thresholds (85% and 70% — product judgments, documented in the code), interpolated between grid points, and never exceed the ruin guardrail's forced-sale cap below. When the failure probability at your target price exceeds your acceptable failure rate, the verdict is Risky regardless of the FI odds among surviving paths.

What failure means

A buy path fails when liquid assets (taxable, then pre-tax, then Roth) cannot cover the year's expenses: the household is forced to sell the home, pays selling costs, settles any gain above the §121 exclusion, and rents thereafter. A rent path fails when all accounts are depleted. The failure curve reports the cumulative probability by year; the example paths describe the specific market/job-loss combinations that caused representative failures.

The ruin guardrail

Separately from the FI analysis, a bisection search finds the largest price that (a) you can fund from taxable savings including the capital gains tax on the sale, and (b) keeps the forced-sale probability within your ruin tolerance (default 5%). All candidate prices reuse the same random draws, so every solver is consistent with the headline result.

Where the area benchmarks come from

The "benchmark it from your area" helper draws on three tables, each with its own provenance:

All benchmark outputs are rounded planning numbers, labeled as such in the interface — your own statements beat any benchmark.

Known simplifications

Reproducibility

The simulation is seeded: the same inputs always produce the same outputs, and both strategies plus every safe-price candidate share the same draws. Nothing you enter leaves your browser — there is no server, no account, and no analytics on your financial inputs.

Embed the quick check on your site

Writing about housing, FIRE, or personal finance? A compact version of this simulator — household income in, comfortable and workable price ceilings out, computed by the full engine in the reader's browser — can live on your page with one iframe. No scripts, no tracking, and nothing typed into it leaves the frame:

<iframe
  src="https://home-affordability-app-rouge.vercel.app/embed"
  title="Home affordability quick check"
  width="100%" height="440" style="border:0"
  loading="lazy"></iframe>

Back to the planner