Search code examples
algorithmrating

Elo rating system without order of game played


I am looking for a rating system similar to the elo rating system in chess. The problem I have is that the ELO system depends on the order games were played. eg. Player A starting Elo 1000 Player B starting Elo 1000

If Player B wins over A he will have lets say 1015 points and A 985.

If A keeps on playing and wins against other people, he will have a higher ranking than B, if B stops playing. I don't want that. B should still be stronger than A.

How can I realise that?


Solution

  • There are a number of schemes which amount to writing down the win/lose/draw record as a matrix and then typically calculating the largest eigenvalue of some matrix related to this. One summary is at http://java.dzone.com/articles/ranking-systems-what-ive, which points to more technical papers including https://umdrive.memphis.edu/ccrousse/public/MATH%207375/PERRON.pdf - "The Perron-Frobenius Theorem and the Ranking of Football Teams".

    If you can get more information out of the game than just win/lose/draw you might do better by using this. Some work on soccer has used the number of goals for and against at each match to try and work out the strengths of each team's offense and defense separately (and I do realise that soccer doesn't have separate offensive and defensive teams). In soccer it is reasonable to model the number of goals scored as a Poisson process. One deduction from this, by the way, is that soccer is inherently a pretty uncertain game, and that predicting score draws, as required in some gambles, is especially uncertain. I try and remember the inevitable uncertainty every time England play a game :-).