Rating Mechanism
This rating system is a method for rating participants in individual competitions, and is used to calculate the Long Rating, Short Rating, LunchTime Rating and combined CodeChef Rating (which includes all rated contests). It is a modification of the ELO rating system, tailored for group contests.


A very basic idea of how the ELO system works is this: Whenever you participate in a contest, you compete in a duel with all other participating players. Based on your existing rating and the other participating players' rating, your probability of winning against each of them is calculated. Your actual performance is compared against this expected performance, and correspondingly, you gain or lose some points. The details follow:


In this system, the skill of the player is described by a probability distribution specified by two variables, namely Rating R and Volatility V. The value of Rating R describes the most probable level of the player, and the Volatility V as the name suggests, describes how volatile the player is. Volatility also conveys how confidently we can tell the level of a player.


In more mathematical terms, the values R and V behave similar to the mean and variance of the distribution respectively. The higher the value of R, the better the player is on an average day. The lesser the value of V, more is the probability that the player performs closer to the expected level, R.


The probability that a player A with rating Ra and volatility Va performs worse than an player B with rating Rb and volatility Vb is given by the formula
The sum of Eab for player A over all B, gives the expected rank, ERank, of player A in the contest.


Let number of contestants in the given contest be N. And let average rating be Ravg.
The performance is calculated as . Using this formula, we calculate both expected and actual performance factor of the player, as below:
If the actual rank of a player is ARank, then Actual Perf will be and Expected Perf will be
For each competition, we compute a competition factor as
We define rating weight of a player as . And volatility weight of player is defined as , where timesPlayed is the number of competitions the player has participated so far.


If the old rating is Ra, then, new rating of the player will be
New volatility of the player will be .


Each player in his first contest would have an initial rating of 1500 and initial volatility of 125.


The rating changes are capped with a max rating change computed as .
The volatility value is moderated to lie in the range (75, 200).
This was just an outline of the main concepts behind the system. The actual algorithm and implementation have further details which are not mentioned here.


For students of middle and high school, we have introduced a new combined Junior Rating system which will calculate the rating of all rated contests considering only the middle and high school students. All the Junior ratings and rankings can be found here:
We hope this will help you understand how you are being rated in our contests. However, if you still have any doubts/suggestions, do send them to us at: feedback@codechef.com and we will be happy to talk to you.