user3632: 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:

1600 played against 1700, or
1650 payed against 1680, or
something else

What would be more appropriate, and why?

user3535: 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. 

user3270: 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.

user1201: 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


user2789: 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!

3632: <p>I'm building a chess app which will have a Elo rating system.</p>

<p>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?</p>

<p>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.</p>

<p>Should I update the ratings as if:</p>

<ol>
<li>1600 played against 1700, or</li>
<li>1650 payed against 1680, or</li>
<li>something else</li>
</ol>

<p>What would be more appropriate, and why?</p>
 3535: <p>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. </p>
 3270: <p>I would use option 2 for a variety of reasons. Maybe the most important one is the potential for abuse of option 1.</p>

<p>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).</p>

<p>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.</p>

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

<p>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.</p>

<p>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.</p>
 1201: <p>Neither is "correct". You need to consider the effects of any strategy, and determine what's right <em>for your app</em>. Personally I think you should always plan for your app to be popular--and once it's popular, people <em>will</em> 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.</p>

<p>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.</p>

<p>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.</p>

<hr>

<h2>Calculating Using Starting Ratings</h2>

<p>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.</p>

<p>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 <a href="http://en.wikipedia.org/wiki/Elo_rating_system#Most_accurate_K-factor" rel="nofollow">K-factor</a> for new players, so that their ratings change very quickly for their first 20-50 games or so.</p>

<p>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, <em>someone</em> is going to have to foot the bill no matter what system you're using.</p>

<ul>
<li>Easy to spot potential abuse</li>
<li>Slow rating convergence</li>
</ul>

<hr>

<h2>Calculating Using Current Ratings</h2>

<p>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 <em>incentive</em> to immediately resign every other game where I'm not <em>winning</em>, 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 <em>as long as possible</em> 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.</p>

<p>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.</p>

<ul>
<li>Hard to spot potential abuse</li>
<li>Faster rating convergence</li>
</ul>
 2789: <p>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?</p>

<p>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 <em>less</em> accurate with time. If that's what you believe, you shouldn't update them at all!</p>
