Aoe2 DE Elo Calculator

Team 1 Team 2
Initial Ratings
Algorithm 1 (+0)
1016 (+16) 984 (-16)
Algorithm 2 (+0)
1016 (+16) 984 (-16)
Algorithm 3 (+0)
1016 (+16) 984 (-16)

Explanation of Algorithms.

Elo Basics

Let eloA\mathrm{elo}_A and eloB\mathrm{elo}_B be the Elo ratings of players AA and BB. Elo is intended to model the probability that AA wins against BB. This "Elo win probability" is computed using a logistic function win_prob(eloA,eloB)=11+10(eloBeloA)/400. \mathrm{win\_prob}(\mathrm{elo}_A, \mathrm{elo}_B) = \genfrac{}{}{}{0}{1}{1 + 10^{(\mathrm{elo}_B - \mathrm{elo}_A) / 400}}. Plot of the logistic function used for Elo calculations. Here the xx-axis is the difference in Elo. It has a positive value when player AA is higher rated and a negative value when player BB is higher rated. The values 1010 and 400400 are chosen so that a player with 400400 more Elo is 1010 times more likely to win. For example, if AA has 10001000 Elo and BB has 14001400 Elo, then win_prob(1000,1400)=11+10(14001000)/400=11+10400/400=111,win_prob(1400,1000)=11+10(10001400)/400=11+10400/400=11+(1/10)=1011. \begin{align*} \mathrm{win\_prob}(1000, 1400) &= \genfrac{}{}{}{0}{1}{1 + 10^{(1400 - 1000) / 400}} = \genfrac{}{}{}{0}{1}{1 + 10^{400 / 400}} = \frac{1}{11},\\ \mathrm{win\_prob}(1400, 1000) &= \genfrac{}{}{}{0}{1}{1 + 10^{(1000-1400)/400}} = \genfrac{}{}{}{0}{1}{1 + 10^{-400/400}} = \frac{1}{1 + (1/10)} = \frac{10}{11}. \end{align*}

At the end of a game, a player's new Elo is calculated using their old Elo, the outcome of the game, and their win probability. Player AA's Elo is updated as eloA=round(eloA+32(score(A)win_prob(eloA,eloB))). \mathrm{elo}_A' = \mathrm{round} \Big( \mathrm{elo}_A + 32 \big( \mathrm{score}(A) - \mathrm{win\_prob}(\mathrm{elo}_A, \mathrm{elo}_B) \big) \Big). Here score(A)\mathrm{score}(A) is the outcome of the game from AA's point of view, with score(A)=1\mathrm{score}(A) = 1 when AA wins and score(A)=0\mathrm{score}(A) = 0 when AA loses. Since win_prob\mathrm{win\_prob} returns a value between 00 and 11, the quantity score(A)win_prob(eloA,eloB) \mathrm{score}(A) - \mathrm{win\_prob}(\mathrm{elo}_A, \mathrm{elo}_B) is positive when AA wins and negative when AA loses. If AA is likely to win and ends up winning, this value is close to zero. But if AA is unlikely to win and still ends up winning, this value is close to one. Next, 3232 is the "KK-factor," which is a scale used to determine how many points are won or lost. And finally, the value eloA\mathrm{elo}_A' is rounded to the nearest integer.

Team Game Elo

For team games, the Elo computation is a bit more complex. In our examples, let's have player AA on Team 11, with the opposing players on Team 22. DE has used three different algorithms for calculating the updated Elo for player AA. They all perform an update of the form eloA=round(eloA+32(score(A)win_prob(X,Y))). \mathrm{elo}_A' = \mathrm{round}\Big(\mathrm{elo}_A + 32 \big(\mathrm{score}(A) - \mathrm{win\_prob}(X, Y)\big)\Big). But they use different values for XX and YY. AlgoXY1.eloAmax(Team2)2.avg(Team1)avg(Team2)3.eloAavg(Team2) \begin{array}{ccc} \mathrm{Algo} & X & Y \\ \hline 1. & \mathrm{elo}_A & \mathrm{max}(\mathrm{Team}\,2)\\ 2. & \mathrm{avg}(\mathrm{Team}\,1) & \mathrm{avg}(\mathrm{Team}\,2)\\ 3. & \mathrm{elo}_A & \mathrm{avg}(\mathrm{Team}\,2) \end {array} Voobly uses algorithm 22, but with two differences. First, there is always a gain or loss of 11 point—no game results in a change of 00 Elo. And second, the rating is distributed evenly among the team members. For example, suppose 8 players all start with 1600 Elo. Then, instead of players each gaining or losing 1616 points, their ratings each change by 44 points. Voobly has a calculator for demonstrating its Elo changes.