Move ratings from Elo to Glicko-2
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript, node.js
Research direction
Start with backend/elo.js to map the current rating cases and calculatePartialCreditRatings, then inspect backend/db.js and battles_history for migration and backtest inputs. Read the linked Glicko-2 paper and build the worked-example unit test first. Done means the migration is idempotent, the feature flag keeps Elo as default, the specified tests and boundary check pass, and the pull request reports the requested backtest and rating-change distribution.
Written by the indexing model from the issue text.
Description
Ratings use Elo with stepped K-factors (backend/elo.js). Elo has no notion of how sure it is about a rating. A player returning after six months and a player with 500 games in the last week move by the same amount, and new players take many games to land where they belong.
Glicko-2 tracks rating, rating deviation and volatility. It fixes all of that, and it lets matchmaking prefer opponents whose ratings are confident.
What to do
- Implement Glicko-2 in a new
backend/glicko2.jswith a pure API, following the paper exactly. Include the paper's worked example as a unit test that must match to 4 decimal places. - Support the cases
elo.jshandles today: win, loss, tie and partial credit (calculatePartialCreditRatings). For partial credit, map the test-pass ratio to an actual score in [0, 1] and document the choice. - Inactivity: rating deviation grows over time without games, per the paper's rating-period step.
- Migrate existing players: seed rating from current Elo, rating deviation from games played and last-played date. Write it as a migration in
backend/db.jsthat is safe to run twice. - Keep
getRankTierandgetRankDivisionon the displayed rating so tiers do not change meaning. - Show "provisional" next to ratings whose deviation is high.
Evidence required in the pull request
- Backtest on real history: replay
battles_historyin order under both systems and report how well each predicts the next result (log loss or Brier score). Glicko-2 must do at least as well as Elo, or the pull request should explain why it is still worth it. - Distribution of rating changes before and after for a typical week.
Definition of done
- Behind a flag (
CODEARENA_RATING=glicko2) until the backtest is reviewed. Elo stays the default. npm testandnode scripts/check-boundary.jspass.
- Dominant language
- JavaScript
- Stars
- 0
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sennaicodes/codearena
-
Add issue and pull request templatesMay be free again @franciscorodr26 claimed this 17 days ago, and no pull request is open. Opendocumentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
sennaicodes/codearena#13 · 1 comment ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 45/100
sennaicodes/codearena#34 ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 35/100
sennaicodes/codearena#33 ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 45/100
sennaicodes/codearena#32 ·
-
enhancement help wanted
Difficulty 5/5 Over a week Newbie friendliness 38/100
sennaicodes/codearena#31 ·
All issues in sennaicodes/codearena
Similar issues
-
Clinic sharing: fast sync refusal message suggests Delete Data, which only developer builds haveOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
avniproject/avni-client#2228 ·
-
bug confirmed issue
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
open-webui/open-webui#33196 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
fable-compiler/Fable#5157 ·
Maintainers usually reply within 1 day
-
New tool: PaperBananaPossibly taken @github-actions claimed this today. Opensubmission triage
Difficulty 1/5 Under an hour Newbie friendliness 75/100
kausalflow/tools#243 · 1 comment ·
Maintainers usually reply within 1 day
-
area: apple-music area: build-release bug effort: small priority: high
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
ChristianTabor/Argon#32 ·
Maintainers usually reply within 1 day