spb/qc-election
Public
Python 66.6%
HTML 24.8%
CSS 4.9%
JavaScript 3.6%
1<!-- QC Élection Forecast — Plateforme de prévision électorale du Québec 2026 -->2<!-- Auteur : Simon-Pierre Boucher -->3<!-- Contact : contact@spboucher.ai -->4<!-- https://www.qc-election.com -->56# METHODOLOGY AUDIT — reconstruction exacte du modèle actuel (§100.3)78Baseline figé : commit `e632529`, modèle 3.0.0, 29 tests verts, forecast et9backtest reproduits localement le 2026-08-30 (graines fixes).1011## Chaîne actuelle (observé → publié)121. **Observation** : sondage Wikipédia (sections nationales) → renormalisation13 → correction house effect (biais final 21 j, shrink 0,5, borné ±3 pp) →14 alr → covariance multinomiale (n_eff = n/deff par mode, plafond 2500)15 + erreur excédentaire diag (±1,5 pp; ×1,25 maison inconnue). Partielles :16 pseudo-observations nationales (swing local ×0,6, n≈350, ±3 pp).172. **État latent** : marche aléatoire alr 5D, q estimé par MV (grille 12 pts,18 borné), Kalman exact + RTS.193. **Forecast** : moyenne martingale; variance += q·jours·1,6·m_volatilité20 (m ∈ [1;1,5], attention wiki+social) + 0,12² systémique.214. **Fondamentaux** : ridge (vote sortant ~ vote préc. + satisfaction) sur 822 élections, pénalité 1,5 pp/mandat; blend précision w(t)=min(0,8,(j/540)^1,3).235. **Médias** : nudge borné ±0,35 pp (tanh sentiment 14 j, seuil volume).246. **Circonscriptions** : alr(base 2022 locale) + swing national alr + ε_région25 (0,14) + ε_circ (0,20) − retrait sortant (0,06); softmax.267. **Simulation** : 25 000 tirages corrélés (état→national→régional→local);27 sièges, P(1er), P(maj), pivots (8k).288. **Publication** : P(1er) = 0,88·modèle + 0,12·Polymarket.2930## Écarts vs la cible « ultra avancée » (§ du cahier des charges)31| § | Cible | État actuel | Écart |32|---|---|---|---|33| 2 | état latent joint (démo × région) | national seulement + couches d'erreur | majeur (Phases C/D) |34| 3-4 | RW challengé (LLT, mean-rev, Student-t) | RW gaussien | à tester par replay |35| 6-10 | modèle de mesure complet (mode/population/LV/cov inter-partis) | house+mode deff+excès | partiel → `national/pollster_error.py` |36| 11 | terrain = moyenne sur la période | assigné à la fin de terrain | mineur, plan replay |37| 14-16 | MRP dynamique | absent (plan POPULATION_FEATURES) | majeur (Phase D) |38| 17-19 | participation probabiliste | scénario manuel (simulateur) | majeur (Phase E) |39| 20-24 | hiérarchie/facteurs spatiaux appris | régions administratives + ε indépendants | majeur (Phase C) |40| 27-29 | effets candidats estimés | pénalité retrait fixe | Phase E |41| 30 | modèle de partielle décomposé | shrink fixe 0,6 | amélioration ciblée |42| 31-33 | fondamentaux bayésiens LOEO | ridge LOO, fuite en replay (corrigée) | ✔ corrigé |43| 34-36 | marchés = observation d'événement, poids appris | blend fixe 12 % | dette assumée (pas d'historique) |44| 37-45 | social = attention/volatilité | ✔ conforme (bornée, jamais directionnelle) | ✔ |45| 46-48 | distribution prédictive du prochain sondage | absent | backlog court terme |46| 49-51 | stacking / champion-challenger | ablation implémentée; stacking à venir | Phase F |47| 52-58 | replay multi-élections + scoring propre | 2022 seulement → **implémenté : 2007-2022 (6 élections), CRPS/log score** | ✔ ce commit |48| 59-61 | hyperparamètres estimés | voir STATISTICAL_DEBT.md | en cours (σ_industrie empirique) |49| 62-66 | simulation copules/queues | gaussien corrélé | à tester |50| 89-93 | modèle du soir d'élection | absent | Phase G (avant le 5 oct.) |51