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é.
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 outsiders vs résultat (favoris / outsiders)
Visualisation de la répartition des cotes selon que le favori gagne ou perd.
📊 É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”.
% de vainqueurs correctement prédits (utile, mais incomplet).
Erreur quadratique entre proba et résultat (plus bas = mieux).
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é.
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.
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.
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
Matrice de confusion — Train / Validation / 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
Matrice de confusion — Train / Validation / 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
Matrice de confusion- Kelly — Train / Validation / Test
4) Simulation MEGA (WTA + ATP)
Même logique, mais en incluant ATP (et actions FAV/TOC), pour montrer la robustesse multi-tour.
Matrice de confusion — 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.