When you connect to this website, you send your IP address and sometimes some cookies. You may also give us personal identifying information, such as your name and contact information. All this data is used to securely provide you with the services that you request. We encourage you to review our privacy policy to make sure that you understand how your data is managed, and to contact us if you have any questions. View Privacy Policy

Difference between revisions of "Initial rating"

From NASPAWiki

You are viewing a condensed mobile version of this NASPA webpage.
Switch to full version.

(New page: Here is how ratings are computed for newcomers (players who do not have a previous rating) at a tournament. Questions should be directed to John Chew. *'''For each''' rated player ''r...)
 
(added three more explanations)
Line 1: Line 1:
Here is how ratings are computed for newcomers (players who do not
+
Here are four explanations of how ratings are computed for newcomers (players who do not
have a previous rating) at a tournament. Questions should
+
have a previous rating) at a tournament,
 +
in order of increasing accuracy and technical detail. Questions should
 
be directed to [[John Chew]].
 
be directed to [[John Chew]].
 +
 +
== Overview ==
 +
 +
A newcomer’s initial rating is the rating s/he
 +
would have had to have had in order for his/her rating
 +
to have remained unchanged after their first tournament.
 +
 +
== Summary ==
 +
 +
If there is only one newcomer in a division,
 +
then the newcomer receives an initial rating
 +
equal to their performance rating (the rating
 +
the newcomer would have had to have had before
 +
the event in order for it to have remained
 +
unchanged), except that an initial rating may
 +
never be less than 500, and it may
 +
not exceed a newcomer’s strongest opponent’s
 +
rating by more than 400 times the newcomer’s
 +
winning percentage.
 +
 +
If there is more than one newcomer, then they are
 +
assigned provisional ratings equal to their average
 +
opponent rating, which are then repeatedly replaced
 +
by their performance ratings until the ratings
 +
stablise.
 +
 +
== Pseudocode ==
  
 
*'''For each''' rated player ''rp''
 
*'''For each''' rated player ''rp''
Line 39: Line 67:
 
**'''For each''' newcomer ''nc''
 
**'''For each''' newcomer ''nc''
 
***'''Set''' ''nc''’s ''new rating'' to the mean of ''nc''’s last 50 ''iterative ratings''
 
***'''Set''' ''nc''’s ''new rating'' to the mean of ''nc''’s last 50 ''iterative ratings''
 +
 +
== Reference implementation ==
 +
 +
The reference implementation of the rating algorithm is
 +
in Perl and can be found as part of the
 +
[http://www.math.utoronto.ca/jjchew/software/tsh/lib/perl/Ratings/Elo.pm tsh software distribution]
 +
in the Ratings::Elo::RateNewcomersCorrectly() method.

Revision as of 17:46, 14 March 2010

Here are four explanations of how ratings are computed for newcomers (players who do not have a previous rating) at a tournament, in order of increasing accuracy and technical detail. Questions should be directed to John Chew.

Overview

A newcomer’s initial rating is the rating s/he would have had to have had in order for his/her rating to have remained unchanged after their first tournament.

Summary

If there is only one newcomer in a division, then the newcomer receives an initial rating equal to their performance rating (the rating the newcomer would have had to have had before the event in order for it to have remained unchanged), except that an initial rating may never be less than 500, and it may not exceed a newcomer’s strongest opponent’s rating by more than 400 times the newcomer’s winning percentage.

If there is more than one newcomer, then they are assigned provisional ratings equal to their average opponent rating, which are then repeatedly replaced by their performance ratings until the ratings stablise.

Pseudocode

  • For each rated player rp
    • Set the iterative rating for rp to their pre-event rating
  • For each newcomer nc
    • Set the iterative rating for nc to the mean of their rated opponent ratings, if any, else 1500
    • Set nc’s earned wins to the number of games won by nc at this event not including byes or forfeits
    • Set nc’s rated games to the number of games played by nc at this event not including byes or forfeits
    • Define a function IPRnc(r) as follows
      • Set earned_wins = nc’s earned wins
      • If earned_wins = 0
        • then Set earned_wins to 5% * nc’s rated games
      • else if earned_wins = rated_games
        • then Set earned_wins to 95% * nc’s rated games
      • Set excess_wins = (sum of expected wins of a player rated r vs. opponents whose ratings are the iterative ratings of the opponents of nc) - earned_wins
      • Return excess_wins
  • Repeat 50 times
    • For each newcomer nc
      • Perform a binary search for an integer value r in [0,3000] stopping when the search range is less than or equal to one, setting the low (high) end of the range equal to the floor of the middle of the range when IPRnc(r) is <0 (≥0)
      • If r < 500
        • then Set r to 500
      • If nc has played a rated opponent
        • then
          • Set maximum_rating to (greatest pre-event rating among nc’s rated opponents) + 400 * nc’s earned wins / nc’s rated games
          • if r > maximum_rating
            • then Set r to maximum_rating
      • Set nc’s next rating to r
    • For each newcomer nc
      • Set nc’s iterative rating to nc’s next rating
    • If all iterative ratings were equal to next ratings
      • then stop repeating now without continuing to the 50th iteration
  • If fewer than 50 iterations were required
    • For each newcomer nc
      • Set nc’s new rating to nc’s iterative rating
  • Else
    • Perform 50 more iterations
    • For each newcomer nc
      • Set nc’s new rating to the mean of nc’s last 50 iterative ratings

Reference implementation

The reference implementation of the rating algorithm is in Perl and can be found as part of the tsh software distribution in the Ratings::Elo::RateNewcomersCorrectly() method.