The mistake of the elo system that leads to the TG ladder issues

I will try to use the same nomenclature as in this wikipedia page:

Where R is the elo rating of a player (RA of the player A and RB for player B and so on). QA, QB, QC … are the effective power levels of these players that result from that elo. EA, EB, EC… are the probabilities of winning a game for each of them, E1 and E2 are winrates associated with teams. In the following I will also introduce expressions for the wrong Team elo calculations and the ones I propose to be implemented instead.

The first part is just to showcase the general calculation error that is already applying to 1v1s. This error is minimal though, it even has an interesting effect that players need effectively a few fewer games to get to their real elo when climbing the ladder and actually, interestingly compensates another error that doesn’t come from the calculation but how ladder matches need to be setup. You see, the high end players don’t have a lot of opponents on their own level and they are mostly paired with lower ranked players. When they win they don’t get a lot of elo - and if they lose they can lose a lot in comparison, requiring them to only “creep” to their real elo. The calculation error of the elo system actually makes this creep a bit faster. I will also show at a later stage why the permanent miscalculation has little to no long-term effect on the 1v1 elo scale and though we should be aware of the miscalculation, there is absolutely no need to change anything for the 1v1 elo system from this.

Now the showcase what is done wrong, on an easy example of player A (400 elo) and player B (0 elo)

RA = 400
RB = 0

QA = 10^(400 / 400) = 10
QB = 10^(0/400) = 1
QA + QB = 11

EA = 10/11 = .909090…
EB = 1/11 = .090909…

With a K factor of 32 when A wins the new RA’ an RB’ values are:

EA’ = EA + 32 * (1 - 10/11) = EA + 32/11 = 400 + 32/11
EB’ = EB + 32 * (0 - 1//11) = EA -32/11 = 0 - 32/11.

Resulting in the actual power levels of

QA’ = 10.16887
QB’ = .98339
QA’ + QB’ = 11.15226

Which is bigger than the original QA + QB = 11. So for some reason in this match their combined power has increased. This is a result of a wrong linearisation of the added/subtracted elo, If the lower ranked player would have won, their combined power level would have decreased. The reason for that is, that the higher the elo the more difference slight elo changes make in the actual power level and the lower it is the less difference. So shifting them around like this will always result in an error when the players have different elos and the error is the bigger the bigger the elo difference of the players is.
From the elo perspective it looks like their combined elo is unchanged at 400. But that’s misleading.

I could formulate a correct formula here, but it isn’t really necessary as I described before. This mistake actually has little impact and doesn’t require to be fixed in 1v1s.

What reuires to be fixed though is that the Team elo calculation uses the same form of linearisation. Instead of adding the actual power levels of the players, it adds the elos. Which results in a miscalculation of the overall team elo. Though I actually don’t know exactly how the team elo calculations work, the general mistake is implemented and the result is appearant. Players with low elo have way too high impact and players of high elo have too little impact, resulting in teams haveing players “tanking” with really low elos getting an unfair advantage.

Now going finally to the Team elo calculation mistake and how I propose to fix it.
I need to introduce a new value nR1 (and nR2) whihc is the new elo for the team 1.
Also two functions Q(R) which gives the power level of an elo and R(Q) which gives the elo of a power level. They are inverse functions meaning Q(R(Q1)) = Q1.

Q(R) = 10^(R/400)
R(Q) = 400 * log(Q)

Now I want to define two teams of 4 player which are on the same power level and should be evenly matched.

QA = 5
QB = 5
QC = 5
QD = 1

QA + QB + QC + QD = 16

RA = R(QA) = 259.58800
RD = 0

QE = 4
QF = 4
QG = 4
QH = 4

QE + QF + QG + QH = 16

RE = 240.82400

The calculation of the team elos is the mean of the the players elo.

R1 = (RA + RB + RC + RD)/4 = (3 * 259.58800 + 0) /4 = 194.691
R2 = RE * 4 / 4 = 240.82400

So according to this calculation, T1 is more than 46 elo worse than T2. Meaning that the team elo calculation thinks that T2 is favorite and should win 56.6 % of the games. This is with comparably close elos aswell, we have teams with elo differences of close to 10x of this. The calculation SHOULD get to 50 %, as both teams are chosen to be on the same power level.

If I would have chose the teams like one team of 2 x 2000 elo players and 2 x 0 elo players and the other one consisting of 4 1000 elo players, the team elo calc would result in an “even matchup” with a winrate of 50 % each. But when you calc the corresponding team power levels, you would actually get to a result of 99.4 % winrate for the team with the different elos. Basically a guaranteed win if they don’t make mistakes. And from that win they would get K/2 elo points each - the amount they would get if they would have beaten an equally strong team. And ofc because of the wrong calculation they also will get paired with teams they can easily beat, as their calculated team elo is just too low.

The nR calculution I propose. (Note this is the most easy form and I will make a cR calculation at some point that will allow teams with different amount of players and handycap to be matched and fairly treated).

nR = R(sum(Q(Rn)) / n) [old calc is R = sum(R) / n]

nR1 = R((QA+QB+QC+QD) / 4) = R((5+5+5+1) / 4) = R(4) = 240.824 = nR2

Leading to the correct result that the two initally defined teams are evenly matched with a winchance of 50 % each

And in the other case of teams with 2 * 2000 , 2 * 0 elo and 4 * 1000 elo it will result in nR1 = 1879.58974 and nR2 = 1000. The chance of winning would be exactly the mentioned 99.4 % that result from the power level calculation.

I will stop the initial post of this Thread at this point. I want to talk about stuff here later, but I think this is enough for the opening post.
Upcoming:

  • Different team sizes and a way to match them fairly with an accurate calculation.
  • Handicaps elo calculation methods
  • How to correctly calc elo gains and losses in TGs
  • What this means in order to reduce griefing +
  • Comparisons between the wrong and correct method
  • Explanation why the wrong linearisation is almost irrelevant for 1v1s

Finally I also want to thank @Mercy9545 who could possibly explain much better than me what’s the issue with the wrong team elo calc and why the described new calculation is the correct one.

I hope at some point one of our content creators with mathematical backgrounds like twest or sotl will make a video about this. And ofc there are various other ways that could result in a solution. We don’t even need to use and fix the elo system, we could also define our own ranked system instead.

TL;DR

The elo number is for the most part just show. The R (for Rating) value that is shown is the logarithmic projection of the truely used power level Q to calculate the winchances of each player.

And unfortunately when you use the R values (the shown elo values) for a calculation that should use the Q values, nonsense happens.

For the 1v1 calculation the mistake is low as it only affects the dynamic part of the elo changes, but in TGs the team elo calculation is a static mistake (when teams are repeatedly put together in specidic ways) that affects matchmaking and the elo teams get from wins. It happens frequently that “better” teams are undervalued and get more elo for winning against a worse team, which shouldn’t happen. (The elo system is based upon giving the worse players more value in return for wins than better players when they face each other.)

PS

PS: The calculations I made in the first post are only showcases of the miscalculations happening. I don’t introduce any new values. The power level Q I refer to IS the actual core of the elo calculation, whilst the elo rating R itself is as described basically just show. It makes the systen easier to get as the values for the power ratings can go from stuff like .01 to 10 000 000 which is ofc nothing really usable to assess the skill level. And the difference between a Q value o .01 and .1 is 400 elo, the same is the elo difference between a power level of 1 000 000 and 10 000 000 .So the elo differences are “big” for very little difference at the bottom of the scale, but look extremely tiny for the top of the scale. This is the effect that causes the miscalculation.

As nobody replied in this topic I only want to share now the (in my eyes) correct ways to calculate the team elos, losses and gains. I wanted to introduce different team sizes first, but this would require to add a term for an absolute correction, which would be too much for a single post.

So. First ofc is the correct team ranking calculation. Which I think should actually be the Q value rather than the P value. Why? Because it makes all the calcs way easier. I deally I think the team “elos” of the players should actually be saved as the Q values and only be “shown” as a tg “elo”. Thos makes all calcl way more simple to understand.

QT = sum(QN)

The probability of winning then is ofc

E1 = Q1 / (Q1 + Q2)
E1 = Q2 / (Q1 + Q2)

Simple.

A bit more complicated are the Q gains and losses. N is the total amount of players in the TG. Assuming T1 won.

dQ = (1-E1) * (E1 * E2) * N * (Q1 + Q2) * (K / 400) * 2

(When T2 won, the (1-E1) has to replaced with (1-E2))

Resulting in (assuming Team A won) in the gains of losses of eg player A (from team 1 that won) and player E (from team 2 that lost).

dQA = + dQ * QA / Q1
dQE = - dQ * QE / Q2

(When T2 won, the minus has to be applied to all members of T1 and the plus to all members of T2 instead)

Note: This will result in looking like the average tg elo would “go down” after the change. But it’s an illusion. The calc will stabilize the Q values. This Q value average will remain constant.
Ofc this allows to do some forms of adjustments like helping newer players to raise to their “real” TG elo faster with bonusfactors for their first wins. This is especially relevant regarding the smurfing issue.

Note for the programmers: It’s imprtant to implement a check. Q values have to remain strictly positive. The calc should never result in a zero or negative Q value, but it’s still important to check.

(edit: I made a mistake in the calc of the power value gains. Need to figure out eactly where it happened. Instead of lesser gains at higher differences it resulted in a bigger gain I will figure it out and correct)

edit2: corrected - I forgot to apply the “winchance” correction factor. A very basic mistake that shouldn’t happen, but yeah. I hope somebody else will counterread my stuff here and check if it’s all correct.

Notes

PS: Note, that because of the Q based dQ values (rather than dR) it’s impossible to make a perfect 1:1 “elo change after calculation” in comparison to the traditional calculation (which is flawed as I pointed out). The calc I propose is very close, but not exactly the same. Examples are if the K value is 32 (the standard one) and there is a 50 % win chance for either one, the resulting elo change will be around 14 instead 16. The Elo change when someone with an absurldy low winrchance wins will be close to 48 for them instead of 32. So in the vast majority of games it will be very similar, but not the same (which is impossible to achieve). Especially in the “mid-high elo difference” spectrum of like 200-400 there will be a notable difference depending on who wins and who has higher elo. If someone with eg 200 elo higher will win they will get about 3 elo and lose 11 on defeat. Currently it would be about 8 vs 24. Whilst in contrast the one with lower elo would get and lose 29 vs 11 in comparison to the current 24 vs 8. My calc is also intentionally setup in a way that the changes will diminish more than the old calc when the elo differences are higher. I try to make “close matchups” more count this way and matchups with very different elos less - at least for the people with higher elos. They can’t lose as much when losing to people with much lower elo. On the other end as described people with lower elo can actually rise faster, this is a result of the corrected mistake of the wrong elo calculation. However I limited that intentionally.
The proposed changes will make it a bit harder to grief and smurf. Especially that fake TG elo play will be made way harder. But most importantly the effect on the community will be extremely limited, as it would makw way, way less of an impact to have fake low elos players on a team.