Live Demo — Try it now

Tennis Match
Predictor

A neural network built from scratch with NumPy that beat IBM's SlamTracker at Wimbledon 2025. Select two players, pick a surface, and get an instant prediction.

0%
Test Accuracy
0%
Wimbledon 2025
0%
vs IBM SlamTracker
0
Matches Trained

How It Works

From player names to win probability in 4 steps — no TensorFlow, no PyTorch, just NumPy.

Step 01
⚙️

Feature Engineering

Extract 37 features from 195K+ matches — win rates, serve stats, head-to-head, surface form, and rankings across 57 years of ATP data.

Step 02
🏗️

Model Architecture

Design a 37→128→64→1 network with He parameter initialization, Leaky ReLU activations, and L2 regularization — all implemented from scratch.

Step 03
🔄

Training Pipeline

Forward propagation, backpropagation, binary cross-entropy cost, and Adam optimizer — built layer by layer with only NumPy.

Step 04
🎯

Prediction

Forward propagation through the trained network with Sigmoid output to produce a win probability for any two players on any surface.

Network Architecture
2 Hidden Layer ANN — Built from scratch with NumPy
Input 37 features
Hidden 1 128 neurons Leaky ReLU
Hidden 2 64 neurons Leaky ReLU
Output 1 neuron Sigmoid
✨ No TensorFlow • No PyTorch • Pure NumPy

Predict a Match

Select two ATP players and a surface — our model computes 37 features automatically and generates a prediction.

VS
🏆 Predicted Winner
—
Model confidence: —
Player 1
0%
Player 2
0%
Head to Head Record
—
Player 1
Player 2

Wimbledon 2025 — My Model vs IBM SlamTracker

Round-by-round prediction accuracy comparison across all 127 matches.

66.1%
My Model (84/127)
64.6%
IBM SlamTracker (82/127)
+1.6%
Better Than IBM (+2 matches)
Round My Model IBM SlamTracker Result
Round 1
59.4%
38/64
56.2%
36/64 +2
Round 2
65.6%
21/32
68.8%
22/32 -1
Round 3
75.0%
12/16
56.2%
9/16 +3
Round 4
100%
8/8
100%
8/8 Tie
Quarter Finals
50.0%
2/4
100%
4/4 -2
Semi Finals
100%
2/2
100%
2/2 Tie
Final
100%
1/1
100%
1/1 Tie

An Honest Look at This Project

This isn't a production-ready prediction system — it's a learning journey built from the ground up.

I built this entire neural network from scratch using only NumPy — no TensorFlow, no PyTorch, no shortcuts. The goal was never to build the "best" tennis predictor, but to deeply understand how neural networks actually work under the hood: forward propagation, backpropagation, gradient descent, and everything in between.

The model achieves 67.4% test accuracy and outperformed IBM's SlamTracker at Wimbledon 2025 by +1.6%. But numbers only tell part of the story — and I believe in being transparent about where this model falls short.

⚠️ Known Limitations & Areas for Improvement

📊

The Calibration Problem

The model is good at ranking who's more likely to win, but tends to be overconfident in its probability estimates — a known issue called "uncalibrated probability."

🎾

The Djokovic Paradox

The model struggles with Djokovic (~50% error). At 36, his stats suggest decline, yet he defies numbers. Furthermore, our data captured his 2024 slump (World No. 7) just before his rapid Wimbledon 2025 recovery (No. 4).

📅

Data Freshness

Predicting 2025 matches with data ending in 2024 means emerging players and recent form shifts aren't fully reflected in the model's knowledge.

🔍

The Challenger Blind Spot

Accuracy drops in early rounds where qualifiers with limited match history face top seeds — less data simply means less reliable predictions.

I dive deeper into all of these challenges — and potential solutions — in my project presentation. If you're curious about the technical details or how this model could be improved, I'd genuinely appreciate you checking it out.

📽️ View Full Presentation

Technical Details

Everything built from scratch — no ML frameworks used.

📊 37 Input Features

  • Career & surface win rates
  • Recent form (last 20 matches)
  • Serve stats (ace%, df%, 1st serve%)
  • Head-to-head record
  • Ranking points & age
  • Hand matchup encoding
  • Temporal features (month, quarter)
  • Surface one-hot encoding

⚙️ Training Configuration

  • Optimizer: Adam (β1=0.9, β2=0.999)
  • He weight initialization
  • L2 regularization (λ=0.5)
  • Learning rate: 0.003
  • Early stopping (patience=10)
  • StandardScaler normalization
  • Data: 195K+ ATP matches (1968–2024)
  • Test set: 2024 season

🛡️ Data Integrity

  • Strict chronological processing
  • No data leakage — stats from past only
  • Randomized P1/P2 assignment
  • Service stats from last 20 matches
  • Diff features removed (reveal winner)
  • Binary features skip normalization
  • Missing values → training median
  • H2H from encounters only
Prediction Confidence Distribution
How confident is the model when it's right vs. wrong? Higher confidence = more correct predictions.
Prediction Confidence Distribution for Correct vs Wrong Predictions
📄

Technical Report

Read the full technical report covering data pipeline, feature engineering, model architecture, training methodology, anti-leakage measures, and Wimbledon 2025 benchmark results.

📥 Download Technical Report (PDF)