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 (+18 -9 =73).

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.

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 (efficiently updatable neural network) 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 (diagram). 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 (+18 -9 =73).

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 (diagram) 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 (Sicilian Najdorf) '''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

Game 9
This game featured a Romantic line of the King's gambit, and yielded the first real evaluation disparity of the match. Playing White, Leela outcalculated Stockfish to draw the diagram position in spite of Stockfish's evaluation reaching -1.5 earlier in the game. Stockfish had originally intended 16...h5 17.Ne4 Bf5 18.exf6 Bh6 19.f7 Kg7, but apparently misjudged 20.Ng3, which leads to a draw after 20...Bg5 21.Nxf5+ Qxf5 22.Qg3 Qg4 23.Qc3 (see analysis diagram).

Leela Chess Zero–Stockfish, game 9 (King's gambit) '''1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Nc3''' d6 5. d4 g4 6. Bxf4 gxf3 7. Qxf3 Nc6 8. Bb5 Bd7 9. Bxc6 bxc6 10. O-O Bg7 11. Be5 f6 12. Qh5+ Kf8 13. Bxf6 Nxf6 14. e5 Qe8 15. Qh4 Qg6 16. Rae1 Bf5 17. exf6 Bxf6 18. Qf4 Kg7 19. Qxf5 Bxd4+ 20. Kh1 Qxf5 21. Rxf5 Rhe8 22. Ref1 Rab8 23. R5f4 Be5 24. Rf7+ Kg8 25. Nd1 Bd4 26. c3 Bb6 27. R7f3 Re2 28. h4 Kh8 29. a4 Rg8 30. g3 h6 31. b4 a5 32. bxa5 Bxa5 33. Ne3 Bxc3 34. Nf5 Bg7 35. Nxg7 Kxg7 36. Rf7+ Kg6 37. Rxc7 Kh5 38. Rg1 c5 39. Rg2 Rxg2 40. Kxg2 Ra8 41. Rc6 Rxa4 42. Rxd6 Kg4 43. Rg6+ Kh5 44. Rc6 Kg4 45. Rxc5 Ra2+ 46. Kg1 Kxg3 1/2-1/2

Game 18
In a line taken from the Karpov–Korchnoi world championship matches, both Stockfish and Leela took on c6 immediately after book exit, a move both GM Sadler and fellow kibitzing GM Danny Gormally were taught to be a positional mistake since it improved Black's center and also opened the b-file for Black's counterplay. However, in this particular position, White's advanced pawns on the kingside makes it hard for Black to find a home for its king. Leela kept its king in the center, but as Stockfish launched an attack in the middlegame, this poor king position turned out to be a decisive liability.

Stockfish–Leela Chess Zero, game 18 (Sicilian) '''1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 d6 6. g4 h6 7. h4 a6''' 8. Nxc6 bxc6 9. Qd3 Nf6 10. g5 hxg5 11. Bxg5 Qb6 12. O-O-O a5 13. Qf3 Bd7 14. Bc4 Rb8 15. Bb3 c5 16. h5 a4 17. Nxa4 Qa5 18. Bxf6 gxf6 19. Nc3 Qb6 20. Qd3 Ke7 21. a3 Bh6+ 22. Kb1 Rhc8 23. Qc4 Rc6 24. Rhe1 Rc7 25. Rd3 Bf4 26. Nd5+ exd5 27. exd5+ Be5 28. Qh4 Kd8 29. Rxe5 dxe5 30. Rf3 Kc8 31. h6 Kb7 32. Bc4 Ba4 33. Rxf6 Qa5 34. Qe4 Bb5 35. d6+ Bc6 36. Qxe5 Re8 37. Qf5 Rd7 38. Rxf7 Qd8 39. Rg7 Kb6 40. b4 cxb4 41. axb4 Rxg7 42. Qc5+ Kb7 43. hxg7 Re1+ 44. Kb2 Qf6+ 45. c3 Qxg7 46. b5 Be4 47. Bd5+ Bxd5 48. Qxd5+ Ka7 1-0

Game 60
In this game featuring the Alekhine Defense, Stockfish had manoeuvred into a pleasant-but-blocked position in which it was unclear how it could make progress. After many moves of shuffling, Stockfish tried offering a pawn, which Leela unsuspectingly took and was promptly gunned down.

Stockfish–Leela Chess Zero, game 60 (Alekhine Defense) '''1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 Bg4 5. Be2 e6 6. O-O Be7''' 7. h3 Bh5 8. c4 Nb6 9. Be3 O-O 10. Nc3 d5 11. c5 Bxf3 12. gxf3 Nc8 13. Bd3 Nc6 14. f4 f5 15. Kh2 Qe8 16. Be2 a6 17. Rg1 Kh8 18. a3 N8a7 19. b4 Qf7 20. Rb1 Rfb8 21. Rg2 Bf8 22. h4 b5 23. Rg3 Qd7 24. Qe1 Nd8 25. h5 Nf7 26. Qd1 Nh6 27. Qd3 c6 28. Na2 Be7 29. Rbg1 Bh4 30. R3g2 Bd8 31. Bd2 Rb7 32. Nc1 Nc8 33. Nb3 Kg8 34. Qh3 Kh8 35. Kh1 Qe7 36. Rg5 Qe8 37. R5g2 Qd7 38. Rf1 Rbb8 39. Bd1 Rb7 40. Rfg1 Qf7 41. Rf1 Qd7 42. Bf3 Na7 43. Rfg1 Nc8 44. Be2 Qe7 45. Qd3 Qh4+ 46. Rh2 Qe7 47. Rh3 Rbb8 48. Qg3 Qd7 49. Bd1 Rb7 50. Qg2 Na7 51. Re1 Rbb8 52. Rg3 Qf7 53. Rg1 Rb7 54. Be2 Qe7 55. Bd1 Rc7 56. Qf1 Rb7 57. R1g2 Nc8 58. Bc3 Qh4+ 59. Rh2 Qe7 60. Bd2 Rbb8 61. Kg2 Qd7 62. Rh1 Qf7 63. Kf3 Qe8 64. Qh3 Qf7 65. Kg2 Na7 66. Be2 Qd7 67. Rg1 Be7 68. Bc1 Rb7 69. Nd2 Bd8 70. Nb3 Qe8 71. Bd2 Rc7 72. Ra1 Qd7 73. a4 bxa4 74. Rxa4 Nb5 75. Ra1 Rca7 76. Kf1 Qc7 77. Rg1 Ng8 78. Bd3 Qb7 79. Rg2 Rb8 80. Bc2 Nc7 81. Na5 Qa8 82. Qd3 Nh6 83. Rg1 Nb5 84. Nb3 Qb7 85. Be1 Be7 86. Qg3 Bf8 87. Qh3 Qd7 88. Rg2 Nc7 89. Rg3 Be7 90. Ke2 Qd8 91. Rg1 Bf8 92. Bd2 Qe8 93. Bd3 Ng8 94. Rg3 Be7 95. Bc2 Nh6 96. Rgg1 Bf8 97. Bd3 Ng8 98. Rg2 Be7 99. Kf1 Nh6 100. Ke2 Bf8 101. f3 Ng8 102. Rgg1 Be7 103. Na5 Nb5 104. Ke3 Bd8 105. Nb3 Be7 106. Qg2 Bf8 107. Qg5 Nc7 108. Ke2 Rba8 109. Rh1 Be7 110. Qg2 Rb8 111. Na5 Bf8 112. Qh2 Nb5 113. Nb3 Nc7 114. Rhg1 Be7 115. Rg2 Bf8 116. Qh3 Be7 117. Qg3 Bf8 118. Qh2 Qd8 119. Rgg1 Be7 120. Na5 Qe8 121. Ke3 Nb5 122. Nb3 Nc7 123. Rg2 Bd8 124. Ke2 Nh6 125. Rg3 Be7 126. Rg2 Qc8 127. Rag1 Bf8 128. Qh4 Ne8 129. Ra1 Nc7 130. Qg5 Nf7 131. Qh4 Nh6 132. Rh1 Ne8 133. Rb1 Qd7 134. Ra1 Nc7 135. Kf1 Be7 136. Qh2 Qd8 137. Ke2 Qd7 138. Rag1 Bf8 139. Ke3 Nb5 140. Be1 Qf7 141. Ra2 Nc7 142. Na5 Qd7 143. Bh4 Rxb4 144. Bg5 Ng8 145. h6 g6 146. Qh4 Ne7 147. Bf6+ Kg8 148. Rag2 Kf7 149. Bxe7 Bxe7 150. Qh5 gxh5 151. Rg7+ Ke8 152. Rxh7 Kd8 153. Rgg7 Na8 154. Rh8+ Kc7 155. Rhg8 Ra4 156. h7 Rxa5 157. h8=Q Nb6 158. Re8 Nc8 159. Rxc8+ Qxc8 160. Rxe7+ Kb8 161. Qxc8+ Kxc8 162. Rxa7 Kd8 163. Rxa6 Rxa6 164. Bxa6 h4 1-0

Game 77
In this English opening, Stockfish castled into a dangerous kingside, after which Leela got to demonstrate it knew how to attack. The attack culminated in a bind in which Stockfish, despite sacrificing a piece in desperation, fails to wriggle out from.

Leela Chess Zero–Stockfish, game 77 (English opening) '''1. c4 c5 2. Nc3 Nf6 3. Nf3 d5 4. cxd5 Nxd5 5. e4 Nb4 6. Bc4 Nd3+ 7. Ke2 Nf4+ 8. Kf1 Ne6 9. b4 cxb4 10. Ne2 Nc7 11. d4 e6 12. h4 b5''' 13. Bd3 Bb7 14. Rh3 Nd7 15. Kg1 Bd6 16. Ng3 O-O 17. e5 Bxf3 18. Qxf3 Be7 19. Ne2 a5 20. g4 Rc8 21. Qe4 f5 22. Qc6 Nb8 23. Qg2 Qd5 24. gxf5 Qxg2+ 25. Kxg2 exf5 26. h5 Nc6 27. Bd2 Ne6 28. d5 Nxe5 29. dxe6 Rfd8 30. Rc1 Rxc1 31. Nxc1 Rd4 32. Be3 Rd5 33. Bxf5 Nc4 34. Be4 Re5 35. Kf3 Kf8 36. Bxh7 Nxe3 37. fxe3 Rxe6 38. Nd3 Bf6 39. e4 Bc3 40. Nf4 Rc6 41. Nd5 Bb2 42. Kf4 Rc5 43. Bg6 a4 44. Rf3 Bf6 45. Nxb4 Ke7 46. Nd5+ Kf8 47. h6 Kg8 48. h7+ Kh8 49. Rd3 Rc8 50. e5 Bd8 1-0

Game 78
In the reverse game, Leela opted to keep its king in the center and concentrate on redeploying its pieces. It was within sight of consolidating when Stockfish unleashed an attack that broke through to win. GM Sadler called this game the best one of the superfinal, with both engines playing very well.

Stockfish–Leela Chess Zero, game 78 (English opening) '''1. c4 c5 2. Nc3 Nf6 3. Nf3 d5 4. cxd5 Nxd5 5. e4 Nb4 6. Bc4 Nd3+ 7. Ke2 Nf4+ 8. Kf1 Ne6 9. b4 cxb4 10. Ne2 Nc7 11. d4 e6 12. h4 b5''' 13. Bd3 Bb7 14. Rh3 a6 15. Rg3 Nd7 16. Qe1 Rc8 17. Bd2 g6 18. Rd1 Na8 19. d5 e5 20. Bxb4 Bxb4 21. Qxb4 Nab6 22. Qd2 f6 23. h5 Nc5 24. Kg1 Rc7 25. d6 Rc6 26. Nh4 g5 27. d7+ Qxd7 28. Nf5 O-O 29. Qb4 Qc7 30. Bc2 Kh8 31. Bb3 Bc8 32. h6 Bxf5 33. exf5 Rd8 34. Rxd8+ Qxd8 35. Rc3 Qd6 36. a3 Nc8 37. a4 Ne7 38. axb5 axb5 39. Qxb5 Nxf5 40. Bc2 Nxh6 41. Ng3 f5 42. Bxf5 Ng8 43. Bh3 Ne7 44. Bg4 e4 45. Ra3 Na6 46. Qb2+ Qf6 47. Qe2 Qd6 48. Ra1 Ng8 49. Qxe4 Nf6 50. Qa4 Qe5 51. Rd1 Rc7 52. Qb3 Kg7 53. Nf5+ Kg6 54. Ne3 Nc5 55. Qb8 Kg7 56. Nf5+ Kg6 57. Nd6 Re7 58. Bf5+ Kg7 59. Bb1 Ng8 60. Nf5+ Kh8 61. Qf8 Ne6 62. Qa8 Rc7 63. Qe8 g4 64. Ba2 Qxf5 65. Bxe6 Qg6 66. Qxg6 hxg6 67. Rd8 g3 68. fxg3 1-0

Game 92
In this French game, White's space advantage made it difficult for Black to develop its pieces. Leela resorted to drastic measures to free its position, but Stockfish deftly outplayed Leela in the ensuing complications to convert into a winning endgame.

Stockfish–Leela Chess Zero, game 92 (French Winawer) '''1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 Qd7''' 5. Qg4 Bf8 6. Nf3 b6 7. Bb5 c6 8. Be2 Ba6 9. O-O Ne7 10. Bxa6 Nxa6 11. Ne2 c5 12. Ng3 Nb4 13. c3 Nd3 14. Rd1 c4 15. b3 Nxc1 16. Rdxc1 cxb3 17. axb3 g6 18. Qg5 Ng8 19. Qf4 Bh6 20. Ng5 Bg7 21. Ra6 f6 22. N5e4 fxe5 23. dxe5 dxe4 24. Nxe4 Nh6 25. Nd6+ Ke7 26. Rca1 Rhd8 27. g3 g5 28. Qxg5+ Kf8 29. Rxa7 Nf7 30. Nxf7 Rxa7 31. Rxa7 Qxa7 32. Nxd8 Qd7 33. c4 h6 34. Nxe6+ Qxe6 35. Qd8+ Kf7 36. f4 Qf5 37. Qxb6 Qc2 38. Qd6 Qe2 39. Qd7+ Kg6 40. Qe6+ Kh7 41. Qf5+ Kh8 42. c5 Qe3+ 43. Kg2 Qxc5 44. Qe6 Qb5 45. Kh3 Qf1+ 46. Kh4 Qg2 47. h3 Qf3 48. Qc8+ Kh7 49. Qf5+ Kh8 50. e6 Qxb3 51. e7 Qg8 52. Qg6 Qc8 53. e8=Q+ Qxe8 54. Qxe8+ Kh7 1-0