Victoria Chess Club Rating System

General

As with many other rating systems, a player's rating is adjusted by calculating:

1) Ratingnew = Ratingold +(Actualscore-Expectedscore)*Kfactor

where Kfactor is a constant and the expected score is given by:

2) Expectedscore = 1/(1+10^[(Ratingopponent-Ratingold)/400)])

Non Standard Calculation:

The Victoria Rating System includes games played at all time controls, blitz, active and regular tournament speed to form a single blended chess rating.  The effects of different time controls are compensated for by using different Kfactor for different time controls.  The general approach is based on this article by Jeff Sonas.  Slow games are given the most importance with the largest Kfactor and blitz games the least importance with the smallest Kfactor.  At time of writing, the Kfactor used are: 50, 20, and 10 for Slow, Active, and Blitz events respectively.

Performance Ratings

Performance ratings are usually calculated using:

3) Ratingperformance = Ratingaverage + 400*(wins-losses)/(number_of_games)

where Ratingaverage is the average rating of the opponents.  This is based on a linearization of equation (2) to find the rating at which the player would not be expected to gain or lose rating points, hence his 'performance' rating.  This works well if all the opponents are within the linear range of the expansion of equation (3), i.e. if all of the opponents ratings are within 400 points of the players probable strength.  The typical tournament at the Victoria Chess Club involves games against players with ratings from 1200 to 2300 so the linearity assumption is definately violated.  Typically too, the newcomer who needs to be given an initial performance rating will be at the bottom end of this strength range.  In this case, equation (3) will result in an overestimate of the player's strength and eventual rating inflation.  To counteract this, an initial performance rating using equation (2) is made.  It is then recalculated by replacing opponents_rating in

Ratingaverage =sum(opponents_rating)/number_opponents

with:

new_opponents_rating =MIN(opponents_rating, Ratingperformance +400)    [if opponents_rating > Ratingperformance]

new_opponents_rating =MAX(opponents_rating, Ratingperformance -400)    [if opponents_rating < Ratingperformance]

to calculate a new performance rating.   This proceedure is iterated until the changes in calculated peformance rating are below a specified interval.