Let \(s_{i,j}\) be the score of team \(i\) against team \(j\); for instance, in chess a win is given a score of 1 and a draw a score of 1/2 (and a defeat a score of 0). Notice that \[S_{i,j} + S_{j,i} = 1\]
Let \(\mu_{i,j}\) be the number of points that team \(i\) is expected to score against team \(j\); this is typically computed as a logistic function of the difference of ratings between the players: \[\mu_{i,j} = \frac{1}{1 + 10^{-d_{i,j} / \zeta}} = \frac{10^{r_{i} / \zeta}}{10^{r_{i} / \zeta} + 10^{r_{j} / \zeta}}\] where \(d_{i,j} = r_i - r_j\) and \(\zeta\) is a constant (in the chess world \(\zeta = 400\)).

We assume that initially all team ratings are equal to 0. Then, when teams \(i\) and \(j\) match, the new ranks \(r_i\) of team \(i\) and \(r_j\) of team \(j\) are updated as follows: \[
r_i \leftarrow r_i + \kappa (S_{i,j} - \mu_{i,j}) \\
r_j \leftarrow r_j + \kappa (S_{j,i} - \mu_{j,i})
\] where \(\kappa\) is a constant (for instance, in chess \(\kappa = 25\) for new players).