TCEC Season 19


The 19th season of the Top Chess Engine Championship began on 6 August 2020 and ended on 16 October 2020. The season 19 superfinal was a rematch between Stockfish and Leela Chess Zero, the same two engines that had contested the superfinal in the previous two seasons. Stockfish, the defending champion, won by 9 games.

Overview

The format of TCEC Season 19 is largely unchanged from that of Season 18. The only difference is that the time control in the superfinal is once again 120 minutes + 10 seconds per move, increased from 90 min + 10s in Season 18. The rules are also largely unchanged, with the only significant addition being r-mobility as a tiebreak criterion. This tiebreak depends on the number of legal moves available to both sides in the last phase of the game; the side with the fewer legal moves loses.

Tiebreak rules

The tiebreak rules for TCEC Season 19 are:
  1. For any event except the superfinal: the number of crashes.
  2. Head-to-head score.
  3. Number of wins.
  4. Sonneborn-Berger score.
  5. r-mobility.
  6. A decision by the tournament organizers.

    Results

Qualification League

New entrant SlowChess was the early favorite in the Qualification League because it had shown a great deal of improvement in self-play in spite of being a relatively new engine. It lived up to its billing by dominating the Qualification League, scoring 16 wins in 22 games, including head-to-head wins against all its opponents. Second place was much more fiercely contested, with Roc eventually squeezing past Combusken in spite of losing both head-to-head matches to its rival. Eventual fourth-place finisher Monolith was also in the running up until the last rounds, but it lost both its games against SlowChess as well as a game against Roc which eventually left it 1.5 points behind Roc.
At the other end of the table, the other new entrant A0lite finished last together with Bagatur, scoring 5/22.

League 3

Although the competition was much stronger, QL winner SlowChess also crushed League 3, scoring 13/18, 1.5 points ahead of second-place and third-place Igel & Minic. This time, however, there were three engines it was not able to beat. Comparatively the fight for second place was very close, with Igel barely squeezing past Minic on the strength of a head-to-head win. This result will later turn out to have a significant impact on League 2. The rest of the league was straightforward, with iCE and Counter finishing solidly at the bottom, losing 7 games each and 2.5 points from safety.

League 2

League 2 saw the first time an NNUE engine played. NNUEs had been introduced to computer shogi in 2018, and defending champion Stockfish's developers had produced a working version for chess in June 2020. This new "Stockfish NNUE" gained strength very quickly, and by August 2020 was outperforming the original Stockfish by almost a hundred elo at short time controls. This led to strong anticipation of the results when Igel, which had narrowly beaten Minic in League 3, submitted an updated version including an NNUE.
Igel lived up to the hype with a massive winning streak to start League 2. It scored 7/9 in the first round robin, including a win over hitherto-undefeated SlowChess. Its performance dipped in the second round, scoring "only" 4 wins and losing a game to eventual 3rd-place finisher RubiChess, but it still won the division with 14/18. Meanwhile SlowChess recovered after the loss to Igel by scoring 5 wins in the second round, losing no other games to finish second with 13/18. With its win against Igel, RubiChess was also the only engine to score 50% against the leader in the league, and finished clear 3rd with 11/18. The rest of the division was much more closely contested, and only two points separated 4th-placed Pedone from last-placed Nemorino.
During testing for League 1, Booot, which had crashed in the previous season, needed to submit a patch addressing the crashes to participate. Its author did not submit an update, which led to Booot being disqualified and RubiChess promoting.

League 1

League 1 was closely contested with the top eight engines only being separated by 2.5 points. Fire was able to secure its return to the Premier Division by starting strong in winning three of its first four games and then never relinquishing its lead. ScorpioNN started off by losing to RubiChess but recovered and moved into the promotion spot after winning its minimatches against Igel and rival Xiphos. SlowChess ended its impressive first season, which featured three straight promotions from the Qualification League to League One, by edging out Xiphos for third based on its better Sonneborn-Berger score. It missed promotion by only half a point. rofChade, which was relegated from the Premier Division last season, finished sixth but was the only engine that was able to defeat Fire. Igel, featuring NNUE, finished with an even score of 9/18 losing only one game to ScorpioNN, but it was also only able to win one game against rofChade. Fritz and Arasan, the only engines that weren't able to win any opening pairs, were demoted to League 2.

Premier Division

An error in the opening book used led to a first round robin with a very high draw rate. As a result, TCEC decided to add a fourth round robin, expanding the division to a quadruple double round robin.
Wielding its new NNUE eval, Stockfish began the division as the strong favorite. However, in the first double round robin, it failed to live up to the hype. Instead, Leela took the lead with two wins while Stockfish only managed all draws. However, Stockfish reeled off four wins in the reverse round, defeating AllieStein, Ethereal, Fire and Komodo to seize the lead. As the division continued, Stockfish kept winning, but Leela kept pace, only a couple of wins behind – until Stockfish scored a head-to-head win in the fourth double round robin. This win, the first Premier Division win by Stockfish over Leela since TCEC Season 14, confirmed Stockfish's entry into the superfinal as the division winner. Leela finished second in spite of the loss as well, comfortably ahead of 3rd-placed Alliestein. The ordering of the top four were unchanged from Season 18, with Stoofvlees still finishing fourth in spite of not being updated.
In contrast to the top half of the table, which quickly sorted itself into its eventual order, the fight to avoid relegation was a topsy-turvy affair. Each engine fought to avoid losing to the engines in the top half – at the end of the division there were only four decisive games between the top four engines – while scoring wins against each other. Traditional powerhouse Komodo did badly in the first round, losing three games, and was last. Meanwhile, Ethereal started off in the lead with a win against Stoofvlees, but promptly lost the reverse, and eventually found itself in the cellar with Komodo after getting pummelled by Stockfish and Leela. Fire lost three games to Stockfish, but did only concede one loss to Leela and Alliestein, and in the third round robin piled the misery on Ethereal by scoring the first head-to-head win among the bottom four engines. Fellow promoted engine Scorpio lost three games to Leela, but was able to hold Stockfish to all draws, and even won an opening pair against Stoofvlees. Komodo was still in the relegation zone when it pulled off the upset of the division in round four, by defeating the runaway leader Stockfish. Although Stockish exacted revenge in the reverse, Komodo had handed Stockfish its only loss in the division, and with further wins against Scorpio and Fire, it finally finished fifth, 1.5 points above the relegation zone. Ethereal scored a win against Fire, but its fate was out of its hands, and when Scorpio won another game pair against Stoofvlees, its fate was sealed. In the end, Ethereal and Fire were relegated, 1.5 and 0.5 points away from safety respectively.

Superfinal

A poll of viewers conducted before the superfinal started found Stockfish to be a substantial favorite.
The superfinal started with two pairs of traded wins before Stockfish took the lead in game 18, winning a Keres Attack after holding the reverse. Leela struck back in game 23 by winning a Queen's Indian defense. There followed a long streak of indecisive results of mostly draws, with Leela winning game 33 only to lose the reverse, until Stockfish took the lead by winning game 48. The relatively even first half was completely upended in the second, as Stockfish won one game pair after another. Although Leela won several games, it never managed to hold the reverse. Stockfish mathematically wrapped up the superfinal in games 93/94 by drawing game 93, then celebrated with another win in the reverse game. In the end, Stockfish won by 9 games.

Notable games

In an article published shortly after the superfinal, GM Matthew Sadler wrote that although the superfinal had started as a nail-biter, Leela was ultimately unable to match Stockfish's conversion rate from superior positions, consigning it to defeat.
The following notes are selected from the many games analyzed by GM Sadler.

Game 1

Game 1 was a mainline Sicilian Najdorf, one of the most deeply analyzed of openings, with the novelty of the game occurring only on move 21. Leela chose the 6. Be3 variation, and the game developed into a tense middlegame in which Leela neutralized Stockfish's queenside play, but only at the cost of allowing Stockfish a perpetual check.
Leela Chess Zero–Stockfish, game 1 '1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6' 6. Be3 e5 7. Nb3 Be6 8. f3 h5 9. Qd2 Nbd7 10. Nd5 Bxd5 11. exd5 g6 12. Be2 Bg7 13. O-O b6 14. Kh1 O-O 15. Rad1 Re8 16. g4 hxg4 17. fxg4 Ne4 18. Qb4 Ndc5 19. Nxc5 Nxc5 20. g5 e4 21. h4 Qd7 22. Kg2 Na4 23. Rd4 b5 24. b3 Rac8 25. bxa4 Rxc2 26. Rf2 Rxe2 27. Rxe2 Qg4+ 28. Kf2 Qxh4+ 29. Kg2 Qg4+ 30. Kf2 Qh4+ 31. Kg2 Qg4+ 32. Kf1 Qh3+ 33. Ke1 Qh1+ 34. Kd2 Rc8 35. Re1 Qg2+ 1/2-1/2