The US Chess Rating system
Mark E. Glickman
Harvard University

Thomas Doan
EstimaSeptember 2, 2020
The following algorithm is the procedure to rate US Chess events. The procedure applies tosix separate rating systems, three of which are for over-the-board (OTB) events, and three of
which are for online (OL) events : the Blitz system, Quick Chess (QC) system, the Regularsystem, the online Blitz system, the online Quick system, and the online Regular system.1
In this document, the systems will be abbreviated to OTBB/OTBQ/OTBR for the OTB
systems and OLB/OLQ/OLR for the on-line systems. The formulas apply to each systemseparately. Note that this document describes only how ratings are computed, and does not
set the rules that govern their use.

1

Structure of the Rating Algorithm

Before an event, a player is either unrated in a particular rating system, or has a rating basedon N games. Ratings are stored as floating point values, such as 1643.759 and 1431.034.
Official ratings are expressed as rounded to the nearest whole number (1644 and 1431 in theabove example). A player’s rating is termed established if it is based upon more than 25
games. Assume the player competes in m games during the event. Post-event ratings arecomputed in a sequence of five steps:• The first step sets temporary initial ratings for unrated players.
• The second step calculates an “effective” number of games played by each player.
1

For a time control, write mm as the total “main time” in minutes, and ss as the delay or increment inseconds. The two Blitz systems apply to events with time controls where 5 ≤ mm + ss ≤ 10, such as G/5d0,
G/3+2 or G/7d3. The two QC systems apply to events with time controls where 10 < mm + ss < 30, suchas G/20+5 or G/26d3. The OTBQ ratings also apply to time controls through mm+ss ≤ 65, which overlaps
with the OTBR range (“dual rating”). The two Regular systems apply to time controls where mm+ss ≥ 30.

1• The third step calculates temporary estimates of ratings for certain unrated players
only to be used when rating their opponents on the subsequent step.
• The fourth step then calculates intermediate ratings for all players.
• The fifth step uses these intermediate ratings from the previous step as estimates of
opponents’ strengths to calculate final post-event ratings.
The calculations are carried out in the following manner:

Step 1: Set initial ratings for unrated players.
Initial rating estimates are set for all unrated players in an event. The purpose of
setting initial rating estimates for unrated players is (1) to be able to incorporate
information about a game result against an unrated player, and (2) to choose amongequally plausible ratings during a rating calculation for an unrated player (see thedetails of the “special” rating formulas in Section 4.1).
The details of determining an initial rating for an unrated player are described in
Section 2.
Step 2: Calculate the “effective” number of games played by each player.
This number, which is typically less than the actual number of games played, reflects
the uncertainty in one’s rating, and is substantially smaller especially when the player’s
rating is low. This value is used in the “special” and “standard” rating calculations.
See Section 3 for the details of the computation.
Step 3: Calculate a first rating estimate for each unrated player for whom Step 1 gives
N = 0. For these players, use the “special” rating formula (see Section 4.1), letting
R0 be the initialized rating. However, for only this step in the computation, set the
number of effective games for these players to 1 (this is done to properly “center” theratings when most or all of the players are previously unrated).
• If an opponent of the unrated player has a pre-event rating, use this rating in therating formula.
• If an opponent of the unrated player is also unrated, then use the initialized ratingfrom Step 1.
If the resulting rating from Step 3 for the unrated player is less than 100, then change
the rating to 100.

2

Step 4: For every player, calculate an intermediate rating with the appropriate rating formula.
• If a player’s rating R0 from Step 1 is based upon 8 or fewer games (N ≤ 8), or
if a player’s game outcomes in all previous events have been either all wins or all
losses, then use the “special” rating formula (see Section 4.1), with “prior” rating
R0 .
• If a player’s rating R0 from Step 1 is based upon more than 8 games (N > 8),
and has not been either all wins or all losses, use the “standard” rating formula(see Section 4.2). Note that the standard formula is used even if the “effective”
number of games from Step 2 is less than or equal to 8.
In the calculations, use the opponents’ pre-event ratings in the computation (for playerswith pre-event ratings). For unrated opponents who are assigned N = 0 in Step 1, use
the results of Step 3 for their ratings. For unrated opponents who are assigned N > 0
in Step 1, use their assigned rating from Step 1.
If the resulting rating from Step 4 is less than 100, then change the rating to 100.
Step 5: Repeat the calculations from Step 4 for every player, again using a player’s preevent rating (or the assigned ratings from Step 1 for unrated players) to perform thecalculation, but using the results of Step 4 for the opponents’ ratings. If the resulting
rating from Step 5 is less than 100, then change the rating to 100.

These five steps result in the new set of post-event ratings for all players.

2

Initializing Ratings

If a player has no rating under a given system, as many as seven other sources may provide
rating information: the five other US Chess ratings, FIDE (Section 2.1) and cfc (Canadian,
Section 2.2). These may vary in quality because of the number of games on which they
are based, the age of the ratings and general quality of the rating system or its conversion.
A weighted average of these will be used as an initial estimate of the player’s rating—theweights will be expressed in terms of the number of “games” worth of information the rating
provides. If none of these ratings exist, the initial rating will be the age-based rating (Section2.3) with the tournament games having been played, N , set to 0.

3

Suppose K ≥ 1 ratings from the alternative sources do exist for the individual. Let Xk ,k = 1, . . . , K be the (converted) rating from source k. The following computations arecarried out for each k:

1. Determine the Game Factor, Gk . For the OTBR rating, this is (at most) 10. For
initializing an OLB rating, this is (at most) 10 from an OTBB rating. For initializing
OLQ rating, this is (at most) 10 from an OTBQ rating. For all other US Chess
ratings, Gk is (at most) 5. The Game Factor for a rating system can be no higher than
the number of games actually credited under the system. For instance, if someone
is credited with 7 games under OTBR, the Game Factor on OTBR is reduced to 7.
The Game Factors for converted FIDE and CFC ratings are shown in the sections
describing the conversions.
2. Determine the staleness of the rating, Dk — the number of days from when that rating
was computed to the end date of the tournament now being rated.
3. Determine Pk , the age-based initial rating (Section 2.3) that would have been computedat the time of that rating. Now compute
Zk = min (6, (Xk − Pk )/350) .
A large positive value of Zk means that the player was unusually strong for his/herage; a large negative number means the player was unusually weak for his/her age.
4. Determine the Staleness Factor, Sk , for rating source k:
Sk = exp (.06 (Zk − 6) × Dk /365.25) .
This is used to reduce the weight put on a rating due to its staleness, where the weight
depreciates faster with staleness for lower rated players.
5. The Adjusted Weight, Wk , on the rating is the product of the Game Factor and theStaleness Factor : Wk = Gk × Sk .
The initial rating for the player in the system being rated is the weighted average of theavailable ratings using the Adjusted Weights:
PK

Wk Xk
k=1 Wkk=1
R0 = PK

4

rounded to the nearest integer. The value of N for the rating is set to the sum of the
Adjusted Weights, but capped at 10:
N = min 10,

K
X

!

Wk

k=1

rounded up to the nearest integer (so it will always be at least 1, but can be no more than
10).
Example: A player born July 1, 2000 plays in an OLB tournament ending Sept 1, 2020.
She has established OTBR, OTBQ and OTBB ratings. The Game Factors for these threesystems are 10, 5 and 10 respectively—the last because an OLB rating is being initialized andthat is the Blitz rating for OTB. The calculations (with rounding—calculations are actually
done to full precision) are:Source
Xk
Date
Gk Dk
Pk
Zk
Sk Wk
OT BR (k = 1) 1759 2018−03−25 10 891 886.52 2.49 0.60 5.98
OT BQ (k = 2) 1643 2018−01−13 5 962 876.80 2.19 0.55 2.74
OT BB (k = 3) 1658 2016−07−16 10 1508 802.05 2.45 0.41 4.15
The interpretation is that the OTBR rating is treated as if it were 5.98 games of information;
the OTBQ as 2.74 and the OTBB as 4.15. The initialized rating is given by
R0 = (5.98 × 1759 + 2.74 × 1643 + 4.15 × 1658)/(5.98 + 2.74 + 4.15) ≈ 1702,
and where N = 5.98 + 2.74 + 4.15 = 12.87 rounded down to the maximum of 10.

2.1

FIDE conversions

If an unrated player has a FIDE rating, use a converted rating according to the following
formula:(180 + 0.94 × FIDE if FIDE ≤ 2000
USrating =20 + 1.02 × FIDE if FIDE > 2000
This will be treated as having a Game Factor of 10 if the FIDE rating is greater than 2000,
and a Game Factor of 5 if the FIDE rating is less than or equal to 2000.

5

2.2

CFC conversions

If an unrated player is a Canadian resident and has a CFC rating 2 , use a converted rating
according to the following formula:(

USrating =CFC − 90 if CFC ≤ 1500
1.1 × CFC − 240 if CFC > 1500

This will be treated as having a Game Factor of 5.

2.3

Age-Based ratings

To determine an age-based initial rating, use the following procedure. Define a player’s age(in years) to be
Age = (Tournament End Date − Birth Date)/365.25.
The formula for an initial rating based on age is given by


 100

if Age < 2
USrating =  50 × Age if 2 ≤ Age ≤ 26
1300
if Age > 26
If an unrated player does not provide a birth date or if the “Age” is calculated to be lessthan 3 years old (which is almost certainly an error), then
• If the player is inferred to be an adult (e.g., through an appropriate US Chess membership type), they are treated as a 26 year old (R0 = 1300)• Otherwise, they are treated as a 15 year old (R0 = 750).
2

Please note that the US Chess does not maintain a historical database of CFC ratings or a cross-index
between US Chess IDs and CFC IDs, so tournament directors are requested to alert the US Chess ratings
department when any of their players have no US Chess rating but do have a CFC rating, as those conversions
have to be performed manually.

6

3

Effective number of games

This section describes the computation of the “effective number of games” a player has
previously played. This quantity is used in the rating calculations described in Sections 4.1
and 4.2. The effective number of games conveys the approximate reliability of a rating on
the scale of a game count.
For each player, let N be the number of tournament games the player has competed, or, forunrated players, the value assigned from Step 1 of the algorithm. Let R0 be the player’s
pre-event rating, or, for unrated players, the initialized rating assigned from Step 1. Let
(

N∗ =

q

50/ 0.662 + 0.00000739(2569 − R0 )2 if R0 ≤ 2355
50.0 if R0 > 2355

(1)

Define the “effective” number of games, N 0 , to be the smaller of N and N ∗ . As a result of
the formula, N 0 can be no larger than 50, and it will usually be less, especially for players
who have not competed in many tournament games. Note that N 0 is a temporary variablein the computation and is not saved after an event is rated.
Example: Suppose a player’s pre-event rating is R0 = 1700 based on N = 30 games. Then
according to the formula above,q√
N ∗ = 50/ 0.662 + 0.00000739(2569 − 1700)2 = 50/ 6.24 = 20.0

Consequently, the value of N 0 is the smaller of N = 30 and N ∗ = 20.0, which is therefore
N 0 = 20.0. So the effective number of games for the player in this example is N 0 = 20.0.

4Main rating algorithm

The specific rating algorithm used for a player mainly depends on the number of rated games
previously played. For eight or fewer games, the “special” rating algorithm applies (this used
to be called the “provisional” rating algorithm). For more than eight games, the “standard”
rating algorithm (previously the “established” rating algorithm) applies. We describe indetail each of these algorithms.

7

4.1

Special rating formulaThis procedure is to be used for players with N ≤ 8. It also applies to players who have had
either all wins or all losses in all previous rated games, regardless of the value of N .
The algorithm described here extends the old provisional rating formula by ensuring thata rating does not decrease from wins or increase from losses. In effect, the algorithm finds
the rating at which the attained score for the player equals the sum of expected scores,
with expected scores following the “provisional winning expectancy” formula below. For
most situations, the resulting rating will be identical to the old provisional rating formula.
Instances that will result in different ratings are when certain opponents have ratings thatare far from the player’s initial rating. The computation to determine the “special” rating
is iterative, and is implemented via a linear programming algorithm.
Define the “provisional winning expectancy,” PWe, between a player rated R and his/heri-th opponent rated Ri to be 0

if R ≤ Ri − 400
PWe(R, Ri ) = 0.5 + (R − Ri )/800 if Ri − 400 < R < Ri + 400

1
if R ≥ Ri + 400
Let R0 be the “prior” rating of a player (either the pre-event rating for rated players, or the
Step 1 initialized rating for unrated players), and N 0 be the effective number of games. Also
let m be the number of games in the current event, and let S be the total score out of them games (counting each win as 1, each loss as 0, and each draw as 0.5).
The variables R00 and S 0 , which are the adjusted initial rating and the adjusted score, respectively, are used in the special rating procedure. If a player has competed previously, andall the player’s games were wins, then let
R00 = R0 − 400
S0 = S + N 0
If a player has competed previously, and all the player’s games were losses, then let
R00 = R0 + 400
S0 = S
Otherwise, let
R00 = R08

S0 = S +N0
2

The objective functionf (R) = N

0

× PWe(R, R00 ) +m
X!

PWe(R, Ri ) − S 0

i=1

which is the difference between the sum of provisional winning expectancies and the actual
attained score when a player is rated R, is equal to 0 at the appropriate rating. The goal,
then, is to determine the value of R such that f (R) = 0 within reasonable tolerance. The
procedure to find R is iterative, and is described as follows.
Let ε = 10−7 be a tolerance to detect values different from zero. Also, let x0 = R00 − 400,y0 = R00 + 400, and, for i = 1, . . . , m, xi = Ri − 400, yi = Ri + 400. Denote the unique xi
and yi , i = 0, . . . , m, as the collection
Sz = {z1 , z2 , . . . , zQ }If there are no duplicates, then Q = 2m + 2. These Q values are the “knots” of the functionf (essentially the value where the function “bends” abruptly).

1. CalculateM=

N 0 R00 +Pm

i=1 Ri + 400(2S − m)
N0 + mThis is the first estimate of the special rating (in the actual implemented rating program, M is set to R00 , but the final result will be the same – the current description
results in a slightly more efficient algorithm).
2. If f (M ) > ε, then(a) Let za be the largest value in Sz for which M > za .
(b) If |f (M ) − f (za )| < , then set M ← za and go back to 2. Otherwise, calculate
M − zaM = M − f (M )f (M ) − f (za )!

∗• If M ∗ < za , then set M ← za , and go back to 2.
• If za ≤ M ∗ < M , then set M ← M ∗ , and go back to 2.
93. If f (M ) < −ε, then(a) Let zb be the smallest value in Sz for which M < zb .
(b) If |f (zb ) − f (M )| < , then set M ← zb and go back to 3. Otherwise, calculate
zb − M
M = M − f (M )f (zb ) − f (M )!

∗• If M ∗ > zb , then set M ← zb , and go back to 3.
• If M < M ∗ ≤ zb , then set M ← M ∗ , and go back to 3.
4. If |f (M )| ≤ ε, then let p be the number of i, i = 1, . . . , m for which|M − Ri | ≤ 400.
Additionally, if |M − R00 | ≤ 400, set p ← p + 1.
(a) If p > 0, then exit.
(b) If p = 0, then let za be the largest value in Sz and zb be the smallest value in Sz
for which za < M < zb . If
• za ≤ R0 ≤ zb , then set M ← R0 .
• R0 < za , then set M ← za .
• R0 > zb , then set M ← zb .
If the final value of M is greater than 2700, the value is changed to 2700. The resulting valueof M is the rating produced by the “special” rating algorithm.

4.2

Standard rating formulaThis algorithm is to be used for players with N > 8 who have not had either all wins or all
losses in every previous rated game.
Define the “Standard winning expectancy,” We, between a player rated R and his/her i-th
opponent rated Ri to be
1
We(R, Ri ) =1 + 10−(R−Ri )/400
K-factor:
10

The value of K, which used to take on the values 32, 24 or 16, depending only on a player’s
pre-event rating, is now defined as (with the exception noted below)
K=

800
,
N0 + mwhere N 0 is the effective number of games, and m is the number of games the player completed
in the event. The following are example values of K for particular values of N 0 and m.
N 0 m Value of K
6 4
80
6 6
66.67
50
6 10
20 4
33.33
20 6
30.77
20 10
26.67
14.81
50 4
50 6
14.29
13.33
50 10

In updating the OTBR rating, if the player’s rating R is greater than 2200 and the time
control of an event is between mm + ss ≥ 30 and mm + ss ≤ 65 (i.e., dual-rated - seefootnote 1), the following formula applies for K:(

K=

800(6.5 − 0.0025R)/(N 0 + m) if 2200 < R < 2500
200/(N 0 + m) if R ≥ 2500

where N 0 is the effective number of games, and m is the number of games the player has
completed in the event.
Rating updates:
If m < 3, or if the player competes against any opponent more than twice, the “standard”
rating formula that results in Rs is given by
Rs = R0 + K(S − E)
where the player scores a total of S points (1 for each win, 0 for each loss, and 0.5 for eachPdraw), and where the total winning expectancy E = m
i=1 We(R0 , Ri ).

11

If both m ≥ 3 and the player competes against no player more than twice, then the “standard” rating formula that results in Rs is given by√
Rs = R0 + K(S − E) + max(0, K(S − E) − B m0 )where m0 = max(m, 4) (3-round events are treated as 4-round events when computing thisextra term), and B is the bonus multiplier (B = 14 effective May 1, 2017). The quantity√
max(0, K(S − E) − B m0 )is, in effect, a bonus amount for a player who performs unusually better than expected.
The resulting value of Rs is the rating produced by the “standard” rating algorithm.

5

Rating floors

The absolute rating floor for all ratings is 100. No rating can be lower than the absolute
rating floor.
For OTB ratings, an individual’s personal absolute rating floor is calculated as
AF = min(100 + 4NW + 2ND + NR , 150)
where AF is the player’s absolute floor, NW is the number of rated games won, ND is thenumber of rated games drawn, and NR is the number of events in which the player completed
three rated games. The formula above specifies that a player’s absolute floor can never behigher than 150. As an example, if a player has earned 3 wins, 1 draw, and has competed
in a total of 10 events of at least three ratable games, then the player’s absolute floor is
AF = 100 + 4(3) + 2(1) + 10 = 124.
A player with an established rating has a rating floor possibly higher than the absolute floor.
Higher rating floors exist at 1200, 1300, 1400, . . ., 2100. A player’s rating floor is calculated
by subtracting 200 points from the highest attained established rating after rounding to thenearest integer, and then using the floor at or just below. For example, if an establishedplayer’s highest rating was 1941, then subtracting 200 yields 1741, and the floor just below
is 1700. Thus the player’s rating cannot go below 1700. If a player’s highest establishedrating were 1999.51, then subtracting 200 from the integer-rounded rating of 2000 yields
1800 which is the player’s floor. If an established player’s highest rating was 1388, then12

subtracting 200 yields 1188, and the next lowest floor is the player’s absolute floor, which is
this player’s current floor.
For OTBR ratings only, a player who earns the original Life Master (OLM) title, which occurs
when a player keeps an established rating above 2200 for 300 (not necessarily consecutive)
rated games, will obtain a rating floor of 2200. Achievement of other US Chess titles do not
result in rating floors.
A player’s rating floor can also change if he or she wins a large cash prize. If a player wins
$4,000 or more in an under-2000 context, the rating floor is set at the first 100-point level(up to 2000) which would make the player no longer eligible for that section or prize. For
example, if a player wins $4,000 in an under-1800 section of a tournament, then the player’s
rating floor would be 1800. Floors based on cash prizes can be at any 100-point level, notjust the ones above based on peak rating.

6

Updating US Chess ratings from foreign FIDE events

The US Chess regularly updates ratings based on performances in FIDE-rated non-US Chess
events to obtain more accurate ratings for its players. The following describes the procedureused to update US Chess ratings based on performance in FIDE events. Only players withan established US Chess regular rating are eligible for adjustments based on foreign FIDE
events.
• Only current US Chess members are eligible for FIDE adjustments. Each time a FIDE
rating list is produced, the US Chess office identifies all players who appear with a“USA flag” (usually US residents) and who have played at least one FIDE-rated gamein the set of events/tournaments that are included in producing the rating list. The
office may also include US residents who are not players with a “USA flag.” Memberswith a FIDE rating of at least 2200 with a “USA flag” will automatically have their US
Chess rating updated for their play in foreign FIDE rated events. US Chess members
who are rated under 2200 FIDE or who have no FIDE rating must opt-in to this process
in advance of the event by contacting the US Chess office. Once a player has opted-in,that player cannot opt-out without the approval of the US Chess Executive Director.
• For each identified US player, all the player’s opponents are identified along with their
FIDE ratings. Opponents who do not have a FIDE rating are ignored.

13• The opponents’ FIDE ratings are converted to the US Chess scale using the conversion
described in Section 2.1. If an event is known to be a youth event, such as the World
Youth Championships, then the following conversion is used for all opponents:(

USrating =560 + 0.76 × FIDE if FIDE ≤ 2000
80 + 1.0 × FIDE if FIDE > 2000

• The standard rating formula (with bonus) is then applied to update the player’s US
Chess rating based on the opponents’ converted ratings. The standard formula isapplied only once, as opposed to twice in the usual algorithm.

7

Miscellaneous details

The following is a list of miscellaneous details of the rating system.
• All games played in US Chess-rated events are rated, including games decided bytime-forfeit, games decided when a player fails to appear for resumption after an adjournment, and games played by contestants who subsequently withdraw or are notallowed to continue. Games in which one player makes no move are not rated.
• The rating calculations apply separately to the Regular, QC, Blitz, online Regular,
online QC and online Blitz chess rating systems. Other than the use of imputing
initial ratings for unrated players, there is no formal connection among these systems.
• After an event, each players’ value of N is incremented by m, the number of games
the player competed in the event.
• Individual matches are rated with the following restrictions:
1. Both players involved must have an established published rating, with the difference in ratings not to exceed 400 points.
2. The maximum rating change in a match is 50 points; the maximum net ratingchange in 180 days due to match play is 100 points; and the maximum net ratingchange in 3 years due to match play is 200 points.
3. The bonus formula does not apply to matches.
4. Rating floors are not automatically in effect in matches. Instead, if a player has
a match result that would lower the rating to below that player’s floor, this will14

be treated as a request to have that floor lowered by 100 points. If the US Chess
office grants this request, the rating will drop below the old floor and the newfloor will be 100 points below the old floor.
• Ratings are stored as floating point values, and not as integers. All the rating computations assume the input ratings are floating point. However, official ratings are
expressed rounded to the nearest integer using conventional rounding rules. Also, ratings on tournament wallcharts, on crosstables on the US Chess web site, and in otherofficial forums, are also displayed rounded to the nearest integer.
• The US Chess Executive Director may review the rating of any US Chess member andmake the appropriate adjustments, including but not limited to imposition of a rating“ceiling” (a level above which a player’s rating may not rise), or to the creation of“money floors” (rating floors that are a result of winning large cash prizes).

8

Historical Changes

This lists, by effective date, changes made since Jan 1, 2001. Except where noted, these
apply to all sections with start date at or after the date specified and not to sections withstart date earlier than that.

• 2002-??-?? Add “dual” OTB quick/OTB regular rating of OTB Regular sections withtime controls ≤ 60mm + ss.
• 20??-??-?? Extend dual rating to time controls ≤ 65mm + ss.
• 2004-??-?? Extend quick rating to time controls ≥ 5mm + ss.
• 2006-??-?? Change age-based initialization formula.
• 2008-08-07 Bonus point multiplier reduced to 6 (from 10).
• 2008-08-07 Floating floors for very low rated players added.
• 2010-04-01 Floors at 1200 and 1300 added. (Bottom earned floor had been 1400).
• 2012-08-04 Bonus point multiplier increased to 8.
• 2013-??-?? Add OTB Blitz ratings. Change time control range on OTB Quick.

15

• 2013-05-08 Effective games formula changed to give lower values (thus more variable
ratings), particularly for players rated 1800-2200.
• 2014-03-20 Bonus point multiplier increased to 10.
• 2015-06-01 Bonus point multiplier increased to 12.
• 2017-06-01 Bonus point multiplier increased to 14.
• 2020-??-?? Add OL Quick ratings.
• 2020-??-?? Add OL Regular ratings.
• 20??-??-?? Add OL Blitz ratings.

16