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. The same draws also answer two more questions: whether renting and investing the difference beats buying on a risk-adjusted basis, and whether buying now or waiting is the safer timing.

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 follows your nominal growth rate as a trend, with two sources of risk layered on top. First, a permanent income shock each year: a random walk in log income (default volatility 6%, mean-one in levels so expected income stays on trend) whose innovation is correlated with the market return (default 0.3) through the same Cholesky factor as home prices. Raises, cuts, bonus and equity compensation move with the economy, so pay and portfolio can fall together and the shortfall persists. Both parameters are yours to set: 0.06 and 0.3 describe a salaried professional with some variable comp; the lifecycle literature (Cocco, Gomes and Maenhout 2005) uses roughly 0.10 for the permanent shock and a small, noisy correlation, and public-sector or healthcare pay sits near zero correlation.

Second, each year carries a job-loss hazard (default 3%) that is multiplied (default 3×) in any year the market falls more than 15% — the discrete 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.

Rent and invest versus buy, risk-adjusted

The rent path keeps paying your rent (growing at your rent-growth rate) and invests everything buying would have consumed, through identical draws. Both strategies are compared on real net worth at the horizon, home equity counted net of selling costs, and the comparison is made on the whole distribution: the share of futures where buying ends ahead, the median gap and its middle-half range, each strategy's failure probability, and the mean of the worst 5% of futures (CVaR at 5%). The verdict sentence names the case explicitly when one strategy wins on the median but loses in the tail — the situation an expected-value comparison hides. The model reports no single utility-based score: a certainty equivalent depends on a risk aversion and a wealth floor the model cannot know for you.

Buy now, or wait

The timing sweep re-runs the purchase with closing pushed out 1, 2, 3, 5, and 10 years on the same draws. Until closing the household rents and keeps saving; the down payment stays invested and rides the market; the home's price moves with that path's simulated home returns; and closing is funded by selling taxable assets at that year's marginal gains rate. A future where taxable savings cannot cover cash to close at that point counts as a broken plan, like a forced sale — this is where sequence-of-returns risk on the down payment lives. The earliest delay whose break probability is within your failure tolerance is the "buy timing" verdict. The mortgage rate is held at today's quote for every purchase year; the model has no rate forecast.

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 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%). It brackets the crossing on the price-sweep grid and bisects within that interval, to about $1K. 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://homeaffordabilitysimulator.com/embed"
  title="Home affordability quick check"
  width="100%" height="440" style="border:0"
  loading="lazy"></iframe>

Back to the planner