Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Move ratings from Elo to Glicko-2

オープン
#18 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
javascript, node.js

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

enhancement help wanted

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.js with 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.js handles 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.js that is safe to run twice.
  • Keep getRankTier and getRankDivision on 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_history in 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 test and node scripts/check-boundary.js pass.
主要言語
JavaScript
スター
0
フォーク
2
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

sennaicodes/codearena のほかの issue

sennaicodes/codearena の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。