Dans le monde des paris sportifs, la capacité à estimer précisément les probabilités des différents scores d'un match de football est un avantage considérable. Les bookmakers utilisent des modèles sophistiqués pour fixer leurs cotes, et les parieurs avisés peuvent exploiter ces mêmes outils pour identifier les opportunités. La loi de Poisson est l'un des modèles les plus utilisés pour prédire les scores de football. Dans cet article, nous allons explorer en profondeur cette loi mathématique, son application aux paris sportifs, et comment vous pouvez créer votre propre modèle "Expected Goals" (xG).
[!note] La loi de Poisson n'est pas une boule de cristal. C'est un cadre simple pour transformer des attentes de buts en probabilités exploitables.
1. Les bases mathématiques : la loi de Poisson
La loi de Poisson est une distribution de probabilité discrète qui décrit le nombre d'événements se produisant dans un intervalle de temps ou d'espace fixe, lorsque ces événements se produisent avec une fréquence moyenne connue et indépendamment les uns des autres. En football, elle est particulièrement adaptée pour modéliser le nombre de buts marqués par une équipe lors d'un match.
a. La formule de Poisson
La probabilité qu'une équipe marque exactement k buts est donnée par la formule :
P(k; λ) = (e^(-λ) * λ^k) / k!
Où :
- e est la base du logarithme naturel (~2.71828)
- λ (lambda) est le nombre moyen de buts attendus pour cette équipe
- k est le nombre de buts dont on veut calculer la probabilité
- k! est la factorielle de k (k × (k-1) × ... × 1)
b. Pourquoi Poisson convient au football ?
Le football présente plusieurs caractéristiques qui rendent la loi de Poisson appropriée :
- Événements rares : Les buts sont des événements relativement rares (généralement 2-3 par match)
- Indépendance : Sous certaines conditions, les buts peuvent être considérés comme indépendants les uns des autres
- Fréquence moyenne connue : On peut estimer le nombre moyen de buts qu'une équipe marque ou encaisse
Cependant, il est important de noter que la loi de Poisson a ses limites. Elle suppose que les buts sont indépendants, ce qui n'est pas toujours vrai en réalité (un but peut changer la dynamique du match). Nous verrons plus tard comment ajuster le modèle pour tenir compte de ces limitations.
2. Application pratique : modéliser un match
Pour appliquer la loi de Poisson à un match de football, nous devons estimer deux paramètres :
- λ_domicile : le nombre moyen de buts attendus pour l'équipe à domicile
- λ_extérieur : le nombre moyen de buts attendus pour l'équipe à l'extérieur
a. Estimation des paramètres λ
La manière la plus simple d'estimer ces paramètres est d'utiliser les moyennes historiques de buts marqués et encaissés par chaque équipe. Par exemple :
| Équipe | Buts marqués (domicile) | Buts encaissés (domicile) | Buts marqués (extérieur) | Buts encaissés (extérieur) |
|---|---|---|---|---|
| Paris SG | 2.8 | 0.6 | 2.2 | 0.8 |
| Olympique Lyonnais | 2.1 | 1.0 | 1.5 | 1.2 |
Pour un match Paris SG (domicile) vs Olympique Lyonnais (extérieur), nous pourrions estimer :
- λ_domicile = (Buts marqués par PSG à domicile + Buts encaissés par Lyon à l'extérieur) / 2
- λ_extérieur = (Buts marqués par Lyon à l'extérieur + Buts encaissés par PSG à domicile) / 2
Dans cet exemple :
- λ_domicile = (2.8 + 1.2) / 2 = 2.0
- λ_extérieur = (1.5 + 0.6) / 2 = 1.05
b. Calcul des probabilités de score
Une fois que nous avons nos deux paramètres λ, nous pouvons calculer la probabilité de chaque score possible en multipliant les probabilités individuelles de Poisson pour chaque équipe.
Par exemple, la probabilité d'un score de 2-1 serait :
P(2 buts pour PSG) × P(1 but pour Lyon) = P(2; 2.0) × P(1; 1.05)
Voici un tableau des probabilités pour les scores les plus probables dans notre exemple :
| Score | Probabilité |
|---|---|
| 1-0 | 12.1% |
| 2-0 | 13.5% |
| 2-1 | 14.2% |
| 1-1 | 11.5% |
| 0-0 | 10.5% |
| 3-1 | 7.1% |
{
"type": "bar",
"title": "Probabilités des scores pour PSG (λ=2.0) vs Lyon (λ=1.05)",
"data": [
{"name": "0-0", "Probabilité": 10.5},
{"name": "1-0", "Probabilité": 12.1},
{"name": "0-1", "Probabilité": 6.3},
{"name": "2-0", "Probabilité": 13.5},
{"name": "1-1", "Probabilité": 11.5},
{"name": "0-2", "Probabilité": 1.9},
{"name": "2-1", "Probabilité": 14.2},
{"name": "3-0", "Probabilité": 10.1},
{"name": "1-2", "Probabilité": 3.5},
{"name": "3-1", "Probabilité": 7.1}
],
"series": [
{"key": "Probabilité", "color": "#3b82f6"}
]
}
c. Calcul des probabilités de résultat
À partir des probabilités de score, nous pouvons calculer les probabilités des trois résultats possibles (victoire domicile, match nul, victoire extérieur) en additionnant les probabilités des scores correspondants.
Dans notre exemple :
- Victoire domicile : 1-0, 2-0, 2-1, 3-0, 3-1, etc. → ~65.4%
- Match nul : 0-0, 1-1, 2-2, etc. → ~22.3%
- Victoire extérieur : 0-1, 0-2, 1-2, etc. → ~12.3%
3. Création d'un modèle "Expected Goals" (xG)
Le concept d'Expected Goals (xG) est devenu populaire dans l'analyse footballistique. Il mesure la qualité des occasions de but en attribuant une probabilité à chaque tir en fonction de divers facteurs (distance, angle, type de tir, etc.). Nous pouvons adapter ce concept pour améliorer notre modèle de Poisson.
a. Facteurs à prendre en compte
Pour affiner notre estimation des λ, nous pouvons prendre en compte plusieurs facteurs :
- Forme récente : Les performances des 5-10 derniers matchs
- Importance du match : Match de championnat vs match amical
- Absences : Joueurs clés blessés ou suspendus
- Style de jeu : Équipes offensives vs défensives
- Conditions : Météo, fatigue (matchs en milieu de semaine), etc.
b. Pondération des facteurs
Nous pouvons attribuer un poids à chaque facteur pour ajuster nos estimations de λ. Par exemple :
λ_ajusté = λ_base × facteur_forme × facteur_importance × facteur_absences × facteur_style
Où chaque facteur est un multiplicateur basé sur les données disponibles.
c. Exemple concret
Prenons un match entre deux équipes de Premier League : Manchester City (domicile) vs Liverpool (extérieur).
Données de base :
- Manchester City : 2.5 buts marqués à domicile, 0.5 buts encaissés à domicile
- Liverpool : 1.8 buts marqués à l'extérieur, 0.9 buts encaissés à l'extérieur
Estimation initiale :
- λ_domicile = (2.5 + 0.9) / 2 = 1.7
- λ_extérieur = (1.8 + 0.5) / 2 = 1.15
Ajustements :
- Forme récente : City a marqué 15 buts en 5 matchs (x1.2), Liverpool a encaissé 8 buts en 5 matchs (x1.1)
- Importance : Match de championnat (x1.0)
- Absences : City sans un défenseur clé (x1.05 pour l'attaque), Liverpool sans un attaquant clé (x0.95 pour l'attaque)
- Style : City très offensif (x1.1), Liverpool contre-attaque efficace (x1.05)
Estimation ajustée :
- λ_domicile = 1.7 × 1.2 × 1.0 × 1.05 × 1.1 ≈ 2.36
- λ_extérieur = 1.15 × 1.1 × 1.0 × 0.95 × 1.05 ≈ 1.27
d. Calcul des probabilités avec le modèle ajusté
Avec ces nouveaux paramètres, nous pouvons recalculer les probabilités de score :
| Score | Probabilité (modèle de base) | Probabilité (modèle ajusté) |
|---|---|---|
| 1-0 | 12.1% | 9.8% |
| 2-0 | 10.3% | 11.6% |
| 2-1 | 9.5% | 12.1% |
| 1-1 | 10.5% | 8.9% |
| 0-0 | 10.5% | 6.2% |
{
"type": "line",
"title": "Comparaison des probabilités de score : Modèle de base vs Modèle ajusté",
"data": [
{"name": "0-0", "Base": 10.5, "Ajusté": 6.2},
{"name": "1-0", "Base": 12.1, "Ajusté": 9.8},
{"name": "0-1", "Base": 6.3, "Ajusté": 5.1},
{"name": "2-0", "Base": 10.3, "Ajusté": 11.6},
{"name": "1-1", "Base": 10.5, "Ajusté": 8.9},
{"name": "0-2", "Base": 1.9, "Ajusté": 2.1},
{"name": "2-1", "Base": 9.5, "Ajusté": 12.1},
{"name": "3-0", "Base": 5.9, "Ajusté": 9.1},
{"name": "1-2", "Base": 3.3, "Ajusté": 3.8},
{"name": "3-1", "Base": 3.7, "Ajusté": 7.3}
],
"series": [
{"key": "Base", "color": "#3b82f6"},
{"key": "Ajusté", "color": "#10b981"}
]
}
4. Exploitation des opportunités de paris
Maintenant que nous avons un modèle pour estimer les probabilités des différents scores, comment pouvons-nous l'utiliser pour trouver des opportunités de paris ?
a. Comparaison avec les cotes du bookmaker
La première étape consiste à comparer nos probabilités estimées avec les cotes proposées par les bookmakers. Si nos probabilités sont significativement différentes, cela peut indiquer une opportunité de valeur.
Par exemple, si notre modèle estime la probabilité d'un score de 2-1 à 12%, mais que le bookmaker propose une cote de 9.0 (ce qui implique une probabilité de ~11.1%), cela représente une opportunité de valeur.
b. Stratégies de paris basées sur les scores
Voici quelques stratégies que vous pouvez utiliser avec votre modèle :
- Paris sur les scores exacts : Cibler les scores qui ont une probabilité plus élevée selon votre modèle que selon les cotes du bookmaker.
- Paris sur les plages de scores : Par exemple, "plus de 2.5 buts" ou "les deux équipes marquent".
- Combinaisons de scores : Parier sur plusieurs scores possibles pour un match (par exemple, 1-0 ou 2-1).
- Handicaps asiatiques : Utiliser votre modèle pour identifier les handicaps mal évalués.
c. Gestion des risques
Il est important de noter que même avec un bon modèle, les paris sur les scores exacts restent risqués en raison de la variance élevée. Voici quelques conseils pour gérer ce risque :
- Diversifiez : Ne misez pas tout sur un seul score ou un seul match.
- Limitez la taille des mises : Les paris sur les scores exacts devraient représenter une petite partie de votre bankroll.
- Utilisez des cotes élevées : Ciblez les scores qui ont une probabilité raisonnable mais des cotes attractives.
- Suivez vos résultats : Tenez un journal détaillé de vos paris pour évaluer la performance de votre modèle.
5. Limites et améliorations du modèle
Bien que la loi de Poisson soit un outil puissant, elle a ses limites. Voici quelques-unes des principales limitations et comment les adresser :
a. Indépendance des buts
La loi de Poisson suppose que les buts sont indépendants les uns des autres, ce qui n'est pas toujours vrai. Un but peut changer la dynamique du match, influençant la probabilité des buts suivants.
Solution : Utiliser un modèle de Poisson bivarié qui prend en compte la dépendance entre les buts des deux équipes.
b. Effet du score actuel
Le modèle de Poisson ne tient pas compte du score actuel du match. En réalité, les équipes ajustent leur approche en fonction du score.
Solution : Utiliser un modèle de Poisson dépendant du score, où les paramètres λ changent en fonction du score actuel.
c. Données limitées
Les moyennes historiques peuvent ne pas refléter la forme actuelle des équipes, surtout si peu de données sont disponibles.
Solution : Pondérer les données récentes plus fortement que les données anciennes.
d. Facteurs contextuels
Le modèle de base ne tient pas compte de nombreux facteurs contextuels (motivation, enjeux du match, etc.).
Solution : Intégrer des facteurs supplémentaires comme nous l'avons fait avec le modèle xG ajusté.
6. Implémentation pratique : créer votre propre modèle
Maintenant que nous avons exploré la théorie, passons à la pratique. Voici comment vous pouvez créer votre propre modèle de Poisson pour les paris sportifs.
a. Collecte des données
La première étape consiste à collecter des données historiques. Voici quelques sources possibles :
- Sites de statistiques : WhoScored, FBref, Soccerway
- APIs : API-Football, Football-Data.org
- Fichiers CSV : De nombreux sites proposent des données historiques en téléchargement
Vous aurez besoin des données suivantes pour chaque match :
- Équipe à domicile et à l'extérieur
- Buts marqués par chaque équipe
- Date du match
- Compétition
- Eventuellement : xG, tirs cadrés, possession, etc.
b. Nettoyage et préparation des données
Une fois les données collectées, vous devrez les nettoyer et les préparer :
- Filtrer les compétitions : Concentrez-vous sur les compétitions qui vous intéressent.
- Gérer les données manquantes : Décidez comment traiter les matchs avec des données incomplètes.
- Calculer les moyennes : Calculez les moyennes de buts marqués et encaissés pour chaque équipe.
c. Implémentation du modèle
Voici un exemple de code Python pour implémenter un modèle de Poisson de base :
import numpy as np
from scipy.stats import poisson
def calculate_poisson_probabilities(lambda_home, lambda_away, max_goals=6):
"""Calculate the probabilities for all possible scores up to max_goals."""
probabilities = {}
for home_goals in range(max_goals + 1):
for away_goals in range(max_goals + 1):
prob_home = poisson.pmf(home_goals, lambda_home)
prob_away = poisson.pmf(away_goals, lambda_away)
probabilities[f"{home_goals}-{away_goals}"] = prob_home * prob_away
return probabilities
def calculate_outcome_probabilities(probabilities):
"""Calculate the probabilities for home win, draw, and away win."""
home_win = sum(prob for score, prob in probabilities.items()
if int(score.split('-')[0]) > int(score.split('-')[1]))
draw = sum(prob for score, prob in probabilities.items()
if int(score.split('-')[0]) == int(score.split('-')[1]))
away_win = sum(prob for score, prob in probabilities.items()
if int(score.split('-')[0]) < int(score.split('-')[1]))
return home_win, draw, away_win
# Exemple d'utilisation
lambda_home = 2.0
lambda_away = 1.05
probabilities = calculate_poisson_probabilities(lambda_home, lambda_away)
home_win, draw, away_win = calculate_outcome_probabilities(probabilities)
print(f"Probabilité victoire domicile: {home_win:.2%}")
print(f"Probabilité match nul: {draw:.2%}")
print(f"Probabilité victoire extérieur: {away_win:.2%}")
d. Amélioration du modèle
Pour améliorer votre modèle, vous pouvez :
- Ajouter des facteurs supplémentaires : Comme nous l'avons fait avec le modèle xG ajusté.
- Utiliser des techniques de machine learning : Pour estimer les paramètres λ de manière plus sophistiquée.
- Implémenter un modèle de Poisson bivarié : Pour tenir compte de la dépendance entre les buts des deux équipes.
- Backtester votre modèle : Tester votre modèle sur des données historiques pour évaluer sa performance.
7. Études de cas : application du modèle
Examinons quelques exemples concrets d'application du modèle de Poisson.
Cas 1 : Paris SG vs Olympique de Marseille (Ligue 1)
Données de base :
- PSG : 2.8 buts marqués à domicile, 0.7 buts encaissés à domicile
- Marseille : 1.5 buts marqués à l'extérieur, 1.2 buts encaissés à l'extérieur
Estimation initiale :
- λ_domicile = (2.8 + 1.2) / 2 = 2.0
- λ_extérieur = (1.5 + 0.7) / 2 = 1.1
Ajustements :
- Forme récente : PSG a marqué 12 buts en 5 matchs (x1.1), Marseille a encaissé 6 buts en 5 matchs (x1.05)
- Importance : Classico (x1.1)
- Absences : PSG sans un attaquant clé (x0.95), Marseille sans un défenseur clé (x1.05)
- Style : PSG très offensif (x1.1), Marseille défensif à l'extérieur (x0.9)
Estimation ajustée :
- λ_domicile = 2.0 × 1.1 × 1.1 × 0.95 × 1.1 ≈ 2.52
- λ_extérieur = 1.1 × 1.05 × 1.1 × 1.05 × 0.9 ≈ 1.20
Probabilités estimées :
- Victoire PSG : 68.2%
- Match nul : 19.8%
- Victoire Marseille : 12.0%
Cotes du bookmaker :
- Victoire PSG : 1.50 (probabilité implicite : 66.7%)
- Match nul : 4.50 (probabilité implicite : 22.2%)
- Victoire Marseille : 7.00 (probabilité implicite : 14.3%)
Opportunités :
- La probabilité estimée pour une victoire de PSG (68.2%) est légèrement supérieure à la probabilité implicite du bookmaker (66.7%), ce qui pourrait représenter une petite opportunité de valeur.
- La probabilité estimée pour un match nul (19.8%) est inférieure à la probabilité implicite du bookmaker (22.2%), ce qui suggère d'éviter ce pari.
Cas 2 : Bayern Munich vs Borussia Dortmund (Bundesliga)
Données de base :
- Bayern : 3.2 buts marqués à domicile, 0.8 buts encaissés à domicile
- Dortmund : 2.0 buts marqués à l'extérieur, 1.5 buts encaissés à l'extérieur
Estimation initiale :
- λ_domicile = (3.2 + 1.5) / 2 = 2.35
- λ_extérieur = (2.0 + 0.8) / 2 = 1.4
Ajustements :
- Forme récente : Bayern a marqué 18 buts en 5 matchs (x1.2), Dortmund a encaissé 7 buts en 5 matchs (x1.1)
- Importance : Classico allemand (x1.15)
- Absences : Bayern sans un milieu clé (x0.95), Dortmund sans un attaquant clé (x0.9)
- Style : Bayern très offensif (x1.1), Dortmund contre-attaque efficace (x1.05)
Estimation ajustée :
- λ_domicile = 2.35 × 1.2 × 1.15 × 0.95 × 1.1 ≈ 3.41
- λ_extérieur = 1.4 × 1.1 × 1.15 × 0.9 × 1.05 ≈ 1.68
Probabilités estimées :
- Victoire Bayern : 72.5%
- Match nul : 15.3%
- Victoire Dortmund : 12.2%
Cotes du bookmaker :
- Victoire Bayern : 1.40 (probabilité implicite : 71.4%)
- Match nul : 5.00 (probabilité implicite : 20.0%)
- Victoire Dortmund : 8.00 (probabilité implicite : 12.5%)
Opportunités :
- La probabilité estimée pour une victoire de Dortmund (12.2%) est très proche de la probabilité implicite du bookmaker (12.5%), ce qui ne représente pas une opportunité claire.
- La probabilité estimée pour un match nul (15.3%) est significativement inférieure à la probabilité implicite du bookmaker (20.0%), ce qui suggère d'éviter ce pari.
Cependant, en examinant les scores exacts, nous pourrions trouver des opportunités :
- Notre modèle estime la probabilité d'un score de 3-1 à 12.5%, tandis que le bookmaker propose une cote de 12.0 (probabilité implicite : 8.3%).
- Cela représente une opportunité de valeur significative.
Conclusion
La loi de Poisson est un outil puissant pour modéliser les scores de football et identifier des opportunités de paris. En comprenant ses principes mathématiques et en apprenant à l'appliquer de manière pratique, vous pouvez créer votre propre modèle "Expected Goals" et gagner un avantage sur les bookmakers.
Cependant, il est crucial de se rappeler que :
- Aucun modèle n'est parfait : La loi de Poisson a ses limites, et le football reste un sport imprévisible.
- La gestion de bankroll est essentielle : Même avec un bon modèle, la variance peut entraîner des séries de défaites.
- L'amélioration continue est nécessaire : Un bon modèle doit être constamment mis à jour et affiné avec de nouvelles données.
En combinant la loi de Poisson avec une approche disciplinée et une gestion rigoureuse des risques, vous pouvez transformer votre passion pour le football en une stratégie de paris plus rationnelle et potentiellement rentable.
Comme le disait le statisticien George Box : "Tous les modèles sont faux, mais certains sont utiles." La loi de Poisson est l'un de ces modèles utiles qui peut vous aider à prendre des décisions plus éclairées dans vos paris sportifs.
Sources et Etudes Referencees
- Poisson Processes (J.F.C. Kingman, Oxford University Press, 1993) - Fondements mathématiques de la loi de Poisson.
- The Expected Goals Philosophy (James Tippett, 2017) - Application du concept d'Expected Goals au football.
- Sports Analytics: A Guide for Coaches, Managers, and Other Decision Makers (Benjamin C. Alamar, Columbia University Press, 2013) - Utilisation des modèles statistiques dans le sport.
- Football Analytics with Python & R (Ryo Nakagawara, 2020) - Guide pratique pour créer des modèles de football.
- The Logic of Sports Betting (Ed Miller & Matthew Davidow, 2019) - Application des modèles statistiques aux paris sportifs.
- Journal of Quantitative Analysis in Sports (2018) - Étude sur l'application de la loi de Poisson aux scores de football.