SPB Git forge

spb/qc-election

Public
20commits 1branches 0releases
4.9 MBsize
maindefault branch
20 days agolast push
Python 66.6% HTML 24.8% CSS 4.9% JavaScript 3.6%

History of backend/app/modeling/validation/historical_replay.py · clear filter

  1. Mon, Aug 31, 2026 1

    1. Directive maître — baselines de replay, Course à 64, connecteurs primaires
      …
      - Replay : baselines « dernier sondage » et « moyenne 14 j » scorées à chaque
        horizon et agrégées (modèle 3,71 bat dernier-sondage 3,84; moyenne-14j 3,49
        gagne l'EAM ponctuelle — consigné honnêtement dans STATISTICAL_DEBT comme
        recherche ouverte : la valeur du modèle est la DISTRIBUTION, les baselines
        n'ont ni intervalles ni probabilités)
      - Course à 64 (/api/battlegrounds.paths_to_64 + section /circonscriptions) :
        pour chaque parti, échelle des sièges du plus sûr au plus décisif, 64e siège
        de la majorité surligné (PQ : Maskinongé 43 %, marge 0,9 pp), marge attendue
        = swing minimal de bascule, onglets par parti
      - Connecteurs PRIMAIRES des 7 firmes (ingest/pollster_reports.py) : veille des
        pages de publications (Firecrawl), archivage des rapports (data/raw/reports),
        extraction PAR RÈGLES avec niveau de confiance, FILE DE RÉVISION (Poll
        excluded=True « révision requise » — jamais d'entrée silencieuse),
        réconciliation Wikipédia, statut de source consigné (Pallas/Synopsis murées
        = connecteurs désactivés de fait). Test live Léger : 5 rapports archivés,
        0 création sous le seuil de confiance — comportement voulu
      - Tests invariants (§qualité) : 127 sièges/simulation, P(victoire) somme à 1,
        probabilités [0,1], extraction primaire (35/35 verts)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 24 days ago · 1 file +28
  2. Sun, Aug 30, 2026 1

    1. v3.1.0 — replay historique multi-élections + modèle d'erreur des sondeurs (σ appris)
      …
      Méthodologie ultra avancée, première vague (§100 : replay + scoring + erreur
      dynamique des sondeurs) :
      
      - ingest/wikipedia_historical.py : 462 sondages archivés sur 6 élections
        (2007: 34, 2008: 36, 2012: 121, 2014: 60, 2018: 106, 2022: 105), ères de
        partis (ADQ 2007-2008), cache data/historical/*.csv avec provenance
      - Cœur alr PARAMÉTRÉ par liste de partis (trend/forecast/house_effects/
        fundamentals) — zéro changement de comportement 2026, replay multi-ères
      - validation/historical_replay.py : LOEO STRICT (house effects, fondamentaux
        exclude_year, σ sur les autres élections), rolling origin J-120→J-1,
        CRPS + log score + couverture 50/90/95 + sharpness (scoring.py)
      - national/pollster_error.py : erreur d'INDUSTRIE par élection (2018 CAQ −5,4,
        2007 PLQ −9,2, 2014 PQ +4,9…), σ_industrie estimé LOEO ≈0,21 (composantes
        principales ≥5 %, borné [0,08; 0,25]), house effects hiérarchiques n/(n+k)+τ
      - ADOPTION σ appris (use_empirical_industry_error=True) validée par replay :
        log score −3,80 vs −5,33, CRPS 2,64 vs 2,67, couverture 95 % 83 % vs 76,5 %,
        EAM inchangée (3,71 vs 3,69) — fuite du backtest fondamentaux corrigée
      - API /api/replay, /api/pollster-error (+ v3), POST /api/admin/replay
      - Audits §100 : METHODOLOGY_AUDIT, STATISTICAL_DEBT (dette paramétrique
        complète), V3_MODEL_ARCHITECTURE, HISTORICAL_REPLAY_PLAN
      - 33/33 tests (CRPS/log score, bornes σ, replay 2018 smoke, ère ADQ 5 partis)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 25 days ago · 1 file +150