| 20 |
20 |
} |
| 21 |
21 |
|
| 22 |
22 |
export const researchDetails: ResearchDetail[] = [ |
|
23 |
+ { |
|
24 |
+ "slug": "wp11", |
|
25 |
+ "repo": "https://github.com/spboucher-ai/wp11_uqo", |
|
26 |
+ "hero": { |
|
27 |
+ "headline": "Random cross-validation is the wrong experiment for valuation models", |
|
28 |
+ "subheadline": "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." |
|
29 |
+ }, |
|
30 |
+ "abstract": [ |
|
31 |
+ "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.", |
|
32 |
+ "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.", |
|
33 |
+ "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." |
|
34 |
+ ], |
|
35 |
+ "findings": [ |
|
36 |
+ { "value": "514,212", "label": "roll-matched Quebec sales, 2021–2026" }, |
|
37 |
+ { "value": "20", "label": "hedonic models raced on one scoreboard" }, |
|
38 |
+ { "value": "~10 pp", "label": "MdAPE improvement from spatial fixed effects" }, |
|
39 |
+ { "value": "±2 pp", "label": "MdAPE spread across functional forms" }, |
|
40 |
+ { "value": "14.4%", "label": "gradient-boosting MdAPE under the random split" }, |
|
41 |
+ { "value": "19.1%", "label": "spline MdAPE under the forward split — beating ML's 21.2%" } |
|
42 |
+ ], |
|
43 |
+ "contributions": [ |
|
44 |
+ { |
|
45 |
+ "title": "A controlled horse race, not anecdotes", |
|
46 |
+ "description": "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." |
|
47 |
+ }, |
|
48 |
+ { |
|
49 |
+ "title": "Spatial controls are first-order", |
|
50 |
+ "description": "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." |
|
51 |
+ }, |
|
52 |
+ { |
|
53 |
+ "title": "The validation split is the result", |
|
54 |
+ "description": "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%." |
|
55 |
+ }, |
|
56 |
+ { |
|
57 |
+ "title": "Functional form matters less than assumed", |
|
58 |
+ "description": "Across linear, semi-log, log-log, Box–Cox, quadratic, and spline specifications, price-level accuracy moves by only about ±2 percentage points of MdAPE." |
|
59 |
+ }, |
|
60 |
+ { |
|
61 |
+ "title": "Economics is stable across specifications", |
|
62 |
+ "description": "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." |
|
63 |
+ }, |
|
64 |
+ { |
|
65 |
+ "title": "A fair price-level scoreboard", |
|
66 |
+ "description": "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." |
|
67 |
+ } |
|
68 |
+ ], |
|
69 |
+ "data": [ |
|
70 |
+ { |
|
71 |
+ "title": "Roll-matched Quebec sales", |
|
72 |
+ "description": "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." |
|
73 |
+ } |
|
74 |
+ ], |
|
75 |
+ "methodology": [ |
|
76 |
+ { |
|
77 |
+ "title": "Functional-form ladder", |
|
78 |
+ "description": "Linear, semi-log, log-log, Box–Cox with λ estimated by profile likelihood, quadratic terms, and cubic splines — curvature tested systematically rather than assumed." |
|
79 |
+ }, |
|
80 |
+ { |
|
81 |
+ "title": "Fixed-effects ladders", |
|
82 |
+ "description": "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." |
|
83 |
+ }, |
|
84 |
+ { |
|
85 |
+ "title": "Estimation methods", |
|
86 |
+ "description": "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." |
|
87 |
+ }, |
|
88 |
+ { |
|
89 |
+ "title": "Two holdout designs", |
|
90 |
+ "description": "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." |
|
91 |
+ }, |
|
92 |
+ { |
|
93 |
+ "title": "Municipality-clustered evaluation", |
|
94 |
+ "description": "Metrics computed on price levels (MdAPE, MAPE, RMSE_ln, R²_ln) with municipality-clustered design throughout." |
|
95 |
+ } |
|
96 |
+ ], |
|
97 |
+ "reproducibility": [ |
|
98 |
+ "End-to-end Python pipeline: five numbered scripts from raw sample construction (745,119 → 514,212 sales) to LaTeX tables", |
|
99 |
+ "The 20-model harness lives in src/wp11/models.py with a shared config and plot style", |
|
100 |
+ "9 journal-calibre figures and 7 LaTeX tables regenerated by scripts 04 and 05", |
|
101 |
+ "Full LaTeX source of the 23-page paper in paper/ with sections and bibliography" |
|
102 |
+ ], |
|
103 |
+ "keywords": [ |
|
104 |
+ "hedonic pricing", |
|
105 |
+ "model validation", |
|
106 |
+ "machine learning", |
|
107 |
+ "gradient boosting", |
|
108 |
+ "spatial fixed effects", |
|
109 |
+ "Box–Cox", |
|
110 |
+ "housing markets", |
|
111 |
+ "Quebec" |
|
112 |
+ ] |
|
113 |
+ }, |
| 23 |
114 |
{ |
| 24 |
115 |
"slug": "wp2", |
| 25 |
116 |
"repo": "https://github.com/spboucher-ai/wp2_uqo", |