docs/rating/Elo system
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 and manual review defer the Elo change until the review workflow resolves.

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