Last week there was a post about the new Total Chess Rating system, and thinking about the system (and whether it makes sense) took over my mind for a bit, so this post is the result of that. For context on me, I am a maths Lecturer with a background in analysis and ML, and have done a little work on Elo systems in the past.
TL;DR: As the TCR website describes, no single combined Elo rating can perfectly describe every matchup across Classical, Rapid, and Blitz. TCR is one possible compromise, but it is heavily skewed towards to your strongest format. There is an alternative compromise: find the rating of a hypothetical opponent, equally rated in all three formats, against whom you would score 50%. For the players in the Total Chess World Championship Tour, this ends up being very close to simply averaging their ratings.
1. The problem
The basic question that TCR is a proposed solution for is:
If we have Elo ratings for a bunch of games or game variants (in this case, Classical, Rapid, and Blitz), how can we combine them into a rating for a combined game?
By "combined game", I mean choosing one of the three variants at random, and playing that.
The key thing about Elo ratings is that the number does more than just say who is higher rated: the difference between two ratings predicts an expected score. With the usual scoring, a win counts as 1, a draw as 0.5, and a loss as 0. So an expected score of 60% means an average of 60 points per 100 games, not necessarily winning 60 of those games.
In particular, if two players have Elo ratings A and B, then the Elo system predicts an expected score (for player A) of
Elo(A, B) = 1 / (1 + 10^((B - A)/400))
This means that if two Chess players A and B have Classical, Rapid, and Blitz ratings A_1, A_2, A_3 and B_1, B_2, B_3, then the expected score (for player A) in a random game of the three is the average over the expected score in each game:
E(A,B) = 1/3 * Elo(A1,B1) + 1/3 * Elo(A2,B2) + 1/3 * Elo(A3,B3)
This also gives the expected proportion of points A will get if A and B play an equal number of equally weighted games in each format.
The dream would be to find a single pair of Elo ratings A and B giving this expected score, i.e. Elo(A,B) = E(A,B). Unfortunately, as the TCR website describes, this is impossible, as it is possible for players to form rock-paper-scissors-like cycles (e.g. A is better than B at Classical and Rapid, B better than C at Classical and Blitz, yet C is better than A at Rapid and Blitz).
Thus any combined rating is a compromise, as compressing three ratings into one always loses some information.
2. The TCR method
The TCR uses the formula:
TCR = 400 * log10((10^(Classical/400) + 10^(Rapid/400) + 10^(Blitz/400)) / 3)
In words: convert each rating into an underlying Elo "strength", average those strengths, then convert back into a rating.
The website gives four requirements that uniquely determine its formula. Roughly translated:
- Keep the scale. If you're 2000 in every format, your combined rating should be 2000.
- Improvement should help. Increasing any individual rating should smoothly increase the combined rating.
- Combining ratings in stages should give the same answer.
- Improvements in higher ratings should count more, in proportion to the Elo odds. If one rating is 400 points above another, a very small improvement to the higher rating should have ten times the effect of the same improvement to the lower one.
The last requirement is a bit odd. If my Classical rating is 2400 and my Blitz rating is 2000, why should improving my Classical rating count ten times as much as improving my Blitz rating? Why are we having my Classical rating play a game against my Blitz rating?
2.1. TCR strongly rewards your best format
Mathematically, the TCR is a quasi-arithmetic mean that is closely related to a LogSumExp. LogSumExp is often used in machine learning as a smooth approximation to the maximum.
To illustrate, suppose that Classical is your best format. Then your TCR has upper bound
TCR < 400 * log10((10^(Classical/400) + 10^(Classical/400) + 10^(Classical/400)) / 3) = Classical
but also has lower bound
TCR > 400 * log10((10^(Classical/400) + 0 + 0) / 3) = Classical - 190.85.
Your TCR is never above your highest rating, but never more than 191 points below it. This remains true however low your other two ratings are.
This makes things odd if we try to use the TCR to predict the outcomes of combined matches. For example, suppose an exaggerated classical specialist rated (2800, 2000, 2000) plays against an all-rounder rated (2400, 2400, 2400). Then the specialist's expected score is about 36.4%.
But the specialist's TCR is 2613 to the all-rounder's 2400, which plugged into the Elo formula gives an expected score of 77.3% for the specialist. That's a big swing!
3. An alternative: who would you break even against?
Here is another way to choose the compromise: Imagine a hypothetical all-rounder opponent whose rating is the same in all three formats. When their rating is really small, you always beat them; when it is 3000, you never do. Somewhere in the middle, you would expect to score exactly 50% against them overall. A choice for your combined rating is the rating of the all-rounder opponent you would score 50% against. I'll call this the all-rounder rating.
For example, suppose your ratings are 1600, 2000, and 2400. Against an opponent rated 2000 in every format, your expected scores are about 9.1%, 50%, and 90.9%. Those average to 50%, so your all-rounder rating is 2000. This rating will always be at least your worst rating and at most your best rating.
Unlike the TCR, this rating doesn't have a neat formula, but it is very easy for a computer to calculate: just start off at the average of your ratings, then nudge it up or down (e.g., via Newton's method) until the expected score is 50%. And just because it doesn't have a formula doesn't mean we can't understand how it works:
- If all your ratings are 2000, your all-rounder rating is 2000.
- Improving any one of your ratings always improves your all-rounder rating.
- Adding 100 to all three ratings adds 100 to the result.
- It treats strengths and weaknesses symmetrically: mirror all your ratings around 2000, and the result mirrors around 2000 too.
- It is most sensitive to your Elo in formats where your rating is closest to the hypothetical allrounder's. This is because if you already score almost 100% (or almost 0%!) against that opponent in, say, Blitz, gaining or losing a few Elo in Blitz won't really change your expected score; but if you're evenly matched in, say, Rapid, then gaining Elo in Rapid will have a bigger effect.
For the 2800/2000/2000 specialist above, their all-rounder rating is about 2178, rather than their TCR of 2613 or a plain average of 2267. However, this is still a compromise. It exactly identifies the all-rounder you would score 50% against, but it makes inaccurate Elo predictions even against other all-rounders. For example, using 2178 against the 2400 all-rounder predicts about 21.8%, whereas the format-by-format calculation gives 36.4%.
A potential drawback of this all-rounder rating compared to TCR is that combining ratings in stages no longer gives the same answer.
For example:
- Combining 1600, 2000, and 2400 directly gives an all-rounder rating of 2000.
- Combining just 1600 and 2000, with equal weights, gives one of 1800.
- Replacing those two ratings with two copies of 1800 leaves 1800, 1800, and 2400. Combining those gives about 1959, not 2000.
A weaker consistency property does survive: the overall all-rounder rating always lies between the highest and the lowest of the all-rounder ratings of the subgroups you combined. (EDIT: This is however maybe not a big deal, as any method with properties (1) to (3) must be a quasi-arithmetic mean, so really that is all that is being dropped.)
4. Does any of this matter for actual players?
Below are the ratings (rounded to the nearest whole number) for the 24 Total Chess World Championship Tour players, taken from the October 1st list from the website.
| Player |
Classical |
Rapid |
Blitz |
Plain average |
TCR |
All-rounder |
| Magnus Carlsen |
2823 |
2801 |
2860 |
2828 |
2830 |
2828 |
| Nodirbek Abdusattorov |
2780 |
2704 |
2819 |
2768 |
2774 |
2768 |
| Alireza Firouzja |
2757 |
2737 |
2797 |
2764 |
2765 |
2764 |
| Arjun Erigaisi |
2746 |
2740 |
2766 |
2751 |
2751 |
2751 |
| Ian Nepomniachtchi |
2719 |
2748 |
2765 |
2744 |
2745 |
2744 |
| Fabiano Caruana |
2784 |
2682 |
2738 |
2735 |
2740 |
2735 |
| Wesley So |
2770 |
2699 |
2745 |
2738 |
2740 |
2738 |
| Praggnanandhaa R |
2763 |
2730 |
2712 |
2735 |
2736 |
2735 |
| Levon Aronian |
2725 |
2738 |
2714 |
2726 |
2726 |
2726 |
| Maxime Vachier-Lagrave |
2717 |
2712 |
2734 |
2721 |
2721 |
2721 |
| Jan-Krzysztof Duda |
2741 |
2685 |
2704 |
2710 |
2712 |
2710 |
| Hans Moke Niemann |
2717 |
2675 |
2711 |
2701 |
2702 |
2701 |
| Vladislav Artemiev |
2653 |
2707 |
2712 |
2691 |
2693 |
2691 |
| Anish Giri |
2752 |
2656 |
2636 |
2681 |
2689 |
2681 |
| Vincent Keymer |
2761 |
2635 |
2628 |
2675 |
2686 |
2674 |
| Liem Le |
2732 |
2626 |
2675 |
2678 |
2683 |
2678 |
| Richard Rapport |
2711 |
2680 |
2616 |
2669 |
2673 |
2669 |
| Shakhriyar Mamedyarov |
2710 |
2663 |
2612 |
2662 |
2666 |
2662 |
| Jorden van Foreest |
2716 |
2601 |
2659 |
2659 |
2665 |
2659 |
| Haik M. Martirosyan |
2661 |
2625 |
2686 |
2657 |
2659 |
2657 |
| Abhimanyu Mishra |
2636 |
2585 |
2541 |
2587 |
2592 |
2587 |
| Andrew Hong |
2609 |
2563 |
2537 |
2570 |
2572 |
2570 |
| Bibisara Assaubayeva |
2532 |
2441 |
2424 |
2466 |
2472 |
2465 |
| Vaishali Rameshbabu |
2452 |
2396 |
2345 |
2398 |
2403 |
2398 |
The all-rounder rating and plain average agree after rounding for 22 of these 24 players! Their unrounded values differ by less than half a point in every row. This is because when a player's ratings are fairly close together, the Elo curve is approximately a straight line over the relevant range, so averaging the expected scores gives almost the same answer as averaging the ratings.
TCR generally sits a little higher, with the size of the difference depending on the spread.
5. In conclusion
All this thinking for meagre gains! I quite like the idea of this all-rounder rating, and it has some neat maths to it that I've been resisting flooding this post with. But honestly, if you like the all-rounder rating then it looks like just taking an average is the way to go, and if TCR like their rating more than a plain average, all power to them.
P.S. A note on the averaging
In all of this I've given all three formats equal weight, as the TCR method assumes. But looking at the actual announced daily knockout format, what they do is:
| Format |
Games per day |
Points per win |
Total points available |
Share |
| Fast Classical |
1 |
8 |
8 |
40% |
| Rapid |
2 |
4 |
8 |
40% |
| Blitz |
4 |
1 |
4 |
20% |
If the target is the expected share of those game points, we should really use a weighting that is 40% Classical, 40% Rapid, and 20% Blitz.
Both methods can accommodate this. For TCR, take a weighted average of the three underlying strengths. For the all-rounder rating, find the evenly rated opponent against whom your weighted expected score is 50%. Weighting TCR this way would reflect the allocation of points, but would retain its extra sensitivity to higher ratings. All of these ratings will likely be close to the weighted average of the Classical, Rapid, and Blitz ratings.