← All projects

Sports Analytics · Agent Protocol

Tennis Oracle: match predictions from ratings

Predicts tennis results from a rating system built on a million matches, and tested AI against it head to head.

01The problem

Betting markets price the big tournaments very well, because so many people watch them. Lower down the game, in the smaller tours where most professional matches are played, prices are thin or missing altogether. That is where a careful, consistent method has room to be useful.

02What it does

Tennis Oracle rates every men’s and women’s professional player, from the main tours down to the entry level events, using around a million past matches. It then predicts who wins a given match and explains why in plain language.

03How it works

The ratings work like chess ratings: beat a strong player and your rating rises a lot, beat a weak one and it rises a little. They are adjusted for surface, since a player can be strong on clay and ordinary on grass. The ratings make the prediction; AI only writes the explanation. The system can also talk to other AI agents through a shared standard (the A2A protocol), so it can be plugged into larger setups.

04What came out of it

At the top of the game it picks the winner 65% of the time, where the betting market manages 68%. In women’s entry level events, which no bookmaker prices, it reaches 70%. I also ran a blind test on 197 matches, pitting an AI analyst against the ratings. The AI lost by 7.6 percentage points, which is exactly why it only writes the explanation here.

Built with

Glicko 2 ratingsA2A protocolMultiple data feedsStreamlitWalk forward backtesting

Want the technical detail?

The code and the full technical write up are on GitHub.

View the code on GitHub ↗