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

A forum for topics that don't fit elsewhere. Introduce yourselves to other members of the forums, discuss how your name evolves when written out in the Game of Life, or just tell us how you found it. Forum rules still apply.
Post Reply
EthanWalker52
Posts: 1
Joined: June 26th, 2026, 1:37 pm

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

Post 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.
Last edited by EthanWalker52 on June 28th, 2026, 3:18 pm, edited 1 time in total.
User avatar
I6_I6
Posts: 1104
Joined: July 26th, 2025, 8:44 pm
Location: Here, there, somewhere, anywhere, everywhere.
Contact:

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

Post 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

Code: Select all

#C [[ THEME Golly ]]
x = 27, y = 15, rule = LifeHistory
8.A$A6.A.A$3A4.BA2B.B2D$3.A4.2B.2B2DB$2.2A2.3B.6B2.3B$2.20B$4.19B$4.2B
C10BD4B$4.2B2C10BD4B$4.B2C11B2D3B$4.13B2D4B$5.12BD3B.B2A$6.13B3.BA.A$
6.3B.B3.B10.A$25.2A!
RuleEdit: A .rule file editing tool
Post Reply