Hi,
I have seen a lot of chess tournaments publishing performance rating. It can be a really good motivator to see at what rating did you perform in the last few contests.
Not sure how to ask for this feature, so posting a blog. Can we please have this feature in CodeForces?
Thanks in advance!
Auto comment: topic has been updated by adurysk (previous revision, new revision, compare).
See here: https://greasyfork.org/en/scripts/402180-codeforces-performance
In that script, the performance is just
old_rating + 4 * delta
.That's a very close approximation though. IIRC in the "real" performance rating there is another quadratic term that almost always gets rounded off anyway.
Yes, this feature can be borrowed and adjusted from atCoder.
Carrot does this pretty well.
Nice extension!
I see that it is showing rating performance as Infinity for rank 1, which I am pretty sure shouldn't be the case.
Based on the available information about CF’s rating system, this actually turns out not to be especially unreasonable.
Recall that the performance corresponding to a rank is the rating at which this rank gives exactly zero delta (thus, above this value, achieving the given rank would decrease rating). The Codeforces rating system essentially computes each participant’s expected rank by summing the probabilities that they lose to each other competitor (and adding one), increasing their rating if the participant’s rank is better than their seed and decreasing their rating otherwise. There is, of course, no finite rating at which a participant’s seed is better than or equal to first place, and thus, no rating at which a participant should receive zero delta for winning.
In practice, there are two reasons it might be possible for someone achieving rank 1 to see no change in their delta. First, CF requires rating changes to be integers, so competitors with extremely high ratings could receive a rating increase less than one upon winning, which would be rounded to zero. Second, CF’s anti-inflation metric could make it impossible to avoid a negative delta, given a sufficiently high initial rating. However, both of these scenarios require an extremely high initial rating vastly beyond what anyone has achieved in practice. Beyond being somewhat hard to calculate accurately, it’s unclear that this performance level would be especially meaningful, given that nobody has or ever will reach this hypothetical rating. As a result, reporting first place’s performance as infinity seems like a fairly reasonable decision to make, as it’s unclear that showing a performance level over, say, five or six thousand would be much better.
I see. Good points, thanks!
I was used to chess rating performances which used to be finite even with perfect scores. Just got to know they use a hard value of +-400 for each win/loss + opponent's rating.