Skip to the content

The warehouse

Where every number comes from, and how it was checked.

Prices from 2000 to 2026Q2, every census one year release from 2005 to 2024 (none in 2020), rents and income limits from HUD, weekly rates from Freddie Mac through 2026-10-22, permits and population by county from 2000, and 55,817,457 loans from the HMDA extract, 2018 to 2025, went through named quarantine rules (flagged and counted, nothing deleted) and 7 delineation vintages into a dbt warehouse of 35 models and 164 tests. The metric layer defines each of 21 metrics once over the finest grain and once over the shipped mart and compares them at 4 grains: 0 disagreements.

The quarantine report

SourceRuleFlaggedRows
acsjam_value72,415,786
acsmoe_exceeds_estimate108,6272,415,786
acsnegative_moe02,415,786
bpscounty_listed_twice1081,768
bpsimputed_share_high8,04581,768
bpsmalformed_fips081,768
bpsnegative_units081,768
fhfaimplausible_jump1585,272
fhfamissing_quarter6185,272
fhfanon_positive_index085,272
hmdaincome_exempt_or_missing4,893,62964,743,292
hmdametro_unresolved2,310,29264,743,292
hmdanot_principal_residence6,717,97164,743,292
hmdarate_missing2,083,67164,743,292
hmdareverse_open_or_business3,275,85664,743,292
hmdaterm_not_30_years13,859,99064,743,292
hmdavalue_below_loan984,89664,743,292
hud_fmrbedroom_order04,764
hud_fmrnon_positive_rent04,764
hud_illimit_order084,224
hud_ilnon_positive_income084,224
ombcounty_in_two_areas013,288
ombmalformed_fips013,288
pmmsimplausible_rate02,900
pmmsmissing_week02,900
popestnon_positive_population081,714
popestvintage_overlap081,714

Source: several sources; population: every row of every source; as of 2026-10-23.

The quarantine report by source and year

Rows flagged by each rule, by source and year; a row can trip more than one rule

Loading the chart

Source: every source through its contract (real), the warehouse's mart_quarantine.

The delineation crosswalk

Every source is mapped to its area through the delineation vintage in force when it was published; the warehouse carries each area under its latest code with the earlier codes as aliases. 7 vintages, the latest 2,023; the crosswalk tests prove every county maps to one area per vintage.

The crosswalk counts are in the geography document.

The metric layer, reconciled

1,764 cells compared across 4 grains, 0 disagreements.

MetricOver the grainOver the mart
householdssum(estimate) filter (where variable = 'B11001_001')sum(households)
owner householdssum(estimate) filter (where variable = 'B25003_002')sum(owner_households)
renter householdssum(estimate) filter (where variable = 'B25003_003')sum(renter_households)
renters burdenedsum(estimate) filter (where variable in ('B25070_007', 'B25070_008', 'B25070_009', 'B25070_010'))sum(renters_burdened)
renters severesum(estimate) filter (where variable = 'B25070_010')sum(renters_severe)
renter burdened sharesum(estimate) filter (where variable in ('B25070_007', 'B25070_008', 'B25070_009', 'B25070_010')) / (sum(estimate) filter (where variable = 'B25070_001') - coalesce(sum(estimate) filter (where variable = 'B25070_011'), 0))sum(renters_burdened) / sum(renters_with_share)
housing unitssum(estimate) filter (where variable = 'B25001_001')sum(housing_units)
permitssum(permits)sum(permits)
populationsum(population)sum(population)
domestic migrationsum(domestic_migration)sum(domestic_migration)
purchase loanscount(*) filter (where loan_purpose = 1)sum(purchase_loans)
refinance loanscount(*) filter (where loan_purpose in (31, 32))sum(refinance_loans)
low rate originationscount(*) filter (where interest_rate < 4.0 and not q_rate_missing and not q_term_not_30_years)sum(low_rate_originations)
turnover per 100 owners100.0 * sum(purchase_loans) / sum(owner_households)100.0 * sum(purchase_loans) / sum(owner_households)
lock in per 100 owners100.0 * sum(low_rate_originations) / sum(owner_households)100.0 * sum(low_rate_originations) / sum(owner_households)
permits per 100 households100.0 * sum(permits) / sum(households)100.0 * sum(permits) / sum(households)
domestic migration per 100100.0 * sum(domestic_migration) / sum(population)100.0 * sum(domestic_migration) / sum(population)
purchase under 35 sharesum(purchase_under_35) / sum(purchase_with_age)sum(purchase_under_35) / sum(purchase_with_age)
owner mortgage burdened sharesum(owners_mortgage_burdened) / sum(owners_mortgage_with_share)sum(owners_mortgage_burdened) / sum(owners_mortgage_with_share)
payment share ratio of sums12.0 * sum(payment) / sum(median_income)12.0 * sum(payment) / sum(median_income)
price to income ratio of sumssum(value_anchored) / sum(median_income)sum(value_anchored) / sum(median_income)

Source: several sources; population: every metro and year in the window, through the metric layer; as of 2026-10-23.

The anchor sensitivity

Every headline of chapter one re-anchored in each neighbour of the chosen year; the word degenerate marks a neighbour where the headline turns.

Anchor yearLatest payment share2006 payment shareDifferenceMetros above 2006Note
2,01535.0%33.8%+1.1 pts283
2,01734.8%33.7%+1.1 pts283
2,01934.9%33.7%+1.1 pts283chosen
2,02333.5%32.3%+1.2 pts283

Source: FHFA index anchored to the census, with Freddie Mac rates (real); model: anchor; population: every metropolitan area with a census income and an anchored value, 2005 to 2024; as of 2026-10-23.

The recovery study

Every estimator, run on simulated metros where the truth is known, 24 conditions with 20 seeds each, before it touched a real metro. The condition with strong reverse causality is drawn in clay; it is where the migration chapter admits its limit.

EstimatorMean biasMean RMSEMean coverageMean flag rateWorst bias underLowest coverageLowest coverage under
anchored_level-0.00140.0135not applicablenot applicableweak_demand/narrow_supply/none_reverse/high_noisenot applicablenot available
anchored_payment_share-0.00020.003843%not applicableweak_demand/narrow_supply/none_reverse/low_noise35%weak_demand/narrow_supply/mild_reverse/high_noise
borrower_ratio_shift-0.00110.005876%not applicablestrong_demand/narrow_supply/strong_reverse/high_noise55%weak_demand/wide_supply/mild_reverse/low_noise
bracket_interpolation+0.00370.0039not applicablenot applicableweak_demand/narrow_supply/strong_reverse/high_noisenot applicablenot available
breakeven_horizon+4.41684.4415not applicable70%weak_demand/narrow_supply/strong_reverse/low_noisenot applicablenot available
burden_changepoint+0.00420.0186not applicable100%strong_demand/narrow_supply/strong_reverse/low_noisenot applicablenot available
lock_in_did+0.00150.005594%85%weak_demand/narrow_supply/none_reverse/high_noise85%weak_demand/narrow_supply/strong_reverse/high_noise
lock_in_placebo-0.00010.008785%not applicablestrong_demand/narrow_supply/none_reverse/high_noise80%strong_demand/narrow_supply/mild_reverse/high_noise
migration_effect-0.00020.002798%18%strong_demand/wide_supply/strong_reverse/low_noise95%strong_demand/narrow_supply/none_reverse/low_noise
migration_naive-0.00360.004361%not applicablestrong_demand/wide_supply/strong_reverse/low_noise5%strong_demand/narrow_supply/strong_reverse/low_noise
migration_placebo-0.00270.004382%not applicablestrong_demand/wide_supply/strong_reverse/high_noise15%strong_demand/narrow_supply/strong_reverse/high_noise
ranking_adjusted-0.04370.0475not applicable89%strong_demand/narrow_supply/strong_reverse/low_noisenot applicablenot available
self_report_correction-0.00150.0034not applicable2%weak_demand/wide_supply/mild_reverse/low_noisenot applicablenot available
severe_share0.00000.0000100%not applicablestrong_demand/narrow_supply/none_reverse/low_noise100%strong_demand/narrow_supply/mild_reverse/high_noise
supply_controlled+0.00260.004385%not applicablestrong_demand/narrow_supply/strong_reverse/high_noise70%strong_demand/wide_supply/strong_reverse/high_noise
supply_uncontrolled+0.00580.007070%not applicablestrong_demand/narrow_supply/strong_reverse/high_noise30%strong_demand/narrow_supply/strong_reverse/high_noise
under_35_shift-0.00020.001885%not applicablestrong_demand/wide_supply/mild_reverse/high_noise60%strong_demand/wide_supply/mild_reverse/high_noise

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

anchored level: largest bias under weak_demand/narrow_supply/none_reverse/high_noise

Absolute bias by condition

0.00000.00100.00200.0030absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0003strong demand, narrowsupply, mild reverse, low noise0.0001strong demand, narrowsupply, none reverse, high noise0.0004strong demand, narrowsupply, none reverse, low noise0.0003strong demand, narrowsupply, strong reverse, high noise0.0001strong demand, narrowsupply, strong reverse, low noise0.0001strong demand, wide supply,mild reverse, high noise0.0004strong demand, wide supply,mild reverse, low noise0.0002strong demand, wide supply,none reverse, high noise0.0005strong demand, wide supply,none reverse, low noise0.0004strong demand, wide supply,strong reverse, high noise0.0001strong demand, wide supply,strong reverse, low noise0.0000weak demand, narrow supply,mild reverse, high noise0.0032weak demand, narrow supply,mild reverse, low noise0.0031weak demand, narrow supply,none reverse, high noise0.0032weak demand, narrow supply,none reverse, low noise0.0031weak demand, narrow supply,strong reverse, high noise0.0030weak demand, narrow supply,strong reverse, low noise0.0029weak demand, wide supply,mild reverse, high noise0.0032weak demand, wide supply,mild reverse, low noise0.0031weak demand, wide supply,none reverse, high noise0.0031weak demand, wide supply,none reverse, low noise0.0031weak demand, wide supply,strong reverse, high noise0.0030weak demand, wide supply,strong reverse, low noise0.0030

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

anchored payment share: largest bias under weak_demand/narrow_supply/none_reverse/low_noise

Absolute bias by condition; interval coverage averages 43%

0.00000.00020.00040.0006absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0003strong demand, narrowsupply, mild reverse, low noise0.0003strong demand, narrowsupply, none reverse, high noise0.0004strong demand, narrowsupply, none reverse, low noise0.0004strong demand, narrowsupply, strong reverse, high noise0.0002strong demand, narrowsupply, strong reverse, low noise0.0001strong demand, wide supply,mild reverse, high noise0.0003strong demand, wide supply,mild reverse, low noise0.0003strong demand, wide supply,none reverse, high noise0.0004strong demand, wide supply,none reverse, low noise0.0004strong demand, wide supply,strong reverse, high noise0.0002strong demand, wide supply,strong reverse, low noise0.0002weak demand, narrow supply,mild reverse, high noise0.0006weak demand, narrow supply,mild reverse, low noise0.0007weak demand, narrow supply,none reverse, high noise0.0007weak demand, narrow supply,none reverse, low noise0.0007weak demand, narrow supply,strong reverse, high noise0.0006weak demand, narrow supply,strong reverse, low noise0.0006weak demand, wide supply,mild reverse, high noise0.0006weak demand, wide supply,mild reverse, low noise0.0006weak demand, wide supply,none reverse, high noise0.0006weak demand, wide supply,none reverse, low noise0.0007weak demand, wide supply,strong reverse, high noise0.0005weak demand, wide supply,strong reverse, low noise0.0006

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

borrower ratio shift: largest bias under strong_demand/narrow_supply/strong_reverse/high_noise

Absolute bias by condition; interval coverage averages 76%

0.00000.00050.00100.00150.00200.0025absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0022strong demand, narrowsupply, mild reverse, low noise0.0022strong demand, narrowsupply, none reverse, high noise0.0008strong demand, narrowsupply, none reverse, low noise0.0008strong demand, narrowsupply, strong reverse, high noise0.0023strong demand, narrowsupply, strong reverse, low noise0.0013strong demand, wide supply,mild reverse, high noise0.0017strong demand, wide supply,mild reverse, low noise0.0019strong demand, wide supply,none reverse, high noise0.0008strong demand, wide supply,none reverse, low noise0.0008strong demand, wide supply,strong reverse, high noise0.0017strong demand, wide supply,strong reverse, low noise0.0019weak demand, narrow supply,mild reverse, high noise0.0017weak demand, narrow supply,mild reverse, low noise0.0012weak demand, narrow supply,none reverse, high noise0.0014weak demand, narrow supply,none reverse, low noise0.0014weak demand, narrow supply,strong reverse, high noise0.0018weak demand, narrow supply,strong reverse, low noise0.0006weak demand, wide supply,mild reverse, high noise0.0015weak demand, wide supply,mild reverse, low noise0.0013weak demand, wide supply,none reverse, high noise0.0014weak demand, wide supply,none reverse, low noise0.0014weak demand, wide supply,strong reverse, high noise0.0020weak demand, wide supply,strong reverse, low noise0.0004

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

bracket interpolation: largest bias under weak_demand/narrow_supply/strong_reverse/high_noise

Absolute bias by condition

0.00000.00100.00200.00300.00400.0050absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0036strong demand, narrowsupply, mild reverse, low noise0.0035strong demand, narrowsupply, none reverse, high noise0.0039strong demand, narrowsupply, none reverse, low noise0.0038strong demand, narrowsupply, strong reverse, high noise0.0027strong demand, narrowsupply, strong reverse, low noise0.0025strong demand, wide supply,mild reverse, high noise0.0036strong demand, wide supply,mild reverse, low noise0.0034strong demand, wide supply,none reverse, high noise0.0039strong demand, wide supply,none reverse, low noise0.0037strong demand, wide supply,strong reverse, high noise0.0027strong demand, wide supply,strong reverse, low noise0.0025weak demand, narrow supply,mild reverse, high noise0.0040weak demand, narrow supply,mild reverse, low noise0.0040weak demand, narrow supply,none reverse, high noise0.0039weak demand, narrow supply,none reverse, low noise0.0039weak demand, narrow supply,strong reverse, high noise0.0044weak demand, narrow supply,strong reverse, low noise0.0044weak demand, wide supply,mild reverse, high noise0.0040weak demand, wide supply,mild reverse, low noise0.0040weak demand, wide supply,none reverse, high noise0.0039weak demand, wide supply,none reverse, low noise0.0039weak demand, wide supply,strong reverse, high noise0.0043weak demand, wide supply,strong reverse, low noise0.0043

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

breakeven horizon: largest bias under weak_demand/narrow_supply/strong_reverse/low_noise

Absolute bias by condition

0.00001.00002.00003.00004.00005.0000absolute biasstrong demand, narrowsupply, mild reverse, high noise4.2426strong demand, narrowsupply, mild reverse, low noise4.2949strong demand, narrowsupply, none reverse, high noise4.3231strong demand, narrowsupply, none reverse, low noise4.4981strong demand, narrowsupply, strong reverse, high noise3.9630strong demand, narrowsupply, strong reverse, low noise3.8463strong demand, wide supply,mild reverse, high noise4.2153strong demand, wide supply,mild reverse, low noise4.2926strong demand, wide supply,none reverse, high noise4.3093strong demand, wide supply,none reverse, low noise4.4676strong demand, wide supply,strong reverse, high noise3.8917strong demand, wide supply,strong reverse, low noise3.7875weak demand, narrow supply,mild reverse, high noise4.5824weak demand, narrow supply,mild reverse, low noise4.7662weak demand, narrow supply,none reverse, high noise4.5954weak demand, narrow supply,none reverse, low noise4.7083weak demand, narrow supply,strong reverse, high noise4.6009weak demand, narrow supply,strong reverse, low noise4.7880weak demand, wide supply,mild reverse, high noise4.5898weak demand, wide supply,mild reverse, low noise4.7380weak demand, wide supply,none reverse, high noise4.5949weak demand, wide supply,none reverse, low noise4.6708weak demand, wide supply,strong reverse, high noise4.5324weak demand, wide supply,strong reverse, low noise4.7032

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

burden changepoint: largest bias under strong_demand/narrow_supply/strong_reverse/low_noise

Absolute bias by condition

0.00000.01000.02000.03000.04000.0500absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0000strong demand, narrowsupply, mild reverse, low noise0.0000strong demand, narrowsupply, none reverse, high noise0.0000strong demand, narrowsupply, none reverse, low noise0.0000strong demand, narrowsupply, strong reverse, high noise0.0000strong demand, narrowsupply, strong reverse, low noise0.0500strong demand, wide supply,mild reverse, high noise0.0000strong demand, wide supply,mild reverse, low noise0.0000strong demand, wide supply,none reverse, high noise0.0000strong demand, wide supply,none reverse, low noise0.0000strong demand, wide supply,strong reverse, high noise0.0000strong demand, wide supply,strong reverse, low noise0.0500weak demand, narrow supply,mild reverse, high noise0.0000weak demand, narrow supply,mild reverse, low noise0.0000weak demand, narrow supply,none reverse, high noise0.0000weak demand, narrow supply,none reverse, low noise0.0000weak demand, narrow supply,strong reverse, high noise0.0000weak demand, narrow supply,strong reverse, low noise0.0000weak demand, wide supply,mild reverse, high noise0.0000weak demand, wide supply,mild reverse, low noise0.0000weak demand, wide supply,none reverse, high noise0.0000weak demand, wide supply,none reverse, low noise0.0000weak demand, wide supply,strong reverse, high noise0.0000weak demand, wide supply,strong reverse, low noise0.0000

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

lock in did: largest bias under weak_demand/narrow_supply/none_reverse/high_noise

Absolute bias by condition; interval coverage averages 94%

0.00000.00050.00100.00150.00200.00250.0030absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0005strong demand, narrowsupply, mild reverse, low noise0.0005strong demand, narrowsupply, none reverse, high noise0.0006strong demand, narrowsupply, none reverse, low noise0.0006strong demand, narrowsupply, strong reverse, high noise0.0004strong demand, narrowsupply, strong reverse, low noise0.0004strong demand, wide supply,mild reverse, high noise0.0005strong demand, wide supply,mild reverse, low noise0.0005strong demand, wide supply,none reverse, high noise0.0006strong demand, wide supply,none reverse, low noise0.0006strong demand, wide supply,strong reverse, high noise0.0004strong demand, wide supply,strong reverse, low noise0.0004weak demand, narrow supply,mild reverse, high noise0.0025weak demand, narrow supply,mild reverse, low noise0.0026weak demand, narrow supply,none reverse, high noise0.0027weak demand, narrow supply,none reverse, low noise0.0027weak demand, narrow supply,strong reverse, high noise0.0022weak demand, narrow supply,strong reverse, low noise0.0023weak demand, wide supply,mild reverse, high noise0.0025weak demand, wide supply,mild reverse, low noise0.0026weak demand, wide supply,none reverse, high noise0.0027weak demand, wide supply,none reverse, low noise0.0027weak demand, wide supply,strong reverse, high noise0.0022weak demand, wide supply,strong reverse, low noise0.0023

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

lock in placebo: largest bias under strong_demand/narrow_supply/none_reverse/high_noise

Absolute bias by condition; interval coverage averages 85%

0.00000.00050.00100.00150.0020absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0015strong demand, narrowsupply, mild reverse, low noise0.0015strong demand, narrowsupply, none reverse, high noise0.0015strong demand, narrowsupply, none reverse, low noise0.0015strong demand, narrowsupply, strong reverse, high noise0.0013strong demand, narrowsupply, strong reverse, low noise0.0013strong demand, wide supply,mild reverse, high noise0.0015strong demand, wide supply,mild reverse, low noise0.0015strong demand, wide supply,none reverse, high noise0.0015strong demand, wide supply,none reverse, low noise0.0015strong demand, wide supply,strong reverse, high noise0.0014strong demand, wide supply,strong reverse, low noise0.0013weak demand, narrow supply,mild reverse, high noise0.0014weak demand, narrow supply,mild reverse, low noise0.0013weak demand, narrow supply,none reverse, high noise0.0014weak demand, narrow supply,none reverse, low noise0.0014weak demand, narrow supply,strong reverse, high noise0.0012weak demand, narrow supply,strong reverse, low noise0.0012weak demand, wide supply,mild reverse, high noise0.0014weak demand, wide supply,mild reverse, low noise0.0013weak demand, wide supply,none reverse, high noise0.0014weak demand, wide supply,none reverse, low noise0.0014weak demand, wide supply,strong reverse, high noise0.0012weak demand, wide supply,strong reverse, low noise0.0012

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

migration effect: largest bias under strong_demand/wide_supply/strong_reverse/low_noise

Absolute bias by condition; interval coverage averages 97%

0.00000.00050.00100.00150.0020absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0002strong demand, narrowsupply, mild reverse, low noise0.0000strong demand, narrowsupply, none reverse, high noise0.0003strong demand, narrowsupply, none reverse, low noise0.0001strong demand, narrowsupply, strong reverse, high noise0.0005strong demand, narrowsupply, strong reverse, low noise0.0010strong demand, wide supply,mild reverse, high noise0.0003strong demand, wide supply,mild reverse, low noise0.0000strong demand, wide supply,none reverse, high noise0.0002strong demand, wide supply,none reverse, low noise0.0002strong demand, wide supply,strong reverse, high noise0.0010strong demand, wide supply,strong reverse, low noise0.0015weak demand, narrow supply,mild reverse, high noise0.0001weak demand, narrow supply,mild reverse, low noise0.0001weak demand, narrow supply,none reverse, high noise0.0000weak demand, narrow supply,none reverse, low noise0.0002weak demand, narrow supply,strong reverse, high noise0.0001weak demand, narrow supply,strong reverse, low noise0.0004weak demand, wide supply,mild reverse, high noise0.0001weak demand, wide supply,mild reverse, low noise0.0001weak demand, wide supply,none reverse, high noise0.0001weak demand, wide supply,none reverse, low noise0.0002weak demand, wide supply,strong reverse, high noise0.0004weak demand, wide supply,strong reverse, low noise0.0007

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

migration naive: largest bias under strong_demand/wide_supply/strong_reverse/low_noise

Absolute bias by condition; interval coverage averages 61%

0.00000.00200.00400.0060absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0033strong demand, narrowsupply, mild reverse, low noise0.0032strong demand, narrowsupply, none reverse, high noise0.0040strong demand, narrowsupply, none reverse, low noise0.0037strong demand, narrowsupply, strong reverse, high noise0.0055strong demand, narrowsupply, strong reverse, low noise0.0059strong demand, wide supply,mild reverse, high noise0.0033strong demand, wide supply,mild reverse, low noise0.0032strong demand, wide supply,none reverse, high noise0.0040strong demand, wide supply,none reverse, low noise0.0037strong demand, wide supply,strong reverse, high noise0.0058strong demand, wide supply,strong reverse, low noise0.0063weak demand, narrow supply,mild reverse, high noise0.0017weak demand, narrow supply,mild reverse, low noise0.0020weak demand, narrow supply,none reverse, high noise0.0019weak demand, narrow supply,none reverse, low noise0.0023weak demand, narrow supply,strong reverse, high noise0.0041weak demand, narrow supply,strong reverse, low noise0.0043weak demand, wide supply,mild reverse, high noise0.0019weak demand, wide supply,mild reverse, low noise0.0022weak demand, wide supply,none reverse, high noise0.0019weak demand, wide supply,none reverse, low noise0.0023weak demand, wide supply,strong reverse, high noise0.0044weak demand, wide supply,strong reverse, low noise0.0046

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

migration placebo: largest bias under strong_demand/wide_supply/strong_reverse/high_noise

Absolute bias by condition; interval coverage averages 82%

0.00000.00200.00400.00600.00800.01000.0120absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0028strong demand, narrowsupply, mild reverse, low noise0.0009strong demand, narrowsupply, none reverse, high noise0.0001strong demand, narrowsupply, none reverse, low noise0.0001strong demand, narrowsupply, strong reverse, high noise0.0102strong demand, narrowsupply, strong reverse, low noise0.0047strong demand, wide supply,mild reverse, high noise0.0029strong demand, wide supply,mild reverse, low noise0.0010strong demand, wide supply,none reverse, high noise0.0002strong demand, wide supply,none reverse, low noise0.0002strong demand, wide supply,strong reverse, high noise0.0108strong demand, wide supply,strong reverse, low noise0.0054weak demand, narrow supply,mild reverse, high noise0.0025weak demand, narrow supply,mild reverse, low noise0.0007weak demand, narrow supply,none reverse, high noise0.0000weak demand, narrow supply,none reverse, low noise0.0001weak demand, narrow supply,strong reverse, high noise0.0066weak demand, narrow supply,strong reverse, low noise0.0023weak demand, wide supply,mild reverse, high noise0.0026weak demand, wide supply,mild reverse, low noise0.0008weak demand, wide supply,none reverse, high noise0.0001weak demand, wide supply,none reverse, low noise0.0000weak demand, wide supply,strong reverse, high noise0.0070weak demand, wide supply,strong reverse, low noise0.0027

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

ranking adjusted: largest bias under strong_demand/narrow_supply/strong_reverse/low_noise

Absolute bias by condition

0.00000.05000.1000absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0374strong demand, narrowsupply, mild reverse, low noise0.0459strong demand, narrowsupply, none reverse, high noise0.0266strong demand, narrowsupply, none reverse, low noise0.0329strong demand, narrowsupply, strong reverse, high noise0.0939strong demand, narrowsupply, strong reverse, low noise0.1238strong demand, wide supply,mild reverse, high noise0.0361strong demand, wide supply,mild reverse, low noise0.0437strong demand, wide supply,none reverse, high noise0.0267strong demand, wide supply,none reverse, low noise0.0314strong demand, wide supply,strong reverse, high noise0.0946strong demand, wide supply,strong reverse, low noise0.1204weak demand, narrow supply,mild reverse, high noise0.0280weak demand, narrow supply,mild reverse, low noise0.0301weak demand, narrow supply,none reverse, high noise0.0318weak demand, narrow supply,none reverse, low noise0.0356weak demand, narrow supply,strong reverse, high noise0.0214weak demand, narrow supply,strong reverse, low noise0.0225weak demand, wide supply,mild reverse, high noise0.0268weak demand, wide supply,mild reverse, low noise0.0294weak demand, wide supply,none reverse, high noise0.0314weak demand, wide supply,none reverse, low noise0.0348weak demand, wide supply,strong reverse, high noise0.0204weak demand, wide supply,strong reverse, low noise0.0226

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

self report correction: largest bias under weak_demand/narrow_supply/mild_reverse/high_noise

Absolute bias by condition

0.00000.00050.00100.00150.00200.0025absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0010strong demand, narrowsupply, mild reverse, low noise0.0010strong demand, narrowsupply, none reverse, high noise0.0010strong demand, narrowsupply, none reverse, low noise0.0010strong demand, narrowsupply, strong reverse, high noise0.0010strong demand, narrowsupply, strong reverse, low noise0.0010strong demand, wide supply,mild reverse, high noise0.0010strong demand, wide supply,mild reverse, low noise0.0010strong demand, wide supply,none reverse, high noise0.0010strong demand, wide supply,none reverse, low noise0.0010strong demand, wide supply,strong reverse, high noise0.0010strong demand, wide supply,strong reverse, low noise0.0010weak demand, narrow supply,mild reverse, high noise0.0021weak demand, narrow supply,mild reverse, low noise0.0021weak demand, narrow supply,none reverse, high noise0.0021weak demand, narrow supply,none reverse, low noise0.0021weak demand, narrow supply,strong reverse, high noise0.0021weak demand, narrow supply,strong reverse, low noise0.0021weak demand, wide supply,mild reverse, high noise0.0021weak demand, wide supply,mild reverse, low noise0.0021weak demand, wide supply,none reverse, high noise0.0021weak demand, wide supply,none reverse, low noise0.0021weak demand, wide supply,strong reverse, high noise0.0021weak demand, wide supply,strong reverse, low noise0.0021

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

severe share: largest bias under strong_demand/narrow_supply/none_reverse/low_noise

Absolute bias by condition; interval coverage averages 100%

0.00000.00000.00000.0000absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0000strong demand, narrowsupply, mild reverse, low noise0.0000strong demand, narrowsupply, none reverse, high noise0.0000strong demand, narrowsupply, none reverse, low noise0.0000strong demand, narrowsupply, strong reverse, high noise0.0000strong demand, narrowsupply, strong reverse, low noise0.0000strong demand, wide supply,mild reverse, high noise0.0000strong demand, wide supply,mild reverse, low noise0.0000strong demand, wide supply,none reverse, high noise0.0000strong demand, wide supply,none reverse, low noise0.0000strong demand, wide supply,strong reverse, high noise0.0000strong demand, wide supply,strong reverse, low noise0.0000weak demand, narrow supply,mild reverse, high noise0.0000weak demand, narrow supply,mild reverse, low noise0.0000weak demand, narrow supply,none reverse, high noise0.0000weak demand, narrow supply,none reverse, low noise0.0000weak demand, narrow supply,strong reverse, high noise0.0000weak demand, narrow supply,strong reverse, low noise0.0000weak demand, wide supply,mild reverse, high noise0.0000weak demand, wide supply,mild reverse, low noise0.0000weak demand, wide supply,none reverse, high noise0.0000weak demand, wide supply,none reverse, low noise0.0000weak demand, wide supply,strong reverse, high noise0.0000weak demand, wide supply,strong reverse, low noise0.0000

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

supply controlled: largest bias under strong_demand/narrow_supply/strong_reverse/high_noise

Absolute bias by condition; interval coverage averages 85%

0.00000.00200.00400.0060absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0051strong demand, narrowsupply, mild reverse, low noise0.0012strong demand, narrowsupply, none reverse, high noise0.0041strong demand, narrowsupply, none reverse, low noise0.0009strong demand, narrowsupply, strong reverse, high noise0.0062strong demand, narrowsupply, strong reverse, low noise0.0010strong demand, wide supply,mild reverse, high noise0.0051strong demand, wide supply,mild reverse, low noise0.0012strong demand, wide supply,none reverse, high noise0.0042strong demand, wide supply,none reverse, low noise0.0010strong demand, wide supply,strong reverse, high noise0.0061strong demand, wide supply,strong reverse, low noise0.0011weak demand, narrow supply,mild reverse, high noise0.0036weak demand, narrow supply,mild reverse, low noise0.0007weak demand, narrow supply,none reverse, high noise0.0019weak demand, narrow supply,none reverse, low noise0.0003weak demand, narrow supply,strong reverse, high noise0.0056weak demand, narrow supply,strong reverse, low noise0.0010weak demand, wide supply,mild reverse, high noise0.0037weak demand, wide supply,mild reverse, low noise0.0008weak demand, wide supply,none reverse, high noise0.0021weak demand, wide supply,none reverse, low noise0.0005weak demand, wide supply,strong reverse, high noise0.0051weak demand, wide supply,strong reverse, low noise0.0010

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

supply uncontrolled: largest bias under strong_demand/narrow_supply/strong_reverse/high_noise

Absolute bias by condition; interval coverage averages 70%

0.00000.00500.01000.01500.0200absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0095strong demand, narrowsupply, mild reverse, low noise0.0046strong demand, narrowsupply, none reverse, high noise0.0073strong demand, narrowsupply, none reverse, low noise0.0042strong demand, narrowsupply, strong reverse, high noise0.0146strong demand, narrowsupply, strong reverse, low noise0.0069strong demand, wide supply,mild reverse, high noise0.0094strong demand, wide supply,mild reverse, low noise0.0045strong demand, wide supply,none reverse, high noise0.0072strong demand, wide supply,none reverse, low noise0.0042strong demand, wide supply,strong reverse, high noise0.0142strong demand, wide supply,strong reverse, low noise0.0072weak demand, narrow supply,mild reverse, high noise0.0056weak demand, narrow supply,mild reverse, low noise0.0018weak demand, narrow supply,none reverse, high noise0.0030weak demand, narrow supply,none reverse, low noise0.0014weak demand, narrow supply,strong reverse, high noise0.0090weak demand, narrow supply,strong reverse, low noise0.0024weak demand, wide supply,mild reverse, high noise0.0056weak demand, wide supply,mild reverse, low noise0.0019weak demand, wide supply,none reverse, high noise0.0032weak demand, wide supply,none reverse, low noise0.0015weak demand, wide supply,strong reverse, high noise0.0086weak demand, wide supply,strong reverse, low noise0.0026

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

under 35 shift: largest bias under strong_demand/wide_supply/mild_reverse/high_noise

Absolute bias by condition; interval coverage averages 85%

0.00000.00020.00040.00060.00080.00100.0012absolute biasstrong demand, narrowsupply, mild reverse, high noise0.0005strong demand, narrowsupply, mild reverse, low noise0.0007strong demand, narrowsupply, none reverse, high noise0.0010strong demand, narrowsupply, none reverse, low noise0.0010strong demand, narrowsupply, strong reverse, high noise0.0004strong demand, narrowsupply, strong reverse, low noise0.0005strong demand, wide supply,mild reverse, high noise0.0012strong demand, wide supply,mild reverse, low noise0.0006strong demand, wide supply,none reverse, high noise0.0010strong demand, wide supply,none reverse, low noise0.0010strong demand, wide supply,strong reverse, high noise0.0002strong demand, wide supply,strong reverse, low noise0.0003weak demand, narrow supply,mild reverse, high noise0.0002weak demand, narrow supply,mild reverse, low noise0.0006weak demand, narrow supply,none reverse, high noise0.0003weak demand, narrow supply,none reverse, low noise0.0003weak demand, narrow supply,strong reverse, high noise0.0004weak demand, narrow supply,strong reverse, low noise0.0002weak demand, wide supply,mild reverse, high noise0.0002weak demand, wide supply,mild reverse, low noise0.0003weak demand, wide supply,none reverse, high noise0.0003weak demand, wide supply,none reverse, low noise0.0003weak demand, wide supply,strong reverse, high noise0.0001weak demand, wide supply,strong reverse, low noise0.0005

Source: simulated metros with known truth; population: the recovery study, every condition and seed; seeds: 20; as of 2026-10-22.

The data dictionary

Published fileBytes
briefing.json50,056
charts/burden.json6,871
charts/buyers.json4,338
charts/decision.json9,688
charts/definition.json6,503
charts/lock_in.json53,143
charts/migration.json68,630
charts/ranking.json12,912
charts/rate_shock.json7,705
charts/supply.json61,078
live_check.json1,150
manifest.json503,507
marts/calc_metros.parquet157,642
marts/calc_quarters.parquet137,286
marts/ch1_national_series.parquet5,319
marts/ch1_self_report.parquet12,128
marts/ch2_decomposition.parquet4,345
marts/ch2_lock_in_metros.parquet19,306
marts/ch3_burden_by_income.parquet6,340
marts/ch3_metro_shares.parquet317,476
marts/ch3_national_bands.parquet3,104
marts/ch4_cells.parquet64,388
marts/ch5_ranking.parquet38,521
marts/ch6_by_year.parquet5,002
marts/ch6_largest_metros.parquet5,642
marts/ch7_cross_section.parquet29,130
marts/ch7_synthetic_controls.parquet7,580
marts/ch8_curve.parquet2,940
marts/ch8_metros.parquet94,319
marts/mart_income_brackets.parquet732,677
marts/mart_metro_quarter.parquet1,521,043
marts/mart_metro_year.parquet3,561,523
marts/mart_national_year.parquet4,474
marts/mart_quarantine.parquet3,299
marts/mart_rent_burden_by_income.parquet242,889
recorded_session.json235,509
story.json33,336

Every column of every exported table is named in the CSV bundle's dictionary, and every definition is in docs/definitions.md.

Exports and the BI companions

  • The workbook with live formulas

    Pick a metro on the Model sheet and type an income, a rate and a down payment; PMT and lookup formulas produce the payment, the payment share, the affordable price and a 360 row amortisation table. LibreOffice recalculates it in the tests against the calculator for three metros.

  • The Tableau extracts and view specification

    The metro by year and metro by quarter marts, the ranking, the burden bands and the supply cells as CSV, with the five views the companion workbook shows.

  • The Power BI model specification

    Tables, relationships and DAX measures (payment share, price to income, affordable share, cost burdened share, permits per hundred households, lock in share, turnover) as text.

  • The CSV bundle and its dictionary

    Every chapter table as CSV, with every column named.

What the housing economist would push back on

A warehouse can agree with itself and still be wrong about the world. The reconcile proves that two expressions over two grains give the same number; it cannot prove that owners reported their home values right or that a lender reported the income it used. That is why the quarantine rules flag a margin that exceeds its estimate, a jam value, a missing quarter and a loan with no rate rather than fixing them, and why every flagged row is counted here by source and year.