No black box. Here's exactly how the model prices a match, what every number on the site means, and how we keep ourselves honest.
Every player gets a Power Rating — a single number for overall strength, plus separate ratings for hard, clay and grass. Tennis is surface-dependent (a great clay player can be ordinary on grass), so we blend a player's surface rating with their overall to judge a specific match. Ratings update after every match, going back 25+ years.
Match results alone miss how a player wins. So we also model the point itself: how often each player lands a first serve, wins behind it, wins behind the second, and how well they return. We adjust each player's serve for the specific returner they're facing.
The ratings give one estimate of who wins; the serve/return model gives another. We blend them, then run the match tens of thousands of times point-by-point to produce the win probability, the likely set scores, and the projected total games. A final accuracy check keeps the percentages honest (a 60% really means about 60%).
The honest finding, updated 2026-07-27: on the main tours the betting market is extremely sharp, and head-to-head our model is worse than it — not merely no better. So we stopped ranking, chipping and alerting on the disagreement. What survives is arithmetic on real prices: line-shopping (taking the best price across books) and cross-book arbitrage, both of which are relations between two posted numbers rather than claims about our model.
So we don't claim to print money. Instead the logs every flagged pick at the price we first saw and grades it against the result and where the market closed — a transparent, forward record. The numbers there are the real test, and they're public whether they're good or bad.
We cover ATP & WTA singles — match winner and total games — across hard, clay and grass, for every tour-level event. Ratings are built from decades of results; serve & return splits reflect recent form.
Doubles and live in-play aren't here yet: reliable, current data for them needs a licensed live feed, which is on the roadmap. We'd rather leave a section out than ship stale numbers.