| Hedonic coefficient estimation |
Task A models are fitted on sales ≤ origin; Task B predictors come from WP22 vintages whose stage-1 hedonic was re-estimated at each publication date |
data.task_a_sets, WP22 40_vintages.py |
| Geographic clustering |
WP22 location partition rebuilt per vintage; Task A uses raw coordinates and kNN over past sales only |
data.knn_features_at filters month ≤ origin |
| Normalisation |
standardisation constants from training rows (fit) |
models_* |
| Feature selection |
fixed lists FEATURES_HEDONIC/MARKET/B |
data.py, data_b.py |
| Imputation |
WP22 conditional medians (no price); indicators time-stable |
WP22 hedonic.build_features |
| Target encoding |
none; one-hot with training categories (cats passed to test design) |
data.design |
| Spatial graph |
DSGFN adjacency from centroids and the real-time history at the origin |
models_b_torch.DSGFN._adjacency |
| Hyper-parameter tuning |
none on test origins |
tab_hyper |
| Index revisions |
predictors = vintage for the origin; target = final; target_vs_rt stored to decompose |
data_b.build_panel |
| Regime inference (RAREF) |
HMM fitted on provincial growth rates taken from past origins' own vintages (≤ origin) |
models_b.RAREF._growth_series |
| Partial last month |
October 2026 excluded (LAST_MONTH = 2026-09) |
config.py |
| Random splits |
never used |
10_task_a.py, 20_task_b.py |
| Test: features ≤ origin |
tests/test_wp23.py::test_task_a_features_use_only_past |
— |