Move ratings from Elo to Glicko-2
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript, node.js
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- JavaScript
- Stelle
- 0
- Fork
- 2
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di sennaicodes/codearena
-
Add issue and pull request templatesForse di nuovo libera @franciscorodr26 l’ha presa 17 giorni fa e non c’è nessuna pull request aperta. Apertadocumentation good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
sennaicodes/codearena#13 · 1 commento ·
-
enhancement help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
sennaicodes/codearena#34 ·
-
enhancement help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
sennaicodes/codearena#33 ·
-
enhancement help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
sennaicodes/codearena#32 ·
-
enhancement help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
sennaicodes/codearena#31 ·
Tutte le issue di sennaicodes/codearena
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
flarum/framework#5301 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
AOSSIE-Org/BabyNest#284 ·
I maintainer di solito rispondono entro 1 giorno
-
status:untriaged
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
midnightntwrk/servicedesk#275 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
seek4science/seek#2762 ·
I maintainer di solito rispondono entro 5 giorni