SPB Git

spb/qwhpi Public

QHPI — Quebec Housing Price Index: quality-adjusted, hierarchically pooled housing price indexes.

Python 63.9% TypeScript 25.4% CSS 5.5% TeX 3.5% SQL 0.8% Makefile 0.5% Dockerfile 0.5%
2.4 KB

# QHPI v2.1 validation report (monthly, robust)

# 1. Repeat sales (BMN, unit-signature pairs) vs published index

  • quebec/unifamilial: Δcorr=0.749, écart final hedonic−RS = -4.6%
  • quebec/condo: Δcorr=0.368, écart final hedonic−RS = -3.2%
  • quebec/plex: Δcorr=0.436, écart final hedonic−RS = -3.4%
  • montreal/condo: Δcorr=0.238, écart final hedonic−RS = -1.2%
  • montreal/unifamilial: Δcorr=0.262, écart final hedonic−RS = -8.1%
  • quebec-city/condo: Δcorr=0.084, écart final hedonic−RS = +1.1%
  • quebec-city/unifamilial: Δcorr=0.333, écart final hedonic−RS = -3.4%

# 2. Downsampling (Montréal condo, ~620 tx/month)

  • 300 tx/mois: RMSE direct=1.01% | hiérarchique=1.3%
  • 150 tx/mois: RMSE direct=1.2% | hiérarchique=1.37%
  • 75 tx/mois: RMSE direct=1.49% | hiérarchique=1.31%
  • 40 tx/mois: RMSE direct=1.85% | hiérarchique=1.45%
  • 20 tx/mois: RMSE direct=2.09% | hiérarchique=1.69%
  • 10 tx/mois: RMSE direct=2.59% | hiérarchique=2.21%

Lecture: en RMSE pur (référence = direct plein échantillon, cellule à faible divergence) le croisement se situe vers 75–150 tx/mois. Mais le RMSE du hiérarchique contient un biais de compression qui explose sur les cellules fortement divergentes (Québec-ville condo: ~8–10 pts, cf. arbitrage RS/stratifié) alors que l'erreur du direct est du bruit pur (~1.9% à 40 tx/mois), réduit par le lisseur d'état. LIQUID_MIN=40 échange donc un bruit borné contre un biais non borné.

# 3. Choc de composition (province unifamilial, mensuel)

  • Médiane brute: +12.27% dans les mois choqués (doit bouger)
  • Hédonique: -1.02% (doit rester ~0)

# 4. Diagnostics de robustesse

  • Dérive β(log surface) sur 55 fenêtres: 0.556 → 0.586 (amplitude 5.2% de la moyenne) — justifie le RTD contre le pool fixe.
  • Saisonnalité quebec/all: F=0.444 p=0.77608 → non significative (NSA)
  • Saisonnalité quebec/unifamilial: F=0.417 p=0.79551 → non significative (NSA)
  • Saisonnalité montreal/condo: F=0.749 p=0.56243 → non significative (NSA)