2026LocalSolo data and ML engineer
Tennis Match Predictor
A tennis outcome modeling pipeline, same shape as the NBA predictor. Data ingestion, feature engineering, model training, all script-driven.
Pythonpandasscikit-learnXGBoost
Local project, not public yet
Overview
A data-and-model project for tennis match outcomes, following the same pattern as the NBA work: ingestion scripts pull match data, feature engineering builds per-player rolling features, and a trained model predicts the winner and margin. No UI yet; everything runs from scripts. Structured the same way as nba-stats so the tooling is reusable across sports.
Highlights
- Per-player rolling feature engineering (recent form, surface splits, head-to-head).
- Shared ingestion pattern with nba-stats so adding a new sport is structural, not bespoke.
- Script-driven workflow: ingest, train, evaluate, predict, all CLI-invoked.
- Kept local while the feature set stabilizes.
Challenges and approach
- Tennis match data is sparser per player than team sports. Bootstrapping per-surface features from rolling windows, rather than season averages, cut variance without losing signal.
- Reusing the nba-stats ingestion skeleton forced a cleaner generic layer, since tennis entities (players, matches, surfaces) do not map one-to-one onto team-sport entities.