I'm building a chess app which will have a Elo rating system.

Would it be more appropriate to update player's rating based on their rating at the beginning of the game, or their rating at the end of the game?

For example, Player A (1600) plays against Player B (1700), and it took a week to complete the game (correspondence chess). During this week Player A won some other games and their rating become 1650. Player B lost some games, and their rating become 1680. Now, the game between Player A and Player B ends.

Should I update the ratings as if:

  1. 1600 played against 1700, or
  2. 1650 payed against 1680, or
  3. something else

What would be more appropriate, and why?

5 Answers 5


Remember what a rating is: it's an estimate of the relative strengths of the players. The more information you include in your rating calculation, the more accurate it will be and the faster it will converge. At the end of an OTB game, the only new information you have is the result of that game. However, on a correspondence site, you also have the information from both players' results while the game was in progress. Why would you not want to use that information?

To update the players' ratings based on their ratings at the start of the game is to say that you think their ratings at the start of the game are a better estimate of their relative strength than their ratings at the end of the game. In other words, it's saying that you believe the ratings are becoming less accurate with time. If that's what you believe, you shouldn't update them at all!

  • On the other hand, it's possible for a player to significantly improve after the critical part of the game. If I'm rated 1300 and blunder a few pawns in the opening of a game that becomes very drawn out, maybe 8 months later I'm legitimately 200 points stronger and my rating reflects it (due to some games that resolved quicker).
    – D M
    Commented Feb 10, 2019 at 22:18
  • @DM That's not "on the other hand" -- it's exactly the point I'm making. In correspondence, you should update based on the players' rating at the moment the game ended. Commented Feb 11, 2019 at 10:36
  • 1
    No, my point was, from my opponent's perspective, he is getting credit for beating a 1500, when all he really did was take advantage of the blunders of a 1300. (Not that I'm saying the rating system needs to make a correction for this; any correction would probably just add more error.)
    – D M
    Commented Feb 11, 2019 at 12:18
  • @DM Ah, I see what you're saying, now. Fair point. Commented Feb 11, 2019 at 12:24

I would use option 2 for a variety of reasons. Maybe the most important one is the potential for abuse of option 1.

Two players start out at the same level in the USCF or FIDE system. They play a long match with one player scoring the vast majority of the points. Eventually the ratings will stabilize at about the loser being (start-400) and the winner being (start+400).

Under option 1, a 2000 player could start 100 games against a similarly-rated friend, win them all, and suddenly be the highest rated person on the site at 3000+. This will, among other things, make your site look bad. The player that lost will fall below 1000, but those points are easily gained back, particularly if he starts 100 games against 1200 players.

Option 2 is much more stable. It is used by all major correspondence sites that I know of (chess.com, redhotpawn etc.)

Edit: More scenarios. An 1800 player accepts the challenge of an 800. A month later, the former 800 is at 1700 and trouncing the 1800. When the 1800 resigns, he loses the maximum rather than what he would have lost against his opponent's true strength.

A 2000-strength player, through some black magic, acquires a rating of 1200. They start a bunch of games against 1400s and win close to all of them. The 1400s will be universally disenchanted at having to lose 20+ points to such a scoundrel.

  • If this behavior was allowed in a site, that wouldn't be a real chess site. If I saw this behavior in my site, I would limit his ability to play games with the same player to 2 or less. That is cheating. Not real gaming.
    – MikhailTal
    Commented Aug 13, 2014 at 15:41
  • If the site becomes big enough, this kind of thing will start happening every single day-if not more frequently. Manual policing isn't a viable solution.
    – Cleveland
    Commented Aug 13, 2014 at 15:43
  • Total limiting. I don't see how a site can allow people to play 100 games to the same player in the first place.
    – MikhailTal
    Commented Aug 13, 2014 at 15:44
  • 1
    I would be fairly annoyed at a site that didn't let me play a match against a friend because they chose a bad ratings algorithm.
    – Cleveland
    Commented Aug 13, 2014 at 15:46
  • I would be fairly annoyed by that site too, but 100 games in the same time?
    – MikhailTal
    Commented Aug 13, 2014 at 15:51

Neither is "correct". You need to consider the effects of any strategy, and determine what's right for your app. Personally I think you should always plan for your app to be popular--and once it's popular, people will attempt to game whatever system you've put in place. So you need to consider the abuse cases in each scenario, as well as how the system serves both new and established users, and decide what factors of the system are most important to you.

Of course within each system, you've got a wide range of options for the actual implementation, which can help to enhance or mitigate the factors laid out below, but I'm going to skip all that since it's not what you asked about.

I think the question as it stands is a little too opinion-based to be answered definitively, so all I'm going to do here is lay out some of the major points of each system. Like I said, it's up to you to decide what's important to you and your user base.

Calculating Using Starting Ratings

In this system, the main abuse case you need to look at is someone starting a hundred games at once against a dummy account (or several), to win them all and inflate their rating. This is fairly detectable and easy to engineer against (in fact the Elo system already contains some restrictions on such manipulation), but you do need to watch out for it.

The downside to this system is that new players will have very unstable ratings for a time, and take a while to reach their true rating. Most systems already deal with this by vastly increasing the K-factor for new players, so that their ratings change very quickly for their first 20-50 games or so.

On the other hand, say you have an established player with a high rating (say 1900), up against a new player with a lower, provisional rating (say 1200). If the new player's true strength is actually 2000+, the established player may lose many more points for a loss (1900 vs 1200) than he would have if the score was calculated using the most recent scores. Of course, if the new player is only playing against high-rated players, someone is going to have to foot the bill no matter what system you're using.

  • Easy to spot potential abuse
  • Slow rating convergence

Calculating Using Current Ratings

In the most-recent-ratings system, the main abuse case is likely to be people dragging out games or prematurely resigning them in order to take advantage of dips or spikes in their or their opponent's ratings. For instance, if I've been on a losing streak, so that I'm below my true average rating, this system actually gives me an incentive to immediately resign every other game where I'm not winning, because I'll lose fewer points now, by resigning them all at once while my rating is already low, than I would if I waited until my rating recovered. Alternately, if my opponent's rating drops while the game progresses, I have a strong incentive to make the game last as long as possible in real time, no matter whether I'm winning or losing--because either way, when my opponent's rating recovers, I'll come off better. This sort of gaming of the system is much harder to detect conclusively.

However, as others have pointed out, the individual results are more accurate, and people's ratings therefore converge faster. You'll also lessen the effect of the game played by a provisional 1200 against an established 1900, though personally I think this is not at all a big deal--established players, in my experience, don't care so much about temporary rating losses as newer players do.

  • Hard to spot potential abuse
  • Faster rating convergence
  • "e.g. when a game ends, calculate new ratings rather than calculating a rating change to apply" this sounds good. How do you propose to calculate the new ratings?
    – Cleveland
    Commented Aug 13, 2014 at 16:04
  • @cleveland Of course you can't implement raw ratings directly; that's the whole problem: otherwise you could have people losing points when they win. So instead, you can use the "raw" elo to limit the amount gained or lost, or even just use it as an indicator of possible abuse. I'll expand the answer a bit when I'm not on my mobile. Commented Aug 13, 2014 at 16:29
  • 1
    This is the wrong approach. Why shouldn't a new user be able to start a large number of games? If a legitimate new user does start, say, 20 simultaneous games, why should the rating change at the end of the 20th of those games be based on the bogus assumption they're at the default level, rather than on the valuable information that they won X and drew Y of the first 19 games? Running a rating system this way means that ratings converge very slowly because information is deliberately omitted from the calculation. Commented Aug 13, 2014 at 20:55
  • And your prioritization makes no sense. You're recommending a scheme that makes the ratings of new players wildly inaccurate (by tens or hundreds of points) because the alternative is to allow established players to game the system for a couple of points here and there. Also, note that, with Elo, you cannot possibly lose points by winning a game. Commented Aug 13, 2014 at 20:57
  • @David You seem to have misunderstood the intent of my answer, which is probably my fault for posting on a mobile and not providing as much detail as I should have. I will attempt to clarify this answer this evening. Commented Aug 14, 2014 at 0:43

If you were modeling after the USCF system, you would be looking at scenario 2. 1650 played against 1680. I experienced this myself in the USCF rating system wherein I played a 10 week league tournament with the rating at 1953. And I played a Wednesday night game in my area around Week 6 and lost the game and my rating became 1929. After the 10th week, my USCF rating showed my increase from 1929=>1995 and not 1953=>x and x=>y.


The most correct way would be to use the starting rating. Why? Because that was the rating they agreed to start the match upon, and knowing what they would win or lose made them decide to start it, after the evaluated the risk vs reward. So I think the starting rating of both players is the best solution.

  • 2
    OTOH, to discourage rating-hunting and encourage enjoying chess, the same argument could be applied in the opposite way. ;)
    – JiK
    Commented Aug 13, 2014 at 15:28
  • 4
    Ratings are not coins that are traded between players: they're attempts to measure the players' relative strengths. Commented Aug 13, 2014 at 20:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.