Seeking Guidance on Modeling ELO Scores in PyMC

Hello everyone,

This is my first post on this forum. I’ve been working with PyMC for simpler regression models, but now I’m venturing into more complex territory. Specifically, I’m trying to use PyMC to determine ELO scores for a game played by my friends. The challenge I’m facing involves the iterative nature of the modeling process, where the inputs (initial ELO scores) are also the outputs in a way (updated ELO scores), following the results of games.

To elaborate, the initial ELO scores are stochastic, serving as priors. However, these scores evolve into deterministic values based on game outcomes. I’m struggling to conceptualize and implement this dynamic in PyMC. I hope my explanation makes sense, and I apologize if I’m missing something obvious or not communicating my problem clearly. Any advice or pointers would be greatly appreciated. Thank you in advance!

1 Like

You may get some inspiration from the “TrueSkill” model developed for Xbox some years ago.

There’s a nice case-study here: Model-Based Machine Learning: Chapter 3. Meeting Your Match
And a PyMC3 port: mbmlbook_PyMC3/MBML_Chapter_3.ipynb at master · ricardoV94/mbmlbook_PyMC3 · GitHub

@ricardoV94 's suggestion is good. You may also like the paper on Glicko: https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=f40f40bc5e4e3935a2203208b1f0408324c7d527

If you’re already familiar with some statistical notation, it shows you how you can set up a Bayesian model similar to Elo; in fact it’s arguably a bit more sophisticated since you can infer players’ skill like Elo but also the uncertainty about that skill.