docs/rating/Elo system
print
rating

Elo system

Mathleagues treats a submission as a match between a user and a problem. Both ratings react to the result.

the formula

expected score
E=11+10(Rp−R)/400E = \frac{1}{1 + 10^{(R_p - R)/400}}
user update
ΔR=round⁡(K(S−E))\Delta R = \operatorname{round}(K(S-E))
R is the user rating, R_p is the problem rating, and S is marks awarded divided by marks available.

user K-factors

user EloKpurpose
below 140032Faster calibration for developing ratings.
1400–200020Standard competitive volatility.
above 200012More stable expert ratings.

partial credit

A score of 4/6 is S = 0.667, not a binary loss. The problem uses a fixed K-factor of 10 and updates from 1 − S, so it gains rating when solvers struggle and loses rating when they do well.

only your first attempt counts

Your first submission for a problem is the one that can move your rating and the problem's. You can try the problem again as often as you like to practise, but later submissions are graded without changing either rating, whatever the score.

worked example
user Elo = 1200
problem Elo = 1333
score = 4 / 6 = 0.667
K = 32
expected score E ≈ 0.317
user delta = round(32 × (0.667 − 0.317)) = +11
problem delta = round(10 × (0.333 − 0.683)) = −3

when Elo applies

On a first attempt, deterministic auto-graded results and non-flagged ai-graded results update both ratings straight away. Flagged work initially receives zero Elo impact. A human decision later applies the target effect from the stored submission-time context. A revised appeal applies only the difference between the revised target and the previously applied target. See reviews and appeals.

rating bounds
User Elo is clamped between 100 and 3000. New users start at 1200.