🎾 TennisUnderdog • WTA & ATP

Prédictions Tennis WTA & ATP
Deep Learning au service du betting

Projet automatisé : données → Elo/Glicko → RNN/GRU → sélection des paris (value bets) → gestion de mise (Kelly capée). Objectif : Détecter des opportunités (surtout outsiders), pas “parier tous les matchs”. Préviligiant la Qualité à la Quantité.

Important : les performances passées (backtests) ne garantissent pas les résultats futurs. Le pari sportif comporte un risque de perte. Je partage une démarche et des analyses, pas une promesse de gain.

Pourquoi le tennis

Passionné de data science (et joueur d’échecs), j’ai commencé ce projet après avoir remarqué des similitudes entre la lecture du jeu au tennis et la prise de décision sous incertitude : anticipation, dynamique, mental, rythme.

Au départ : Excel/VBA. Puis Python, automatisation, et construction d’un système complet autour des données, des ratings (Elo/Glicko), et du machine learning.

Mini-analogie : “1 point / 2 points”

Par un seul point, on peut tracer une infinité de droites. Avec deux points, on n’en trace qu’une seule. Un petit ajout d’information peut transformer l’incertitude en structure, réduire l'infini à l'unique — c’est l’idée derrière la combinaison “marché + ratings + features”.

Le marché du pari : efficient, volatil, et avec marge

Les cotes intègrent beaucoup d’informations (forme, surface, tendances, news…) et évoluent jusqu’au match. Un parieur “à l’instinct” est limité : biais cognitifs, volume d’analyse faible, difficulté à gérer la variance.

L’idée de TennisUnderdog : passer de Homme vs Marché à Machine vs Marché : automatiser l’analyse et chercher des spots où la probabilité estimée est supérieure à la probabilité implicite.

Distribution des cotes favoris vs résultat (favoris / outsiders)

Visualisation de la répartition des cotes selon que le favori gagne ou perd.

Distribution des cotes vs résultat
Distribution des cotes vs résultat
Distribution des cotes outsiders vs résultat (favoris / outsiders)

Visualisation de la répartition des cotes selon que le favori gagne ou perd.

Distribution des cotes vs résultat
Distribution des cotes vs résultat

📊 Étapes clés du projet

1) Collecte & dataset 2018-2025

  • Résultats WTA/ATP
  • Cotes d’ouverture & closing (multi-Books)
  • Nettoyage, normalisation, features

2) Ratings Elo / Glicko

  • Général + par surface
  • Probabilités “théoriques” issues des performances
  • Objectif : ajouter de l’information au-delà du marché

3) Deep Learning (RNN/GRU)

  • Apprentissage sur séquences / dynamique
  • Optimisation & contrôle du sur/sous-apprentissage
  • Production de probabilités (pas juste un “vainqueur”)

4) Sélection des paris (value bets)

  • On ne parie pas “tout”
  • On filtre selon valeur attendue & conditions (ex : min odds)
  • Focus : Underdogs (Outsiders)

5) Gestion de mise (Kelly capée)

  • Mise fixe : mesurer le modèle “pur”
  • Kelly : choix + sizing plus intelligent
  • Caps pour limiter la volatilité

6) Publication & monitoring

  • Pipeline automatisée
  • Logs, suivi, pages VIP
  • Amélioration continue

Comment j’évalue un modèle de prédiction

Le modèle produit des probabilités. Donc on évalue surtout la qualité des probabilités, pas uniquement “qui gagne”.

Accuracy
% de vainqueurs correctement prédits (utile, mais incomplet).
Brier Score
Erreur quadratique entre proba et résultat (plus bas = mieux).
Log Loss
Punit fort les erreurs “trop sûres” (plus bas = mieux).

➡️ En pratique : Brier bas + LogLoss bas (et une accuracy correcte) = probabilités plus exploitables.

Calibration / fiabilité des probabilités

Deux modèles peuvent avoir la même accuracy, mais une fiabilité différente. Un modèle est “fiable” si quand il annonce 70%, l’événement arrive ~70% du temps sur beaucoup de matchs. Nous disons alors qu'il est bien calibré.

Diagramme de calibration

Timing : pourquoi les closing odds (CLV) comptent

Dans le betting, une bonne prédiction ne suffit pas : le timing d’entrée sur le marché est crucial. On mesure ça via la CLV (Closing Line Value) : si on bat régulièrement la cote de clôture, c’est un signal fort que le modèle capte une information avant le marché.

Population + CLV

POP : définition

Les POP sont des codes “populations” construits en comparant les cotes closing (CBF/CBT) aux cotes théoriques du modèle (Elo/Glicko).

Lecture du tableau

La structure est globalement stable d’une année à l’autre : on retrouve des profils similaires, ce qui permet de segmenter et d’expliquer où le modèle se distingue du marché, surtout côté outsiders.


CLV : définition

CLV = cote d’ouverture (opening)cote de clôture (closing). Elle sert à mesurer comment les cotes évoluent entre l’open et la closing.

Tendance observée (global)

  • Favoris : CLV_fav ≈ +0,03 → la cote des favoris baisse en moyenne vers la closing.
  • Outsiders : CLV_toc ≈ −0,14 → la cote des outsiders monte en moyenne vers la closing.

Pour TennisUnderdog

Comme le projet vise surtout les outsiders, il est logique de se baser sur la closing : statistiquement, les outsiders ont une cote plus haute en fin de marché, donc plus de “valeur” côté payout.

Tableau POP + CLV
Tableau POP + CLV (open vs closing)

Deep Learning : pourquoi RNN/GRU

Plusieurs modèles ont été testées (MLP (Multi-Layer Perceptron) / Support Vector Machine (SVM) / AdaBoost / Xgboost)). Le RNN/GRU a été retenu car il capture mieux certaines dynamiques et fournit des probabilités plus utiles pour la sélection de value bets.

Train / Validation / Test (anti fuite de données)

Split temporel strict : le modèle n’a pas accès aux données futures pendant l’entraînement. Objectif : éviter les “data leakage” et tester en conditions réalistes.

Réglage & généralisation

Optimiser un modèle, éviter l’overfitting, choisir les features, architectures/hyperparamètres : c’est la partie la plus complexe notamment.

Courbes RNN/GRU Train/Val (Accuracy / Loss)
Courbes d’apprentissage (Accuracy / Loss) avec early stopping.

Simulations bankroll : Référence → Mise fixe → Kelly capée

Split temporel strict pour éviter la fuite de données : Train (2018–2023)Validation (2024)Test (2025). Objectif : vérifier la généralisation (pas juste “performer” sur le passé).

Pourquoi simuler une bankroll ?

Dans un problème financier, la question finale n’est pas seulement “qui gagne ?” mais “est-ce que des probabilités bien calibrées créent un avantage exploitable (value) ?”.

Important

Train = in-sample (peut être trop optimiste). Le vrai test = Validation puis Test.


1) Simulation Référence (toutes les prédictions, sans sélection)

Ici, on parie toutes les prédictions (favoris + outsiders) avec une mise fixe et quelque soit la côte, pour observer le signal brut du modèle et voir s’il existe un signal exploitable.

Bankroll — Train / Validation / Test
Référence — Train (2018–2023)
Référence — Train (2018–2023).
Référence — Validation (2024)
Référence — Validation (2024).
Référence — Test (2025)
Référence — Test (2025).
Matrice de confusion — Train / Validation / Test
CM Référence — Train
CM Référence — Train.
CM Référence — Validation
CM Référence — Validation.
CM Référence — Test
CM Référence — Test.
2) Simulation Mise fixe (filtre min odds : “forcer” des règles simples)

Ici on applique des règles simples (ex : min odds) : c’est utile pour explorer, mais ça reste un filtre “manuel” et pas une vraie sélection intelligente.

Bankroll — Train / Validation / Test
Mise fixe — Train (2018–2023)
Mise fixe — Train (2018–2023).
Mise fixe — Validation (2024)
Mise fixe — Validation (2024).
Mise fixe — Test (2025)
Mise fixe — Test (2025).
Matrice de confusion — Train / Validation / Test
CM Mise fixe — Train
CM Mise fixe — Train.
CM Mise fixe — Validation
CM Mise fixe — Validation.
CM Mise fixe — Test
CM Mise fixe — Test.
3) Simulation Kelly capée (Bridée) = sélection + sizing

Kelly capée = “sélection + sizing”

La mise dépend de l’avantage estimé (proba modèle vs proba implicite marché). Si l’avantage est faible/négatif, la mise tombe à ~0 : le module évite des matchs. “Capée” = plafond de mise pour limiter la volatilité.

Pourquoi c’est important

Ici, le modèle ne fait pas que prédire : il choisit les matches à parier (éviter) et combien. C’est la partie “decision-making”.

Bankroll — Train / Validation / Test
Kelly — Train (2018–2023)
Kelly — Train (2018–2023).
Kelly — Validation (2024)
Kelly — Validation (2024).
Kelly — Test (2025)
Kelly — Test (2025).
Matrice de confusion- Kelly — Train / Validation / Test
CM Kelly — Train
CM Kelly — Train.
CM Kelly — Validation
CM Kelly — Validation.
CM Kelly — Test
CM Kelly — Test.
4) Simulation MEGA (WTA + ATP)

Même logique, mais en incluant ATP (et actions FAV/TOC), pour montrer la robustesse multi-tour.

MEGA — FIX
MEGA — Fix - WTA + ATP.
MEGA — KELLY
MEGA — Kelly - WTA + ATP.
Matrice de confusion — MEGA Kelly Test
CM Kelly — Test
CM MEGA KELLY — Test.

Limites & gestion du risque

Même avec un bon modèle, il y a de la variance et des périodes moins favorables.

  • Transitions de saison (surface/forme), information tardive (blessures, conditions méteo, ect...).
  • Vous devrer respecter la stratégie, en ayant une Bankroll, en respectant le Sizing Kelly, et en attendant la Closing (Actuellmeent 3h avant le matche).
  • Le modèle est pensé pour des paris simples. Les combinés sont à proscrire.
  • Les Bookmakers peuvent vous limiter si vous êtes trop rentable Je vous conseille d'avoir des comptes chez plusieurs Bookmakers, ça vous permettra de choisir la côte la plus elevée et aussi de minimiser le risque de vous faire limiter.

Rejoindre / soutenir

Si tu veux accéder aux pages complètes (prédictions, monitoring, détails), tu peux rejoindre l’espace VIP.

Scroll to Top