UQO Working Papers · WP11 · v1.1
Half a Million Prices, Twenty Models
A Systematic Assessment of Hedonic Specifications and Estimation Methods for the Quebec Housing Market, 2021–2026
- Year
- 2026
- First release
- October 2026
- Latest revision
- October 2026
- Publication status
- Working paper
Controls and the holdout matter more than functional form
Twenty hedonic models on 514,212 Quebec sales: dropping spatial fixed effects costs ten error points, splines beat linear by under two, and boosting's 3.2-point lead under random validation shrinks to an insignificant 0.5 point when the test set lies in the future.
Abstract
Fifty years after Rosen (1974), applied hedonic practice still rests on specification choices (functional form, temporal controls, spatial controls, estimation method) that are made by convention and rarely stress-tested jointly. Using 514,212 Quebec residential sales (2021–2026) whose structural descriptors come from the provincial assessment roll, this paper runs a controlled horse race of twenty hedonic models organised along those four axes, scoring every model on identical holdouts and on the same price-level scoreboard with a single retransformation rule, with a municipality-clustered bootstrap interval and a Diebold–Mariano-type test on every comparison.
Four lessons emerge. Functional form is second-order: from linear to splines the median absolute error spans 17.6–19.2%, and the data-driven Box–Cox exponent gains half a point. Controls are first-order: dropping spatial fixed effects costs ten error points; a ~1 km grid used alone overfits, but nested within municipalities it becomes the most accurate linear specification, so the bias–variance trade-off in absorbing location is resolved by hierarchy, not coarseness. Under random validation the estimation method dominates: gradient boosting reaches 14.4%, an 18% improvement over the best linear model (95% interval 1.9–4.7 points) that survives holdouts grouped by parcel and by building and comes almost entirely from a flexible surface over space.
Under a forward-in-time holdout (train before 2025, test 2025–2026) every model degrades and the gap shrinks to half a point and to insignificance. Decomposing the error shows that relative pricing skill transfers forward intact (re-levelled, boosting leads by 2.9 points) while every frozen model under-prices the typical future sale by 10–20%, the ensembles slightly more. Random cross-validation hides this staleness cost; it does not, as a previous version of this paper claimed on the basis of an asymmetric retransformation, reverse the ranking. Constant-quality indices agree across functional forms to within 2.5 points but a boosted imputation index rises nine points less, and the boosted model's implicit age and area profiles share the shape of the quadratic OLS gradients with a milder depreciation path.
Key findings
514,212
roll-matched Quebec residential sales, 2021–2026
20
hedonic models scored on one price-level scoreboard
~10 pp
MdAPE cost of dropping spatial fixed effects
17.6–19.2%
MdAPE range across six functional forms
14.4% vs 17.6%
boosting versus best linear MdAPE, random holdout
0.5 pp
insignificant boosting lead under the forward-in-time holdout
Scientific contributions
- A controlled experiment with inference on every comparison
- Six functional forms, a time-FE ladder, a spatial-FE ladder and six estimation methods face the same sales, attributes, retransformation rule and holdouts, with municipality-clustered bootstrap intervals (B = 500) and Diebold–Mariano-type tests.
- Spatial controls are first-order, hierarchy resolves the trade-off
- Removing spatial fixed effects raises MdAPE from 19.2% to 28.8%; a ~1.1 km grid alone overfits (21.0%), but nested within municipalities it is the best linear specification at 17.3%.
- Functional form is second-order
- Linear to splines spans 17.6–19.2% under random validation; splines beat semi-log by 1.4 points and the profile-likelihood Box–Cox exponent (λ = 0.25–0.35) gains half a point.
- Boosting's gain is real and spatial
- Gradient boosting reaches 14.4% against 17.6% for splines (−3.2 pp, interval −4.7 to −1.9, t = −3.6); the gap is unchanged in parcel- and building-grouped holdouts, and boosting without coordinates falls to 23.2%.
- Forward validation reveals a staleness cost, not a reversal
- Trained before 2025 and tested on 2025–2026, boosting scores 21.2% versus 21.7% for splines; its staleness cost is 7.5 points against 4.7 for splines, but re-levelled it leads by 2.9 points, and its lead erodes from 1.5 points in 2025Q1 to zero by 2026Q3.
- Economic objects are stable across forms
- Constant-quality monthly indices from four linear forms agree within 2.5 points, while the boosted imputation index ends 9 points lower (160.5 versus 168.6–171.0); boosted age profiles are 0.10–0.13 log points flatter after age 20.
Methodology
Methodology (5)
Four design axes, twenty models
Linear, semi-log, log-log, Box–Cox, quadratic and cubic-spline forms; none/year/quarter/month time effects; none/municipality/~5.5 km/~1.1 km spatial effects plus nested grids; OLS, cross-validated ridge, random forest, gradient boosting with and without coordinates, and spatial k-NN comparables.
One price-level scoreboard
Every transformed prediction is inverted with the same median rule (Duan smearing reported as robustness) and scored on MdAPE, MAPE, RMSE_ln and R²_ln.
Two holdouts plus grouped and same-period splits
A random 80/20 split and a forward-in-time split (train before 2025, test 2025–2026 with carry-forward time effects), complemented by parcel- and building-grouped holdouts, a same-period comparison, re-levelling and quarterly tracking.
Clustered bootstrap and predictive-accuracy tests
Municipality-clustered bootstrap intervals for each model's MdAPE and for differences, and Diebold–Mariano/Giacomini–White tests with clustered standard errors on absolute-percentage and squared-log losses.
Extensions
Constant-quality indices, implicit age and area profiles, learning curves, accuracy by market segment, a fine Box–Cox grid and four boosting hyper-parameter configurations.
Research data
- Roll-matched Quebec sales
- 514,212 residential transactions (2021–2026) filtered from 745,119 raw sales and matched to the provincial assessment roll for assessor-grade attributes (floor area, lot, age, storeys, units, class, physical link); mean price $440,207, median $397,375; 20.6% of sales are resales of the same parcel and 30.3% share exact coordinates with another sale.
Reproducibility
- Six numbered Python scripts from the raw parquet to the 20-model horse race, extensions, robustness, 10 figures and 16 LaTeX tables; full run about 25 minutes on Apple silicon
- The harness in src/wp11/models.py and inference in src/wp11/inference.py apply one retransformation rule to every model; no table is typed by hand
- v1.0 results archived under the pre-revision-20261017 tag with the changed MdAPE values listed in docs/CHANGELOG-REVISION.md
- Full LaTeX source of the 40-page paper with an anonymised version; pre-revision PDF and review report in docs/
Research artifacts
Version history
| Version | Date | Description | File |
|---|---|---|---|
| v1.1current | October 2026 | Current manuscript as published on www.spboucher.ai (revised edition after the 2026-10-17 scientific review for papers 1–17). | PDF · 40 p. |