Tennis Bot - Paper Trading ATP

Bot de paper trading tennis qui combine un modèle de probabilité pré-match, les cotes live du marché et des règles de gestion du risque pour identifier des paris ATP à value bet. Le projet est conçu pour tourner en continu avec un quota API maîtrisé, enregistrer les décisions dans un historique auditable, puis produire des rapports de performance et un dashboard Streamlit.

Projet de recherche et de paper trading uniquement. Il ne déclenche pas de pari réel.

Description du projet

Le pipeline suit quatre étapes principales :

  1. Collecter les cotes tennis via The Odds API et historiser des snapshots de marché.
  2. Générer une probabilité modèle à partir d’un ensemble LightGBM/XGBoost enrichi par Elo, ranking, forme récente, surface, H2H et statistiques de service.
  3. Appliquer les filtres de betting : range de cotes, edge net de marge bookmaker, signaux de steam move, exposition maximale, sizing Kelly fractionné et caps par grade.
  4. Sauvegarder les bets qualifiés en paper trading, mettre à jour la CLV, régler les résultats et produire les rapports.

Les principaux fichiers de sortie sont :

Architecture

tennis_bot/
├── api/                  # Client The Odds API avec retry et garde-fou quota
├── analytics/            # Snapshots, steam moves, settlement, reporting, CLV
├── automation/           # Scheduler paper trading, cron, ledger quota mensuel
├── betting/              # Stratégie, odds, bankroll, risk management
├── dashboard/            # Dashboard Streamlit et sortie console
├── data/                 # Historique paper trading, snapshots, datasets tennis
├── live/                 # Entrées live betting et collecteur de snapshots
├── ml/                   # Chargement modèles et construction des features
├── models/               # Artefacts joblib LightGBM, XGBoost, Elo, ranks, stats
├── reports/              # Rapports analytiques et backtests
├── scripts/              # Lanceurs shell pour cron/daemon
├── training/             # Backtest, walk-forward, mise à jour des données
└── utils/                # Settings, paths, logger, HTTP retry

Flux fonctionnel :

The Odds API
    │
    ├── live/odds_snapshot_collector.py
    │       ├── data/odds_snapshot_history.csv
    │       ├── data/odds_movements.csv
    │       └── mise à jour CLV
    │
    └── live/live_betting_v4.py
            ├── ml/model_loader.py
            ├── ml/features.py
            ├── betting/strategy.py
            ├── betting/risk_manager.py
            └── data/bets_history.csv

analytics/settlement.py + analytics/reporting.py
    └── reports/analytics_summary.csv

dashboard/app.py
    └── visualisation Streamlit