This is a runnable MVP skeleton for predicting tennis match outcomes, benchmarking against market (median odds), backtesting, and bankroll simulation.
- Python 3.10+
- Docker (optional, for PostgreSQL)
cd tennis-outcome-platform python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt cp .env.example .envdocker-compose up -d postgres adminer psql -h localhost -U postgres -d tennis -f schema.sqlpython etl/ingest.py python etl/elo.pypython models/train.pypython backtest/backtest.py python backtest/simulate.py # see backtest/bankroll_curve.pnguvicorn app.api:app --reload streamlit run app/ui.py- Dev: 4 cores / 8–16 GB RAM / 20 GB disk
- Prod-ish: 8 cores / 32 GB RAM / 100 GB disk
Initialize and push:
git init git add . git commit -m "Initial tennis predictor skeleton" gh repo create <your-org-or-user>/tennis-outcome-platform --public --source=. --remote=origin --push # or create repo on GitHub and: git remote add origin git@github.com:<you>/tennis-outcome-platform.git git push -u origin main- Odds in this skeleton are mocked. Replace
etl/ingest.pyto pull licensed odds & compute median odds per match-time cut. Align timestamps carefully and remove overround before benchmarking. - Extend features: fatigue, recent form, H2H, surface specialties, etc.
- Swap to LightGBM/CatBoost in
models/train.pyby ensuring packages installed; the script auto-detects LightGBM.