Most traditional ranking methods work with a simple update rule:
- A player's ability changes only when they play.
- If they do not play, their ability either stays the same or decreases due to inactivity.
- When a player wins, their ability goes up, and when they lose, it goes down.
However, this approach can create some unexpected results. For example:
- Imagine five players: A, B, C, D, and E. Player A beats B, but B then defeats C, D, and E. Since B has three wins while A has only one, traditional methods rank B higher than A. This seems unfair because A already proved they’re stronger by defeating B directly.
- Now consider players A and B with similar abilities. A takes a break from playing, while B continues but loses every match. B’s rating drops as expected, but A’s stays the same. This suggests A is still strong, even though their ability should be seen as comparable to B’s, which has now been revealed as weaker.
To address these issues, we propose a Bayesian method that uses a simple mathematical model for tennis matches, offering a fairer way to calculate rankings.
Each player
When player A faces player B, the outcome of each point is modeled as a Bernoulli random variable with probability
For doubles, a team’s ability is the average of its two players,
From the table below, we see how a difference in ability (
0 | 0.50 |
1 | 0.53 |
2 | 0.56 |
3 | 0.59 |
5 | 0.65 |
10 | 0.75 |
From the table, we can see:
- Differences close to zero indicate balanced players with roughly equal chances of winning.
- As the difference increases from one to three, the stronger player’s advantage grows steadily.
- Once the difference exceeds three, the outcome becomes predictable, as the stronger player is likely to win most points.
If
To regularize the solution, we add a prior distribution. Each ability
The loss function
After optimization, we shift and scale the final abilities so that the median rating is 100.
We can also reduce the impact of older matches by introducing weights
One way to define these weights is with an exponential decay:
where
Please see A01. Tutorial
for an example of how to use this package.
If you have any questions, feel free to email me at matteopardi2@gmail.com.
Copyright (C) 2024, Matteo Pardi
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.