DESCENT PROTOCOL // BOOTING

Loading Sequence  ·  0%

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.