La plupart des parieurs qui "backtestent" se souviennent vaguement de quelques matchs qui correspondent à leurs critères et concluent que leur stratégie fonctionne. Ce n'est pas du backtesting. C'est de la confirmation bias.
Un vrai backtest c'est une analyse systématique de tous les matchs qui validaient tes critères sur une longue période — sans exception, sans sélection après coup.
"Les Sharps testent sur des données réelles avant de risquer de l'argent. Les gamblers espèrent que ça va marcher. La différence entre les deux commence là."
Étape 1 — Télécharger les données depuis Datafoot
Première chose importante à comprendre sur Datafoot : tu ne sélectionnes pas de saison. Chaque fichier téléchargé contient l'intégralité de l'historique disponible pour la ligue choisie — tous les matchs depuis les premières données disponibles jusqu'à aujourd'hui. Pour la Belgique Pro League par exemple, ça représente plus de 4700 matchs depuis 2010.
-
1
Connecte-toi à Datafoot
Va sur datafoot.fr et connecte-toi à ton compte. L'export est inclus dans l'abonnement (29€/an soit ~2.42€/mois).
-
2
Navigue vers la section "Télécharger"
Dans le menu, trouve la section d'export de données. Tu sélectionnes directement ta ligue.
-
3
Choisis ta ligue et télécharge
Un fichier par ligue = l'historique complet. Si tu veux backtester sur plusieurs ligues, télécharge un fichier par ligue et tu fusionneras ensuite.
-
4
Ouvre dans Google Sheets ou Excel
Le fichier est en CSV avec le point-virgule (;) comme séparateur — pas la virgule. C'est important. Si tout s'affiche dans une seule colonne, c'est pour cette raison.
Ouvrir correctement dans Google Sheets : Fichier → Importer → sélectionne ton fichier → Type de séparateur : "Personnalisé" → tape ; → Importer. Sans ça, toutes les données restent dans une seule colonne.
La structure exacte du fichier Datafoot
Chaque ligne = un match. Voici les colonnes disponibles avec leurs noms exacts tels qu'ils apparaissent dans le fichier :
| Nom exact de la colonne | Ce que ça représente | Type |
|---|---|---|
| sport | Type de sport (FOOTBALL) | Info |
| league | Code ligue (ex : BE1, FR1, EN1, DE1) | Info |
| countryName | Pays | Info |
| homeTeam | Équipe domicile | Match |
| awayTeam | Équipe extérieure | Match |
| eventDate | Date du match (AAAA-MM-JJ) | Match |
| status | Match Finished / Not Started | Match |
| goalsHomeFullTime | Buts domicile temps plein | Résultat |
| goalsAwayFullTime | Buts extérieur temps plein | Résultat |
| goalsHomeHalfTime | Buts domicile mi-temps | Résultat |
| goalsAwayHalfTime | Buts extérieur mi-temps | Résultat |
| expectedGoalsHome | xG domicile | Avancé |
| expectedGoalsAway | xG extérieur | Avancé |
| cornerKicksHome | Corners domicile | Stats |
| cornerKicksAway | Corners extérieur | Stats |
| oddsFT_1 / oddsFT_X / oddsFT_2 | Cotes 1N2 temps plein | Cotes |
| oddsFT_Over_2_5 | Cote Over 2.5 buts | Cotes |
| oddsFT_Under_2_5 | Cote Under 2.5 buts | Cotes |
| oddsFT_Over_1_5 | Cote Over 1.5 buts | Cotes |
| oddsFT_Under_3_5 | Cote Under 3.5 buts | Cotes |
| oddsFT_BTTS_Yes | Cote les deux équipes marquent | Cotes |
| oddsFT_BTTS_No | Cote les deux équipes ne marquent pas | Cotes |
| oddsHT_Over_0_5 / Over_1_5 | Cotes Over mi-temps | Cotes HT |
Étape 2 — Préparer les données
Filtrer les matchs terminés
Le fichier inclut les matchs à venir (status = "Not Started"). Pour le backtest on travaille uniquement sur les matchs terminés.
Ajouter une colonne "Année"
Pour analyser les résultats par année et voir si ta stratégie est cohérente dans le temps :
Étape 3 — Construire le backtest
L'exemple ci-dessous est un backtest virtuel sur le marché Over 2.5 buts avec un critère de cote minimum. C'est un exemple pour comprendre la logique — tu peux adapter chaque formule à n'importe quelle sélection : BTTS, Over 1.5, 1N2, Under 3.5, Over 0.5 ext... Il suffit de changer les colonnes de cotes et de résultat selon le marché que tu veux tester.
Principe : Sans critère tu backtestes tous les matchs de la ligue — ce qui ne veut rien dire. L'intérêt c'est d'ajouter des colonnes "critère validé" pour ne sélectionner que les matchs qui respectent tes conditions. C'est là que tu trouves ton edge.
Les lettres de colonnes ci-dessous sont indicatives — elles dépendent de l'ordre dans ton fichier. Utilise Ctrl+F pour retrouver chaque colonne par son nom exact.
1. Colonne "Total buts"
2. Colonne "Résultat sélection"
Ici on teste Over 2.5 — mais remplace par le marché de ton choix :
→ Pour BTTS : =SI(ET(L2>0;M2>0);"OUI";"NON")
→ Pour Over 1.5 : =SI(L2+M2>1,5;"OUI";"NON")
→ Pour Over 0.5 ext : =SI(M2>0;"OUI";"NON")
3. Colonne "Critère 1 — Cote dans la fenêtre"
Tu n'as pas de critère = tu backtestes tous les matchs sans filtre. Ici on filtre sur la cote oddsFT_Over_2_5 :
→ Pour 1N2 domicile : utilise oddsFT_1
4. Colonne "Critère 2 — xG élevé" (optionnel)
Tu peux empiler autant de critères que tu veux. Exemple avec les xG combinés :
5. Colonne "Tous les critères validés ?"
On combine tous les critères avec ET() — le pick n'est sélectionné que si tous sont respectés :
6. Colonne "Profit/Perte" — mise fixe 1 unité
7. Bilan global
Profit total (unités) : =SOMME(AQ:AQ)
ROI (%) : =SOMME(AQ:AQ)/NB.SI(AP:AP;"OUI")*100
Win rate (%) : =NB.SI.ENS(AP:AP;"OUI";AM:AM;"OUI")/NB.SI(AP:AP;"OUI")*100
Étape 4 — Analyser par année et par ligue
C'est l'étape la plus importante pour valider que ton edge est réel. Un ROI positif sur l'historique complet peut masquer une seule saison exceptionnelle qui tire tout vers le haut.
Crée un tableau croisé dynamique (Insertion → Tableau croisé dynamique) avec l'année en ligne et la somme du profit en valeur. Si le ROI est positif et relativement cohérent sur 5-6 ans différents — c'est un signal sérieux. Si c'est uniquement 2020 ou 2021 qui performent — cherche pourquoi avant de conclure.
Pour plusieurs ligues, télécharge un fichier par ligue, ajoute une colonne "Ligue" dans chacun avant de tout coller dans un seul onglet. Tu pourras ensuite filtrer et comparer.
Ce qui constitue un backtest valide
✓ Minimum 200-300 picks sur la période analysée
✓ ROI cohérent d'une année à l'autre — pas un seul pic isolé
✓ Drawdown maximum supportable — idéalement moins de 20 unités
✓ Testé sur plusieurs ligues pour vérifier la robustesse
✓ Paper trading 2-3 mois avant de passer en conditions réelles
Les pièges à éviter
L'overfitting — Plus tu as de critères, plus tu risques de créer un système parfait sur le passé mais inutile sur le futur. Commence simple. 3-4 critères maximum. La robustesse vaut mieux que la performance parfaite sur l'historique.
Ignorer le drawdown — Un ROI de +12% avec un drawdown de 40 unités est pratiquement inutilisable psychologiquement. Calcule toujours le drawdown maximum — la perte maximale consécutive — avant de valider une stratégie.
Ne tester que les bonnes périodes — Un vrai backtest teste tout, les mauvaises saisons incluses. Si ton système ne survit pas aux mauvaises périodes du passé, il ne survivra pas à celles du futur.
⚠️ Rappel : Un backtest positif ne garantit pas des profits futurs. Les marchés évoluent et les bookmakers s'adaptent. Testez toujours en paper trading avant de risquer de l'argent réel. Les paris sportifs comportent des risques de pertes financières.