TCEC Season 15


The 15th season of the Top Chess Engine Championship began on the 6 March 2019 and ended on 12 May 2019.
The season featured for the first time two separate Division 4s, the winners of which moved to a playoff for promotion to Division 3. Also notable is the emergence of a new neural network-based engine based on AlphaZero, AllieStein, which reached the premier division, and Leela Chess Zero's victory in the superfinal, which marks the first time a neural-network engine has won the superfinal.

Overview

Structure

The season was structured into six divisions: two Division 4s, Division 3, Division 2, Division 1, and the Premier Division. In Division 4, the top two engines advanced to a playoff against each other, with the top two finishers moving up to Division 3. The structure from Division 3 onward remained consistent with previous seasons: the top two engines in each division advanced to the next higher division, while the bottom two engines were relegated. The top two engines in the Premier Division competed in a 100-game superfinal. The length of the opening books used increased as the divisions progressed, and the time control ranged from 30 minutes + 5 seconds per move in Division 4 to 90 minutes + 5 seconds per move in the Premier Division.

Rules

After the controversial game 66 in the previous season's superfinal, TCEC modified its rules for disconnects: in most situations, instead of a restart from scratch, the games will be resumed from the last available position, albeit with time compensation for both engines to fill up their hash tables. The only other significant change is to remove the number of Black wins from the tiebreak criteria, leaving the tiebreakers as 1) number of crashes; 2) direct encounter; 3) number of wins; 4) Sonneborn–Berger score; 5) tournament director decision. Beyond that, the season used the standard rules of the TCEC.

Results

Division 4a

Nemorino, which had been relegated in Season 14, convincingly won Division 4a. It scored 13 wins in 18 games, and conceded only one loss, to finish 2.5 points ahead of the next-nearest competitor. Second place was more hotly contested. RubiChess defeated Winter head-to-head twice, but also lost both games to Nemorino. Winter scored more wins overall, but ultimately the head-to-head tiebreak meant RubiChess qualified for the playoffs.

Division 4b

In contrast to Nemorino's dominating performance in the other division, Pirarucu won Division 4b by only half a point, just ahead of AllieStein, who was in turn only half a point ahead of Wasp. Pirarucu lost the head-to-head against AllieStein, but also managed to dominate the lower half of the field harder than AllieStein. ScorpioNN, which had been thoroughly outclassed in the previous season's Division 4, showed it had improved tremendously to score five wins; however it was still unstable and crashed three times, leading to a disqualification.

Playoffs

Nemorino, RubiChess, Pirarucu and Alliestein qualified for the playoffs. In a dominating performance that showed how fast it was improving, AllieStein crushed the field and finished 3.5 points above second-placed Nemorino, winning all four of the head-to-head games against Nemorino and losing only one game to RubiChess. Despite the losses to AllieStein, Nemorino finished 1.5 points ahead of third-placed Pirarucu on the back of two head-to-head wins.

Division 3

Division 3 was closely contested, with every engine winning and losing games. rofChade and Alliestein finished first and second with 18/28 and 16.5/28 respectively, ahead of third-placed Arasan with 15.5/28. Arasan had missed out on promotion in Season 14 because eventual Premier Division engines Komodo MCTS and Leela Chess Zero were also in the division, and finished third again this season. Newly promoted Nemorino found itself outmatched and finished last with 11/28.

Division 2

Division 2 was less closely contested. Xiphos and AllieStein dominated, finishing first and second respectively some four points ahead of everyone else. First-placed Xiphos lost two games to AllieStein, who was still improving quickly, but dominated the rest of the field, scoring 3.5/4 in its mini-matches against ChessBrainVB, rofChade, Fritz, and Nirvana. At the other end of the table, Nirvana was outclassed and finished dead last, five points from safety and without winning a single game. Former champion Fritz, which had not been updated, was also relegated for a second season in a row.

Division 1

Early favorite Komodo MCTS, who had been doing respectably in the Premier Division last season until it was disqualified for crashing, comfortably won the division with 17.5/28. Up against its strongest opponents yet, AllieStein continued to show it was improving fast enough to be able to compete, finishing second behind Komodo MCTS. Fellow promoted engine Xiphos finished third, one point behind AllieStein, after losing yet another two games to AllieStein. At the other end of the table, Italian champion Chiron finished last, three points off the pace, but the other relegation spot was closely contested. Former champion Jonny needed to hold Komodo MCTS to a draw with black in its final game to finish ahead of Fizbo, who had superior tiebreakers. It failed, and was relegated.

Premier Division

Although expectations were for a competitive premier division, as the division progressed things turned out to be straightforward. Last season's champion Stockfish continued to demonstrate its superiority to the field, comfortably beating every other engine – in each of its head-to-head matches it had at least a +2 score – except the previous season's runner-up Leela. Ominously, however, it lost a game to Leela. Meanwhile, Leela did not win nearly as many games as Stockfish, but also lost none. Together, Leela and Stockfish had more wins than the rest of the division combined, and the gulf between 2nd-place Leela and 3rd-place Komodo was a massive 4 points. At the other end of the table, Ethereal and Fire quickly found themselves outclassed, finishing 2–3 points off the pace. Unlike last season, however, both tailenders managed to score two wins.
Compared to the top and bottom, the middle of the table was fiercely contested between Komodo, Komodo MCTS, Houdini, and AllieStein. Each engine fought to avoid losing to Stockfish & Leela while beating up on Ethereal & Fire. Komodo MCTS leapt to an early lead after defeating Fire, while AllieStein lost to first Houdini and then Leela to rank last. Meanwhile, Komodo did not win any games, but didn't lose any either. As the division progressed, it became clear that a 50% score would not suffice to compete for third place, and when Komodo further went down to Stockfish it found itself last. Komodo MCTS was still in the lead when it crashed in what was probably a drawn position against AllieStein. This led to the number of threads for Komodo MCTS being reduced from 43 to 32, which likely contributed to its weaker performance in the final segment of the division. In the last round-robin round of the division, Komodo scored a head-to-head win against AllieStein, while simultaneously defeating Fire twice with both colors of the same opening. This led to it finally finishing third, four points behind Leela but a point ahead of Houdini and AllieStein.

Superfinal

Going into the superfinal, Leela had the momentum on the back of its victory at Chess.com's Blitz championship, its superior head-to-head score against Stockfish in the Premier Division, its win in the TCEC Cup 3, and the fact that it had shown a lot of improvement in self-play while Stockfish had been stagnant. Combined, it meant Stockfish was no longer the favorite to win the superfinal.
Leela drew first blood by winning game 10 on the white side of a Benoni. Although Stockfish defended with characteristic tenacity, it was eventually forced to sacrifice a piece for two pawns, and Leela ground out a win. Stockfish equalized in game 12 after Leela blundered in a complicated endgame where she was up material, but Stockfish had several menacing passed pawns. After this initial exchange, Leela took a commanding lead by winning games 16, 18, 24 and 26, while conceding none. Stockfish finally scored a win in game 35, but failed to hold the reverse game, and after Leela won game 38 the gap widened further to five games. There was a glimmer of hope for Stockfish when it won games 43 and 45 to narrow the gap to 3 points, but Leela scored a decisive victory in games 61 and 62, outplaying Stockfish with both the white and black pieces in a Trompowsky Attack. The final third of the superfinal was more evenly contested, but Leela only conceded losses when Stockfish also lost the opening, and further managed to win game 86 after holding the reverse. In the end, Leela won by seven points, +14 -7 =79.

Notable games

In an article describing his impressions of the superfinal, British GM Matthew Sadler noted key differences between Stockfish's and Leela's style, as well as their strengths & weaknesses, using games 43/44, 45, 61, and 97 as examples.

Games 43/44

This game pair featured a dubious line of the Two Knights Defense: 1.e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5?! This extremely risky recapture has been described by IM Lawrence Trent as a move that is "certainly not to be recommended". Forced to defend the Black side of this opening, Stockfish steered the game to a cheerless and passive but tenable position, similar to what Fabiano Caruana had done in Game 9 of the World Chess Championship 2018. Like Caruana, Stockfish faced a long defensive task with no active plans of its own, but also like Caruana, Stockfish was able to hold the position. Meanwhile, when it was Leela's turn to defend with Black, it sought complications and wound up in a chaotic position. Stockfish's "trench warfare" playstyle fared better than Leela's in this game pair, and Stockfish won this opening by winning with White while drawing with Black.
Game 43: Stockfish–Leela Chess Zero
1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. d4 Nxd4 7. c3 b5 8. Bd3 h6 9. Nxf7 Kxf7 10. cxd4 exd4 11. O-O Rb8 12. a4 Nb4 13. Bxb5 Kg6 14. Nd2 Bd6 15. Re1 a6 16. Bc4 Rf8 17. Nf3 c5 18. Re4 Qf6 19. Ra3 Bf5 20. Nh4+ Kh7 21. Nxf5 Qxf5 22. Qe2 Rbd8 23. Rh3 d3 24. Bxd3 Nxd3 25. Rxd3 Rfe8 26. Rde3 Rxe4 27. Rxe4 Bc7 28. g3 Rd1+ 29. Qxd1 Qxe4 30. Be3 Be5 31. Bxc5 Bxb2 32. h4 Bf6 33. Ba7 Kh8 34. a5 Bc3 35. Bb6 Qf5 36. Kg2 Qb5 37. Qd8+ Kh7 38. Qc7 Qd3 39. Kh2 Bd2 40. Qc5 Bc3 41. Qc8 Bb4 42. Qc7 Bc3 43. Qc8 Be1 44. Qe6 Bd2 45. Qf7 Be1 46. Kg2 Bd2 47. Qh5 Bc3 48. Qf3 Qc4 49. h5 Kh8 50. Qf8+ Kh7 51. Qf5+ Kh8 52. Qf8+ Kh7 53. Qf5+ Kh8 54. Kg1 Kg8 55. Kh2 Kh8 56. Qf8+ Kh7 57. Qf5+ Kg8 58. Be3 Kh8 59. Kg1 Kg8 60. Kh2 Kh8 61. Ba7 Kg8 62. Bb6 Kh8 63. Qf8+ Kh7 64. Qf3 Bf6 65. Qf5+ Kg8 66. Be3 Bc3 67. Kg2 Qc6+ 68. Kg1 Qc4 69. Kg2 Qc6+ 70. Kh2 Qc4 71. Qc2 Qb4 72. Bb6 Qc4 73. Qd1 Kh7 74. Qc2+ Kh8 75. Qd1 Kh7 76. Kg2 Kg8 77. Kg1 Bb4 78. Qd7 Bc3 79. Qc7 Qxc7 80. Bxc7 Kf7 81. Kg2 g6 82. hxg6+ Kxg6 83. Kf3 Kf5 84. g4+ Kg6 85. Ke4 h5 86. gxh5+ Kxh5 87. Kf5 Be1 88. f4 Bg3 89. Bd8 Kh6 90. Ke4 Kg6 91. Bc7 Be1 92. Ke5 Kf7 93. Kd5 Ke7 94. Kc6 Bd2 95. Kb6 Kd7 96. Be5 Ke6 1-0
Game 44: Leela Chess Zero–Stockfish
1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. d4 Be6 7. O-O Nxd4 8. Nxe6 fxe6 9. Nd2 Qd7 10. Qh5+ g6 11. Qxe5 Bg7 12. Qe4 Nf5 13. Re1 O-O-O 14. Bb3 e5 15. c3 Rhe8 16. Nf3 Nf6 17. Qa4 Qxa4 18. Bxa4 c6 19. Bb3 Nd5 20. g3 Nd6 21. Ng5 h6 22. Ne4 g5 23. Nxd6+ Rxd6 24. Re2 Red8 25. a4 a5 26. Kg2 Kc7 27. Bc2 Nb6 28. Re4 Bf6 29. Bb3 Rd3 30. Rb1 R3d7 31. Re2 Nd5 32. Ra1 b6 33. Bc2 Ne7 34. Rb1 Nd5 35. Ra1 Rd6 36. Bb1 Ne7 37. Bh7 Nd5 38. Bc2 Kb7 39. Bb1 Kc7 40. h3 Ne7 41. Be4 R6d7 42. Rb1 Nd5 43. Bg6 Rd6 44. Bh7 Bg7 45. Ra1 Nf6 46. Bb1 Nd5 47. Bh7 Nf6 48. Bf5 Nd5 49. Bc2 Bf6 50. Bh7 Ne7 51. Be4 R6d7 52. Bc2 Nd5 53. Bg6 Rd6 54. Bc2 Kb7 55. Bb1 R6d7 56. Bf5 Rd6 57. Rb1 Bg7 58. Be4 Nf6 59. Bc2 Nd5 60. Ra1 Kc7 61. Rb1 Bf6 62. Kg1 Ne7 63. Kf1 Nd5 64. Kg2 Bg7 65. Kg1 Kb7 66. Ra1 R6d7 67. Re4 Bf6 68. Re2 Kc7 69. Kf1 Ne7 70. Rb1 Nc8 71. Be3 Nd6 72. Rbe1 Re7 73. Bg6 Rg8 74. Bb1 e4 75. Kg2 Rge8 76. Bc2 Bg7 77. Rd1 Nc4 78. Bc1 Nd6 79. Rh1 Re5 80. h4 Bf6 81. h5 R5e7 82. Rd1 Be5 83. Kh3 Rg8 84. Rde1 Rge8 85. Be3 Bf6 86. Bb3 Rf8 87. Bd2 Rfe8 88. Rd1 Rg7 89. Be3 Be5 90. Bc2 Rf7 91. Bc1 Rfe7 92. Rde1 Bf6 93. Bb3 Rd7 94. Kg2 Rde7 95. Rd1 Be5 96. Bc2 Bf6 97. Kh2 Be5 98. Kh3 Re6 99. Bb1 R6e7 100. Rde1 Bf6 101. Bc2 Be5 102. Bb3 Rf8 103. Kg2 Bf6 104. Bd2 Rfe8 105. Bc1 Nf5 106. Ba2 Nd6 107. Bb1 Be5 108. Bd2 Bf6 109. Be3 Nc4 110. Kh3 Nd6 111. Bc1 Re5 112. Kg4 R5e7 113. Be3 Rf8 114. Bd2 Rfe8 115. Be3 Rd8 116. Rd1 Ree8 117. Kh3 Be5 118. Kg2 Bf6 119. Bc2 Nc4 120. Rxd8 Bxd8 121. Bc1 Nd6 122. Kh3 Bf6 123. Kg4 Re5 124. Be3 c5 125. Kh3 Re7 126. Bb3 Ne8 127. Bc1 Nd6 128. Re1 Kc6 129. Rd1 Re5 130. Bc2 Re7 131. Bb3 Kc7 132. Bd5 Re5 133. Bb3 Kc6 134. Re1 Ne8 135. Bc2 Nd6 136. Bb3 Re7 137. Bd2 Kc7 138. Bd5 Re8 139. Bc1 Re5 140. Bb3 Kc6 141. Bc2 Kd5 142. Kg2 Kc6 143. Kf1 Kc7 144. Bb3 Kc6 145. Bc2 Kd5 146. Bd1 Kc6 147. Bb3 Re8 148. Kg2 Kc7 149. Bd5 Re5 150. Bb3 Kc6 151. Bc2 Kd5 152. Bd1 Kc6 153. Bb3 Re7 154. Bc2 Kc7 155. Kh3 Kc6 156. Bb3 Be5 157. Bd1 Kd5 158. Re2 Kc6 159. Bc2 Bf6 160. Kg2 Kc7 161. Re1 Kc6 162. Kf1 b5 163. axb5+ Kxb5 164. Bd2 Nc4 165. Bc1 Nd6 166. Rd1 Be5 167. Be3 Nc4 168. Bc1 Nd6 169. Bb1 Kc6 170. Kg2 a4 171. Be3 Re8 172. Bc2 Ra8 173. Ra1 a3 174. Rxa3 Rxa3 175. bxa3 Bxc3 176. a4 Kd5 177. f3 c4 178. Kf2 Ba5 179. Ba7 Bc3 180. Bb6 Bd4+ 181. Bxd4 Kxd4 182. a5 exf3 183. a6 Nb5 184. Kxf3 Kc5 185. Ba4 c3 186. Ke4 Kb6 187. Kf5 Nd6+ 188. Kg6 Ne4 189. g4 Nf2 190. Kxh6 Nxg4+ 191. Kxg5 Ne5 192. Kf5 Nf7 193. Kf6 Nh6 194. Kg5 Nf7+ 195. Kg6 Ne5+ 196. Kf6 Ng4+ 197. Kf5 Nh6+ 198. Kg6 Ng4 199. Kf5 Nh6+ 200. Kg5 Nf7+ 201. Kg6 Ne5+ 1/2-1/2