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(RpR)/400E = \frac{1}{1 + 10^{(R_p - R)/400}}
user update
ΔR=round(K(SE))\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 and re-attempts

A score of 4/6 is S = 0.667, not a binary loss. When a user submits a problem they have attempted before, their K-factor is halved. The problem uses a fixed K-factor of 10 and updates from 1 − S.

worked example
user Elo = 1200
problem Elo = 1333
score = 4 / 6 = 0.667
K = 32
user delta ≈ +11
problem delta ≈ -4

when Elo applies

Deterministic auto-graded results and non-flagged ai-graded results can update both ratings. 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.