| D0.1 |
2026-10-21 |
Project lives in Recherche-UQO/immobilier/sharp-hpi-quebec (the request said "uqo-research"; no such folder exists, Recherche-UQO is the working-paper series root). WP number 22 per HARMONISATION.md. |
discovery |
| D0.2 |
2026-10-21 |
Data source = production Vrai Prix SQLite on M3U96a, read through sqlite3 .backup (read-only), never the live file. One immutable snapshot, checksum pinned in config.py. |
§1 of protocol |
| D0.3 |
2026-10-21 |
"Existing QHPI method" (benchmark K) = the QWHPI v2.1 engine in ~/Desktop/PhD/recherche/QWHPI (rolling 13-month Huber time-dummy, mean splice, direct local TD for liquid cells, local-level Kalman shrinkage for thin cells). Re-implemented here from its source, not re-run from its repo (different sample). |
discovery |
| D1.1 |
2026-10-21 |
Geography from SDA V2026-07 polygons (spatial join on lat/lng, 100 % within); the roll's code_mun agrees 99.96 %. Series are on 2026 boundaries; municipalities constituted/merged 2022–2026 (Amos, Plessisville, La Pocatière, …) are listed in results/geo/mamh_constituted_since_2021.csv. |
results/geo |
| D1.2 |
2026-10-21 |
Fine location = nested metric grid (500 m ⊂ 1 km ⊂ 2 km ⊂ 5 km ⊂ municipality, NAD83/Quebec Lambert); each estimation picks the finest level with ≥ min_n sales of the class (time-invariant partition, no singletons). The roll's unite_voisinage is a unit-level code (379k distinct values for 449k rows, 73 % singletons) and is unusable as a neighbourhood. H3 not installed; a metric grid is equivalent for a fixed-effect control. |
results/geo/fine_location_summary.csv |
| D1.3 |
2026-10-21 |
Property classification from the roll (CUBF, units, physical link) with the provider label as fallback; conflicts kept and flagged (type_conflict, 4.3 %), headline keeps the roll class. |
results/cleaning/classification_crosstab.csv |
| D1.4 |
2026-10-21 |
Headline population = house / condo / plex sales with roll characteristics; cottages, mobile homes, 6+ unit buildings, land, non-residential excluded (ledger). |
results/cleaning/exclusion_ledger.csv |
| D1.5 |
2026-10-21 |
Sales dated before the roll's construction year are lots or unfinished structures → excluded (built_after_sale); sales in the construction year flagged new_construction and kept (sensitivity). The current-roll vintage means 2025–2026 new builds may still be coded as land and are then excluded — a documented coverage limitation. |
results/profile/new_construction_share.csv |
| D1.6 |
2026-10-21 |
Price screen: provider floor ($50k, not ours) + $10M cap + assessment-ratio screen relative to the year×class×region median using the sale-time assessment ( |
log deviation |
| D1.7 |
2026-10-21 |
Multi-parcel deeds: same date+price+city+street or same date+price+~1 km cell → excluded (0.35 %). Same parcel sold twice the same day at different prices → excluded (1.9 %; mostly undivided co-ownership shares and condo-project parcels). Parcels with > 10 sales in 2021–2026 → excluded as shared/developer parcels. |
results/cleaning/flag_counts.csv |
| D1.8 |
2026-10-21 |
building_type (provider) banned from all models: coverage 12 % → 87 % over the sample (backfill). unite_voisinage coverage drifts 51 % → 62 %, acceptable because its fallback is another location fixed effect, not a "missing" regressor. |
results/profile/completeness_by_month.csv |
| D1.9 |
2026-10-21 |
Registration lag: 4 earlier vintages show 99.99 % of eventual transactions dated ≤ a vintage's last date were already in it; the only incompleteness is the final ~2 weeks. Real-time simulation therefore models a publication delay of ~10–13 days with no later backfill, and the last calendar month is partial. |
results/vintages |
| D1.10 |
2026-10-21 |
January–February 2021 volumes are roughly a third of 2022 levels (feed start-up); the 2021 annual base is kept (protocol) but the thin start is flagged in coverage tables and in the paper. |
results/profile/coverage_month_type.csv |