How to update Elo rating? 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?
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!