← work

DEUCE Tennis Forecast

A live ATP and WTA forecasting platform that combines surface-aware Elo, opponent-adjusted serve and return modeling, calibrated XGBoost, and tournament simulation.

Maintained product · data refreshes hourly · model retrains daily

My contribution
Designed and built the modeling pipeline, live product, and scheduled delivery solo.
Key decision
Combine tennis-specific signals with calibrated XGBoost, and evaluate chronologically so future form cannot leak into past predictions.
Result
Across 87,957 walk-forward matches, the ensemble reached 0.1950 ATP and 0.2017 WTA Brier scores; the product serves forecasts for both tours.
Current limitation
The closing market remains stronger on the odds-matched subset: 0.201 Brier versus the model's 0.203. The full evaluation and that subset are different comparisons.
Org
Personal
Role
Designed & built solo
Period
2026
Status
live
Stack
Python · XGBoost · Elo · Markov models · Monte Carlo · Next.js · GitHub Actions · Firebase

87,957

matches in walk-forward evaluation

Measured evaluation

45,831 ATP and 42,126 WTA scored matches, evaluated chronologically

Evaluation methodology notes

0.1950

ATP Brier score

Measured evaluation

five-seed calibrated XGBoost ensemble; 69.6% walk-forward accuracy

Evaluation methodology notes

0.2017

WTA Brier score

Measured evaluation

five-seed calibrated XGBoost ensemble; 68.5% walk-forward accuracy

Evaluation methodology notes
01/ CONTEXT

The problem

A tennis forecast needs to answer more than who ranks higher. Surface, serve and return quality, recent workload, opponent style, and draw structure all change the probability of an outcome. Most public tools expose a rating or a pick; they do not show how the evidence combines or how uncertainty propagates through an entire tournament.

DEUCE turns those signals into calibrated match probabilities, tournament simulations, rankings, and player-level explanations for both ATP and WTA tours.

02/ CONSTRAINT

The constraints

  • Tennis data arrives from several sources with different identifiers, schemas, and refresh schedules
  • The same player can perform very differently across hard, clay, and grass courts
  • Match history is chronological, so random train/test splits would leak future form into the past
  • A useful probability must be calibrated, not merely rank the likely winner correctly
  • Live forecasts need dependable refreshes, stale-data detection, and graceful fallbacks when a source fails
03/ APPROACH

From signals to a probability

The forecast is an ensemble of complementary views of a match:

  1. Surface-aware Elo tracks player strength by court type, with cross-surface transfer when evidence is sparse
  2. Serve and return modeling estimates point-winning probabilities after adjusting for opponent quality
  3. A point-to-match Markov model converts point probabilities into games, sets, and match outcomes
  4. Context and style features add rest, fatigue, head-to-head history, home advantage, and matchup tendencies
  5. A five-seed XGBoost ensemble combines 42 features, followed by Platt calibration so a 70% forecast behaves like one over time

The interface shows the resulting probability alongside the factors that moved it, rather than presenting a black-box pick.

Match evidencecalibrated probability
01Surface Elostrength by court
02Serve / returnopponent adjusted
03Match contextrest · fatigue · home
04Style matchuppace · patterns · H2H
EnsembleXGBoostseed-bagged · Platt calibrated
63.4%match win probability
Markov conversion

point → game → set → match

Monte Carlo draw

round and title probabilities

The forecast stack: distinct tennis signals are combined, calibrated, and then simulated through a draw.
04/ SYSTEM

The product

A scheduled pipeline refreshes and deploys match data hourly and retrains daily. Schema and freshness gates, failure alerts, recoverable snapshots, and Python/TypeScript CI catch silent upstream or serving failures before they become confident-looking forecasts. The product covers both tours through a live Match Center, tournament draws, rankings, player dossiers, style analysis, and model-versus-market diagnostics.

Monte Carlo simulation carries match probabilities through a tournament bracket, producing round-by-round advancement and title odds rather than a collection of disconnected picks.

Three views from the live product: current forecasts, model rankings, and player-style analysis.
05/ EVIDENCE

Evidence

The evaluation is walk-forward: every prediction is generated using only information available before that match. The measured 2010–2026 research window covers 45,831 ATP and 42,126 WTA matches, or 87,957 in total.

  • Surface Elo scores 0.2006 ATP / 0.2114 WTA Brier; the calibrated XGBoost ensemble improves that to 0.1950 / 0.2017
  • Walk-forward accuracy is 69.6% ATP and 68.5% WTA
  • A published bookmaker benchmark is roughly 0.196; on DEUCE's own odds-matched subset, the closing line still leads 0.201 to 0.203 — an important boundary on the claim
  • Frozen pre-match forecasts, model scorecards, and market comparisons expose evaluation rather than reducing quality to win rate alone
06/ IMPACT

What shipped

  • One public product for ATP and WTA forecasts, rankings, player analysis, and tournament simulation
  • A reproducible modeling pipeline with chronological evaluation, explicit calibration, and immutable pre-match records
  • Hourly multi-source refreshes, daily retraining, schema/freshness gates, and automated Firebase delivery
  • Transparent scorecards and market comparisons that show where the model is strong and where the market remains stronger

Questions about this project? The chat answers from these case studies and links back to them.