Page 1 of 1

Off-CA side project: an Elo-style rating engine for tennis in Python

Posted: June 26th, 2026, 1:48 pm
by EthanWalker52
Most of my coding time these days goes into cellular-automata tinkering, but I keep one side project running that has nothing to do with grids and rules - and since this crowd appreciates a good simulation, I figured I'd share it.

It's a small Python engine that rates tennis players. It ingests historical ATP and WTA results and gives each player a single strength number, then updates it after every match - an Elo-style system, the same core idea chess ratings use. What began as a throwaway script grew into something with surface adjustments (clay vs grass changes a lot), inactivity decay, and sane handling of mid-match retirements. Like any simulation over messy real data, the cleaning is most of the work.

It actually rhymes with CA work more than I expected: a simple update rule applied over and over, emergent rankings you didn't hand-design. Two questions for the algorithm-minded here: do you keep a coding hobby outside cellular automata? And for anyone who's built rating systems (Elo, Glicko, TrueSkill), how did you handle volatility for players with very few matches? That's the part I keep rewriting.

Quick update: I finally cleaned it up and put it online — it's a lightweight tennis rating model now, if anyone fancies a look away from the gliders.

Re: Off-CA side project: an Elo-style rating engine for tennis in Python

Posted: June 26th, 2026, 1:51 pm
by I6_I6
EthanWalker52 wrote: June 26th, 2026, 1:48 pm Most of my coding time these days goes into cellular-automata tinkering, but I keep one side project running that has nothing to do with grids and rules - and since this crowd appreciates a good simulation, I figured I'd share it.

It's a small Python engine that rates tennis players. It ingests historical ATP and WTA results and gives each player a single strength number, then updates it after every match - an Elo-style system, the same core idea chess ratings use. What began as a throwaway script grew into something with surface adjustments (clay vs grass changes a lot), inactivity decay, and sane handling of mid-match retirements. Like any simulation over messy real data, the cleaning is most of the work.

It actually rhymes with CA work more than I expected: a simple update rule applied over and over, emergent rankings you didn't hand-design. Two questions for the algorithm-minded here: do you keep a coding hobby outside cellular automata? And for anyone who's built rating systems (Elo, Glicko, TrueSkill), how did you handle volatility for players with very few matches? That's the part I keep rewriting.
Welcome to the Forums!
Could you provide the website/githup repo link?
Also, non-CA topics usually fit in the sandbox forum. Done --hotdogPi