Simon-Pierre Boucher
All research

UQO Working Paper No. 11· 23 pages

Half a Million Prices, Twenty Models: A Systematic Assessment of Hedonic Specifications and Estimation Methods for the Quebec Housing Market, 2021–2026

Random cross-validation is the wrong experiment for valuation models

Twenty hedonic models raced on 514,212 Quebec sales under identical conditions — machine learning wins the random split and loses the forward-in-time one.

Simon-Pierre Boucher — contact@spboucher.ai

514,212

roll-matched Quebec sales, 2021–2026

20

hedonic models raced on one scoreboard

~10 pp

MdAPE improvement from spatial fixed effects

±2 pp

MdAPE spread across functional forms

14.4%

gradient-boosting MdAPE under the random split

19.1%

spline MdAPE under the forward split — beating ML's 21.2%

Abstract

Hedonic price models underpin mass appraisal, price indices, and housing research, yet specification choices — functional form, time effects, spatial controls, estimation method — are usually made ad hoc. This paper runs a controlled horse race of 20 models on 514,212 roll-matched Quebec residential sales (2021–2026) with assessor-grade structural attributes, scoring every model on the same price-level scoreboard via Duan smearing and Box–Cox inversion.

The design crosses four axes: six functional forms (linear to Box–Cox and cubic splines), a time-fixed-effects ladder (none to month), a spatial-fixed-effects ladder (none to a ~1.1 km grid), and six estimation methods (OLS, ridge, random forest, gradient boosting, spatial k-NN comparables). All models face two holdouts: a random 80/20 split and a forward-in-time split trained before 2025 and tested on 2025–2026.

Spatial controls are first-order, worth roughly 10 percentage points of median absolute percentage error, but overfit at ~1 km granularity; functional form is second-order, worth about ±2 points. Gradient boosting wins under random validation (MdAPE ≈ 14.4% vs 16.5% for the best linear model), but under the forward-in-time split every model degrades and the ranking reverses — splines reach 19.1% against 21.2% for boosting, at identical log R². Implied price indices and implicit-price profiles agree across forms far more than the accuracy gap suggests.

Key Results

  1. A controlled horse race, not anecdotes

    Six functional forms × time-FE ladder × spatial-FE ladder × six estimation methods, all on the same sales, attributes, and price-level metrics — specification advice grounded in one consistent experiment.

  2. Spatial controls are first-order

    Location fixed effects are worth roughly 10 percentage points of MdAPE — an order of magnitude more than functional form — but a ~1.1 km grid begins to overfit.

  3. The validation split is the result

    Gradient boosting beats every linear model under random 80/20 validation, yet under a forward-in-time split the advantage reverses: splines at 19.1% MdAPE versus boosting at 21.2%.

  4. Functional form matters less than assumed

    Across linear, semi-log, log-log, Box–Cox, quadratic, and spline specifications, price-level accuracy moves by only about ±2 percentage points of MdAPE.

  5. Economics is stable across specifications

    Implied price indices and implicit-price profiles agree across functional forms far more closely than the accuracy differences suggest — the economics is robust even where the forecasts are not.

  6. A fair price-level scoreboard

    Log and transformed models are mapped back to dollar space with Duan smearing and Box–Cox inversion, so every model is judged on MdAPE, MAPE, and RMSE in levels.

Data

Roll-matched Quebec sales

514,212 residential transactions (2021–2026), filtered from 745,119 raw sales and matched to assessment rolls for assessor-grade structural attributes — floor area, lot, age, storeys, units, class, physical link.

Methodology

Functional-form ladder

Linear, semi-log, log-log, Box–Cox with λ estimated by profile likelihood, quadratic terms, and cubic splines — curvature tested systematically rather than assumed.

Fixed-effects ladders

Time effects from none to month dummies; spatial effects from none through municipality to ~5.5 km and ~1.1 km grid cells, isolating where granularity pays and where it overfits.

Estimation methods

OLS, cross-validated ridge, random forest, gradient boosting with and without coordinates, and spatial k-NN comparables — the machine-learning contenders face the same attributes as the linear models.

Two holdout designs

A random 80/20 split and a forward-in-time split (train before 2025, test 2025–2026 with carry-forward time effects) — the contrast between them is itself the headline result.

Municipality-clustered evaluation

Metrics computed on price levels (MdAPE, MAPE, RMSE_ln, R²_ln) with municipality-clustered design throughout.

Reproducibility

  • End-to-end Python pipeline: five numbered scripts from raw sample construction (745,119 → 514,212 sales) to LaTeX tables
  • The 20-model harness lives in src/wp11/models.py with a shared config and plot style
  • 9 journal-calibre figures and 7 LaTeX tables regenerated by scripts 04 and 05
  • Full LaTeX source of the 23-page paper in paper/ with sections and bibliography