🧠 ML Transparency — Comment BetRecord calcule ses prédictions

5 modèles entraînés, validés par backtest, combinés via stacking LogReg.
Zéro boîte noire : tout est documenté ici.

🏆 Backtest validé WC2026

Méthode : compare verdict prédit (J-1 du match) vs résultat réel sur les 47 premiers matchs WC2026 joués + 500 matchs intl 2023-2025. Calibration via stacking LogReg meta-learner sur 15 features × 3 outcomes.
76.9%
Verdict accuracy WC2026 (n=47)
53.8%
Verdict accuracy intl (n=500)
+11.5pts
Stacking override (conf ≥ 70%)
IC [60.7%, 93.0%]
Intervalle confiance Wilson

🤖 Les 5 modèles ML actifs

1. LSTM v3 (PyTorch)
torch 2.x · 64 hidden · 2 layers · dropout 0.2
val_loss 0.89 seq 10
Time-series : analyse les 10 derniers matchs de chaque équipe pour capturer la dynamique (forme, momentum, blessures cumulées). Output : prob_home/draw/away en softmax.
2. Transformer encoder
torch · 4 heads · 2 layers · embedding dim 64
Attention multi-head Sequence 15
Self-attention sur séquence de 15 matchs (form + h2h + venue + season). Capture les dépendances long-terme (qu'un LSTM peut perdre via vanishing gradient).
3. Stacking LogReg V119
scikit-learn · 15 features × 3 outcomes
val_acc 54.5% live 76.9%
Meta-learner qui combine les 5 modèles ci-dessus + features marché (cote Polymarket, sharp money). Si confidence ≥ 70% → override le verdict primaire (+11.5 pts).
4. RL PPO (Reinforcement Learning)
PPO · gamma 0.99 · clip 0.2 · 500K steps
Reward Sharpe Action: Kelly%
Agent qui apprend à sizer les mises selon Kelly fraction. Reward = Sharpe ratio rolling 30j (privilégie consistency vs hit rate). État = 32 features marché + bankroll.
5. Bayesian Network DAG
pgmpy · 18 noeuds · CPDs marginalisés
Causal inference P(goals|injuries,form)
Graphe causal (form → momentum → xG → goals). Permet de raisonner sur des scénarios contrefactuels : "et si tel joueur clé était blessé ?" Inference exacte par variable elimination.
+ Dixon-Coles + Skellam
scipy · Poisson bivariée + correction τ low-scores
Closed-form τ = -0.18
Modèle statistique académique. Dixon-Coles corrige le biais Poisson sur les scores 0-0/1-1/0-1/1-0. Skellam donne la distribution exacte du differential.

🧬 Les 15 features du Stacking LogReg

#FeatureSourceCoef (norm)
1polymarket_home_probPolymarket WC2026 (markets)+0.42
2polymarket_away_probPolymarket WC2026 (markets)+0.39
3elo_diffintl_elo_ratings 1y+0.31
4form_score_diff5 derniers matchs (PPG)+0.24
5h2h_winrate_home10 derniers H2H+0.18
6xg_diff_5lastStatsBomb / Sofascore xG+0.22
7injuries_severity_homeAPI-Football + manual−0.15
8injuries_severity_awayAPI-Football + manual+0.14
9venue_advantagehome / neutral / away (WC2026)+0.11
10altitude_mStadium DB (Azteca 2240m...)±0.08
11temperature_COpen-Meteo weather±0.06
12fatigue_h_since_lastCalendrier matchs−0.07
13press_sentiment_homePress V26 Kimi-enriched+0.05
14press_sentiment_awayPress V26 Kimi-enriched−0.04
15sharp_money_signalPinnacle line movement+0.16

📐 Formule cascade lambdas (Poisson)

λ_home = (avg_goals_for_home × avg_goals_against_away × home_advantage) × (1 + form_factor) × (1 - injury_factor) × altitude_adj × weather_adj λ_away = (avg_goals_for_away × avg_goals_against_home) × (1 + form_factor) × (1 - injury_factor) × altitude_adj × weather_adj P(score = i,j) = Dixon-Coles_tau(λ_home, λ_away, i, j) où τ = -0.18 corrige les scores 0-0/1-1/0-1/1-0 (sous-estimés par Poisson pur) P(home_win) = Σ_{i > j} P(i,j) P(draw) = Σ_{i = j} P(i,j) P(away_win) = Σ_{i < j} P(i,j)

🔬 Méthode Monte Carlo WC2026

Pour chaque match WC2026 restant :

  1. Simulation 10 000 fois (Poisson bivarié + Dixon-Coles)
  2. Application format groupes (3 matchs poule) + KO bracket
  3. Aggregation : P(winner = X) par équipe, P(quart/demi/finale)
  4. BLEND 50% Monte Carlo Elo + 50% Polymarket consensus (sprint66)
  5. Override stacking si confidence ≥ 70% (sprint sprint66-V25.128)

⚖️ Money Management — Bayesian Kelly

Kelly_full = (P × (odd - 1) - (1 - P)) / (odd - 1) Kelly_quarter = Kelly_full / 4 (réduction risque drawdown) Stake = min(Kelly_quarter × bankroll, 2% × bankroll) Shrinkage Bayesian : si sample size < 30 picks → Beta(α + wins, β + losses) posterior quantile 25% → réduit auto-stake sur faible historique (LdP AFML Ch.10)

📊 Métriques live tracking

🛡️ Anti-hallucination 0.995+

Tous les rapports premium passent par 4 couches de validation post-LLM :

  1. Schema check : tous les champs requis présents, types corrects
  2. Cross-source check : 3+ sources convergent (af + odds_api + pinnacle)
  3. Range check : probas ∈ [0, 1], scores ≤ 20, rankings ≥ 1
  4. Diversity score : badge "consensus high" si > 2 sources convergent

Score anti-hallucination rolling 24h actuel : 0.996 (cible ≥ 0.99)