ChessDS.com overview
Thanks for visiting! This is a chess site built by a data scientist who loves playing (~2000 USCF) and following top-level chess. Currently the site has analysis of historical world championships, and some recent candidates tournaments. And it supports live broadcasts, starting with the 2026 candidates.
Predicting game results with machine learning
The central idea here is that we can better represent the state of a chess game by showing result probabilities for all three results: white wins, black wins, or draw. The site runs on some ML models that perform various functions at inference time to produce these result predictions and annotations, as well as move predictions to support candidate moves.
This site owes gratitude to TWIC and Lichess, both of which were sources of PGN data. The data has been enriched with ~150 features for each position, including Stockfish (18) eval data for top moves and candidates.
Some notable facts:
- The training set currently contains ~130k GM-level classical games.
- The model is essentially “rating unaware” – it doesn't know which player is stronger. But it does know something about the combined strength of the players.
- The model predicts a game sequentially, meaning features from the previous moves are important predictors of the current move. It won't work (well!) if you feed it a random position; it needs to see the game's full history.
- Candidate moves are evaluated the same as main-line moves so long as they have ≥ 1% move probability according to the move prediction model. That model has fewer features, but a similarly large training set of millions of positions, from GM-level classical games.
- It's pretty fast, but not instantaneous. Usually a position can be evaluated in ~1s, and including candidates 5–15s. Good enough to track live games at fast time controls.
Annotating moves
You'll notice annotation symbols next to moves and candidates. This is more art than science, and historically there is a ton of variation in how people do this. It's a hard problem but the shift to expected value instead of raw change in engine eval is helpful (e.g. as we easily avoid giving ? to moves that don't change anything about totally won positions). Feedback would be great, by email or social.
There's also a “precision” metric which attempts to use EV and move prediction data to score quality of play. You can read more about that in the blog section of the website.
Game PGN downloads with full result prediction values and annotations will be available soon.
Contact
Feel free to reach out! You can email albert@chessds.com, connect with the website social accounts at X or Bluesky, or find the author on LinkedIn.