Simon-Pierre Boucher
All research

UQO Working Paper No. 9· 26 pages

A Grand Hedonic Model of the Canadian Housing Market: Decomposing the Value of Structure and Location

Location Is Worth More Than Every Wall Combined

What do structure and neighbourhood each contribute to Canadian home prices? Absorbing 1,153 neighbourhood fixed effects lifts explained variance from 46% to 77%.

Simon-Pierre Boucher — contact@spboucher.ai

140,931

MLS listings in the estimation sample, across 9 provinces

46% → 77%

Explained log-price variance after absorbing 1,153 neighbourhood fixed effects

0.547

Living-area elasticity in the grand model (cluster SE 0.009)

15.8%

Median absolute out-of-sample valuation error (OOS R² = 0.764)

+11%

Price premium per full bathroom (0.109 log points)

×9

Span of neighbourhood premia between the most and least expensive FSAs

Abstract

A dwelling is the archetypal heterogeneous good, and its most important attribute — location — cannot be observed as a scalar. This paper estimates a semi-logarithmic hedonic price equation at national scale for Canada on 140,931 MLS listings (82,334 houses, 57,857 condos, nine provinces), absorbing 1,153 Forward Sortation Area fixed effects so that structural implicit prices are identified purely from within-neighbourhood variation.

The specification ladder is decisive: structural attributes alone explain 46.4% of log-price variance; adding province effects reaches 56.7%; the grand model with neighbourhood fixed effects reaches 76.7%. Location alone is worth roughly 30 percentage points of R² — more than every structural attribute combined. The living-area elasticity is 0.547, each full bathroom adds about 11%, and bedrooms conditional on area are worth approximately zero.

Out of sample, the model values held-out homes with a median absolute error of 15.8% (OOS R² = 0.764), competitive with commercial AVMs while remaining fully transparent. Neighbourhood premia span a factor of nine: the most expensive FSAs net of structure are all in Vancouver (+150–200% versus the national median); the cheapest sit in rural Saskatchewan, Manitoba, and Newfoundland (−60 to −67%).

Key Results

  1. National-scale variance decomposition

    Quantifies structure versus location for the entire Canadian market: neighbourhood identity contributes about 30 percentage points of R², exceeding all structural attributes combined.

  2. High-dimensional fixed-effects hedonic model

    Absorbs 1,153 FSA intercepts via absorbing least squares, identifying implicit prices from within-neighbourhood variation with standard errors clustered by FSA.

  3. Transparent AVM-grade valuation accuracy

    On a held-out 20% sample the model achieves a 15.8% median absolute error with 59% of homes priced within ±20% — competitive with commercial automated valuation models.

  4. The textbook bedroom result, confirmed

    Conditional on floor area, bedroom count is worth approximately zero, while living-area elasticity of 0.547 and an 11% full-bathroom premium dominate structural pricing.

  5. Spatial diagnostics validate the decomposition

    Moran's I of residuals falls from 0.46 to 0.08 (−82%) once neighbourhood effects are absorbed, showing FSA intercepts capture nearly all spatial price structure.

  6. Urban gradient and neighbourhood ranking

    Location premia decline 8.5% per doubling of distance to the nine major metros; a ranked national map places Vancouver FSAs (V6S, V8E, V6T) at +150–200%.

Data

Canadian MLS listings snapshot

De-duplicated DuckDB of 172,019 for-sale listings × 81 columns with list price, geocoded coordinates, postal code, and semi-structured building and lot attributes (747 MB, not redistributed).

Estimation sample

140,931 filtered and trimmed listings (committed as a 6 MB parquet): median list price ≈ $639,888, median living area ≈ 135 m², 3 bedrooms, 2 full bathrooms.

Methodology

Specification ladder M1–M5

Five nested hedonic models, from structural attributes only to the grand model with FSA fixed effects; the M3-to-M5 R² gap measures the value of resolving location at neighbourhood scale.

Absorbing least squares

linearmodels AbsorbingLS sweeps out 1,153 FSA intercepts without materializing dummies — numerically identical to full-dummy OLS — with FSA-clustered standard errors throughout.

Duan smearing retransformation

Level predictions from the log model use Duan's (1983) smearing estimator, avoiding any log-normality assumption in out-of-sample valuation.

Out-of-sample and transferability validation

Random 80/20 split restricted to FSAs seen in training, plus leave-one-province-out cross-validation with province-specific intercepts.

Quantile and nonlinearity extensions

Quantile hedonic regressions across τ = 0.1–0.9, a quadratic test of diminishing returns to floor space, and an urban price gradient in metro distance.

Moran's I spatial diagnostics

Row-standardized k-NN weights (k = 10) on a 15,000-listing sample with 199 permutations test residual spatial autocorrelation before and after absorbing FSA effects.

Reproducibility

  • End-to-end five-script pipeline (build sample, core estimation, extended estimation, figures, tables) running in under 10 minutes on Apple Silicon.
  • Two results tiers keep the published record intact: results/reference/ holds the original outputs, results/reproduced/ the regenerated ones, switchable via a --results flag.
  • All six LaTeX tables consumed by the 26-page paper are verified numerically identical to the originally published versions.
  • The lost upstream cleaning code was reconstructed from the paper's data section, reproducing the published sample to within +0.86% and the full R² ladder to the second decimal; residual gaps are flagged in AUDIT.md, not hidden.
  • The committed 6 MB estimation parquet lets anyone run estimation, figures, and tables (steps 02–05) without the 747 MB raw DuckDB.