Reverse-engineering the rating formula

Правка en3, от etal, 2015-06-20 02:38:09

In this post I'll try to expose the results of my research regarding the rating formula. More specifically, I'll show a graph that gives you a rating according to your performance and I'll show the basic aspects of how ratings are updated. This post is quite large, if you are only interested in the results you can easily skim through it :)

Motivation

Almost two years ago I started to participate in contests more actively, aiming to be red one day. To increase my motivation I tried to find a formula that evaluated how well I did during a competition. At that time there were no API nor [user:DmtryH]'s statistics so I manually looked at a lot of profiles to try to find 'stable' points: users that didn't change their rating after a competition. Supposing that, in that case, they performed as they were expected; I obtained two approximate linear formulas for Div-1 contests:

MatchPerformance ≈ 1004·percentile + 1369

The 1st formula was a linear approximation of a non-linear function, it started to fail roughly for red performances. The second one works pretty bad, but it can give you an idea of how much it will increase. With this I did an Excel like this one:

As you can see the colours in the left looks much more interesting than the right colours. For instance, in one contest my rating was >2500, which (obviously) gave me a huge motivation for contest; next contest I performed 1000 points lower; well that motivated me as well to do a Virtual Contest to get back on track.

As months progressed I saw that this formula was helping me and could help others as well, so, as an extra motivation, I promised myself that when I first turned red I would do a serious post about it (and also write a CF contest for both divisions (separately), if they allow me :) ). I may not be red when you read this post; but,anyway, here it goes!

Theoretical analysis

The basis of my work is MikeMirzayanov's blog, along with some others. In CF, the probability that A wins B in terms of their rating is:

The theory of the ELO system suggests that, after a match, ratings of A and B should be updated by a constant multiplied by the difference between the expected result and the actual result.

Now, we can just run all the matches between the contestants, if we add the probabilities of winning against

Теги rating, rating graph, codeforces api

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en28 Английский etal 2015-06-21 18:24:42 411 Added linear approximations to performance ratings
en27 Английский etal 2015-06-21 03:34:08 0 (published)
en26 Английский etal 2015-06-21 03:25:18 81 minor language and comprehension improvements (saved to drafts)
en25 Английский etal 2015-06-21 03:02:32 0 (published)
en24 Английский etal 2015-06-21 03:01:14 227
en23 Английский etal 2015-06-21 02:56:40 6
en22 Английский etal 2015-06-21 02:55:22 48
en21 Английский etal 2015-06-21 02:44:50 138
en20 Английский etal 2015-06-21 02:27:34 115
en19 Английский etal 2015-06-21 02:19:29 80
en18 Английский etal 2015-06-21 02:10:41 659
en17 Английский etal 2015-06-21 01:42:09 29
en16 Английский etal 2015-06-21 01:35:53 2205
en15 Английский etal 2015-06-20 17:40:43 149
en14 Английский etal 2015-06-20 17:36:55 41
en13 Английский etal 2015-06-20 17:34:48 34
en12 Английский etal 2015-06-20 17:32:05 191
en11 Английский etal 2015-06-20 17:29:05 60
en10 Английский etal 2015-06-20 17:22:56 1669
en9 Английский etal 2015-06-20 16:45:09 239
en8 Английский etal 2015-06-20 15:17:16 2099
en7 Английский etal 2015-06-20 14:48:34 1063
en6 Английский etal 2015-06-20 14:28:22 2188
en5 Английский etal 2015-06-20 13:42:55 1398
en4 Английский etal 2015-06-20 13:16:45 307
en3 Английский etal 2015-06-20 02:38:09 715
en2 Английский etal 2015-06-20 01:35:14 1422
en1 Английский etal 2015-06-20 01:10:58 632 Initial revision (saved to drafts)