Independent rating research · September 2026

Where FIDE Ratings Miss

The question

Does the FIDE rating list predict results as well as it could?

Every classical rating on the FIDE list implies a prediction. Two players 200 points apart should, by FIDE's own conversion table, see the favourite score about 76%. If the list is right, those predictions should come true on average, for every age group, rating band and colour, and for players who have not played in a while.

This study checks that on twelve seasons of real games in two steps. First it fits small corrections on one season of results and tests them on the next, which the corrections never saw, and repeats that for every season. Then it replays the rating rules month by month, FIDE's current rules against proposed changes, and scores each the same way.

Data

Method

A season runs October to September. Every correction is fitted on one season and tested on the next, for each of the eleven test seasons from 2015-16 to 2025-26. The charts on the findings below come from the latest pair: fitted on 2024-25, tested on 2025-26. Each model predicts White's expected score before the game. Accuracy is scored with log loss and Brier score (mean squared error on 1, ½, 0). Confidence intervals come from 1,000 bootstrap resamples of whole events, because games inside one tournament are not independent.

Finding 1

FIDE's table overstates the favourite

FIDE expected score Corrected model Actual score
Higher-rated player's score by rating gap

Finding 2

Juniors are underrated, seniors overrated

Rating correction by age group in Elo points
Correction in Elo points relative to players aged 21 to 49, fitted on the training year. A bar of +50 means that group plays like players rated 50 points higher.

Finding 3

Adults come back from a break weaker than their rating

Under 21 21 to 49 50 and over
Score against FIDE expectation by time since last rated game

A test case

Is Nakamura sitting on his rating?

Published classical rating Rated classical games in that list
Hikaru Nakamura's rating and rated games by monthly list
FIDE standard lists, January 2024 to September 2026. A list's games were mostly played the month before it was published.

Finding 4

Ratings trail current form

Finding 5

Results

How much each correction helps

All rows are scored on the same games across the eleven test seasons, each correction fitted on the season before its test. Lower is better. The change column is the difference in log loss against the published FIDE ratings, with its 95% interval.

Every season

The pattern holds in all eleven test seasons

All corrections Age Gap scale White advantage
Reduction in prediction error by test season
Reduction in Brier score against the published FIDE ratings, by test season. Each correction was fitted on the season before.

Simulation

Replaying the rules month by month

A correction that predicts well is not yet a rule FIDE can adopt. A rule changes ratings, and changed ratings feed into every later game. So each candidate rule was replayed month by month from October 2014 to September 2026, next to FIDE's current rules, using the K-factor FIDE actually applied to each player each month. The first season is a warm-up. From 2015-16 on, each season's rule uses settings fitted on the season before.

The official rating in each game already reflects every rated game in the world, and most of those are not in this sample. So each rule keeps a running difference from the official rating for every player, and that difference is what the rule changes. Under FIDE's own rules the difference stays at zero, which makes the control exact.

For FIDE

What this suggests for the rating regulations

    Limits

    What this study does not show

    Reproduce

    Run it yourself

    Plain Python 3, no packages. Game files come from The Week in Chess (issues 1038 to 1664) and player data from the FIDE download page.

    python3 src/fetch_twic.py     # TWIC game files, 2014 to 2026
    python3 src/prepare.py        # games from TWIC, fast events removed by name
    python3 src/fetch_lists.py    # FIDE monthly lists, September 2012 onward
    python3 src/verify_events.py  # keeps events confirmed as classical
    python3 src/backtest.py       # corrections, fitted and tested
    python3 src/simulate.py       # month-by-month rule replay
    python3 src/build_report.py