Saturday, July 1, 2023

Season 25 qualification/Swiss

The TCEC season 25 has started with a Swiss event. As in season 24 the results of the Swiss event will help determine which engines play in the TCEC leagues that follow, so it is in part a qualification stage. I'm not exactly sure about the competition format, according to the currently published TCEC rules there will be a new entrance league before league 2, consisting of 16 engines where 6 are decided by the Swiss event. It is not clear which engines are in the race for the entrance league and which are already assured a place in the leagues. This is because there was no equivalent of an entrance league in season 24, and also because several engines that played in the leagues last season will not play this season. It is not clear whether the organizers will decide to increase the number of promotions per league, or to push engines up and fill the vacant spots while keeping the promotions as before. 

There were 13+8+6=27 engines that played in the leagues in season 24. The following engines will not play this season:
Berserk, Koivisto - season 24 premier league
Nemorino - season 24 league 2, relegated
Zahak, Counter, Amoeba, Cheese - season 24 qualification / Swiss

Two had a reserved spot in the leagues. This leaves 24 engines including 3 that relegated from league 2, perhaps those will get an automatic spot in the entrance league. Even counting these, it appears there are 21 engines fighting for 16 spots of the entrance league, not a strong filter. 

Potential contestants are:
relegated from season 24 league 2 - Tucano, Booot (crash bug fixed), Expositor
played in Swiss season 24 - Smallbrain, Mantissa, MrBob, StockDory (was StockNemo), Stash, Weiss, Winter, Equisetum (was Drofa), ChessFighter, Bagatur, ice4, 4ku
new to TCEC - OliThink, Clover, Caissa, DeepSjeng, Viridithas, BlackCore

Final standings

Viridithas MrBob +2, Caissa SmallBrain Weiss Clover Equisetum +1, DeepSjeng BlackCore Expositor Stash Tucano 0, Booot Winter Mantissa ChessFighter -1, StockDory -2, ice4 -8, 4ku -11, Bagatur -14, OliThink -16. 

Viridithas led the event after the first 3 rounds with two double wins, one against Weiss. As a result it had to face stronger engines, in the next 8 rounds it played and lost against Stockfish, Leela, KomodoDragon and Igel, the 4 engines that led the event in the end. Still it was able to finish first in the qualification section. On the other hand, MrBob used a lot of Swiss luck to finish with the same score as Viridithas. MrBob had 3 double wins against 4ku, Bagatur and OliThink, and it didn't have to face a single engine that is really strong (in this field).

The newcomer engines did well in this event, 5 of them finished within one point of the lead. Only OliThink turned out to be weak and finished last.

In the first rounds I was somewhat surprised by the weakness of Stoofvlees and ScorpioNN, both engines that I thought were strong. Stoofvlees lost against Seer and then only drew its next 3 game pairs. It managed to recover after this, winning a few game pairs and losing only once more in the final round against Stockfish. Stoofvlees finished with a +2 score. ScorpioNN only drew against Equisetum and lost to Arasan in the first rounds, it had a few wins as well but stayed in the middle of the table. ScorpioNN finished with a +1 score.

The engines that will play in the season 25 leagues was published on the TCEC wiki. The organizers chose to push the engines up to fill the empty spots left by engines that dropped out. As a result there were fewer relegations than those published in the previous seasons. The engines that will play in the entrance league are the top 16 engines in the final standings, from Viridithas to StockDory, not counting Tucano which will play in league 2. 

Interesting games

game 14, ChessFighter - DeepSjeng: ChessFighter was up a pawn in a QB vs QB position. It decided to give the bishop for pawns and this allowed DeepSjeng to force a perpetual check draw. A missed chance for ChessFighter.

game 26, Winter - Clover: Winter was sure it was winning when it reduced to a N vs R ending with 3 pawns up. However, Clover pushed its last pawn to the 2nd rank and this was enough to hold a draw even if Winter queened a pawn.

game 45, 4ku - ice4: 4ku reduced to a RB vs BNN position with two pawns up. It pushed a passer to the 7th rank and seemed to be close to winning, but then it chose to reach a drawn opposite color bishops ending. 

game 63, Equisetum - ScorpioNN: Equisetum was up a knight for a pawn early, ScorpioNN captured another pawn but Equsetum kept its piece advantage and won in a QRB vs QR position. ScorpioNN won the reverse game, perhaps the opening was too unbalanced. 

game 82, Viridithas - BlackMarlin: Viridithas slowly increased the pressure until it captured a pawn and created a passer. In a RB vs RN position Viridithas captured more pawns and reduced to a tablebase win. BlackMarlin only drew the reverse. 

game 84, Stash - Weiss: Stash reached a winning RB vs R position, but it blundered after rooks were exchanged. Weiss managed to exchange pawns and Stash was left with one pawn and the wrong bishop, draw.

game 88, Winter - ChessFighter: The game reached a QR vs RBN position, each side with two passers.  The black pawns were more advanced and for a while Winter was not sure it could win. ChessFighter could have held a draw perhaps, in the end it allowed a piece exchange that reduced to a tablebase win. ChessFighter won the reverse, the game pair was a draw.

game 96, Expositor - Stoofvlees: Expositor increased its opening advantage, the engines reduced to a RB vs RB position quickly and Expositor was a pawn up. Expositor captured a second pawn and used a passer to gain material and win. Stoofvlees won the reverse, still an unexpected loss to a weaker opponent.

game 126, Weiss - Viridithas: Viridithas equalized in a closed position, then took control of the game in a QRN vs QRB position with a passer on the 2nd rank. It took a while to open the position, Viridithas captured the knight for the passer and won in a Q vs QB ending. Viridithas also won the reverse. 

Standings after 3 double rounds: Viridithas +5, Weiss DeepSjeng Caissa +1, Stash BlackCore Booot 0, Equisetum Mantissa Expositor Smallbrain Clover ice4 Tucano -1, StockDory Winter ChessFighter MrBob Bagatur -2, 4ku -3, OliThink -4. Viridithas is actually leading the event, not only the entrance league candidates. It had two double wins in 3 double rounds, but now will face stronger opponents. Caissa and DeepSjeng also started well.

game 131, Bagatur - ChessFighter: All the white pieces were on the queen side in a closed position, ChessFighter opened the king side and attacked the white king to win. ChessFighter also won as white.

game 138, Equisetum - Stoofvlees: Stoofvlees had a bishop pair, but Equisetum had strong knights and advanced passers. Equisetum used its passers to gain material and win. Stoofvlees won the reverse, it still has difficulties against weaker opponents. 

game 156, Caissa - Seer: When the position opened Caissa was down a pawn but had an advanced passer. Caissa traded the passer for a knight, then reduced to a winning RBN vs RN position. Seer won the reverse game, Caissa drew the game pair.

game 168, Viridithas - Igel: Viridithas had an advantage in a QB vs QB position but gave it up when it exchanged all pieces. It managed to capture 3 pawns, but with 3 sets of doubled pawns it could only get a draw. 

game 177, BlackCore - Halogen: BlackCore was up a pawn in a B vs N position, and it managed to win in a long endgame. Halogen won the reverse game.

game 179, Mantissa - Stoofvlees: Stoofvlees equalized with most pawns on the board, then reduced to a QB vs QB position with connected passers. After some shuffling the queens were exchanged and Stoofvlees captured two pawns. Mantissa couldn't hold the opposite color bishops ending, Stoofvlees pushed its passers to win. Stoofvlees also won the reverse game. 

game 200, Caissa - DeepSjeng: Caissa captured a knight for two pawns after the start. It then traded its queen for two rooks, and reached a RRN vs Q imbalance with equal pawns. It used passers to gain a piece and then mated. DeepSjeng started the reverse game similarly but couldn't convert the initial advantage to a win.

Standings after 5 double rounds: Viridithas +3, Caissa +2, SmallBrain +1,  DeepSjeng Expositor Clover 0, Weiss ChessFighter Stash BlackCore Booot Tucano StockDory -1, Equisetum MrBob Winter -2, Mantissa 4ku -3, ice4 Bagatur -4, OliThink -6. Viridithas still leads, though it lost twice against strong opponents. Caissa is in second place after beating DeepSjeng, SmallBrain climbs to 3rd.

game 215, 4ku - MrBob: 4ku traded its queen for RN and 3 pawns early in the game. There was a long shuffle in a RNN vs QR position, a few moves before a 50-move draw 4ku blundered. MrBob managed to capture pawns, then it used a passer on the 2nd rank to reduce to a tablebase win. MrBob also won the reverse game.

game 224, Booot - Weiss: The game reached a RNN vs RR position with most pawns on the board. Booot used the knights to block the black rooks, the white king moved forward and Booot captured pawns. It used its passers to win. 

game 230, Clover - Wasp: Clover was up a pawn early, the game reached a QNN vs QBB position. Clover pushed a passer and Wasp gave a bishop for it. The material advantage was enough for a win.

game 238, SmallBrain - SlowChess: SmallBrain was a pawn up early, after a long period of mostly shuffling the position opened and SmallBrain created a passer. Eventually SlowChess gave a bishop for the passer and the game reached a winning 7-man RN vs R position. SlowChess won the reverse game.

game 244, Caissa - Minic: Minic didn't castle and one of its rooks was trapped. Caissa sacrificed a knight and exposed the black king, Minic lost its queen for a rook. Caissa chased the black king in a QR vs RRB position, it gained material to win. Minic won the reverse game.

game 250, Leela - Viridithas: Evals were stable for a long time with almost no exchanges, after the queen side opened Leela reduced to a same color bishops ending. It created 3 passers and gave its bishop, Viridithas couldn't stop all the passers and was too late with its own ones. 

game 260, Weiss - Equisetum: The black king stayed in the center, Weiss doubled rooks on the half open e file and increased the pressure. Eventually Weiss gained material and broke through the center to force mate.

game 261, Winter - Stash: Winter slowly increased the pressure on the king side, after opening the f file Winter captured a pawn and reduced to a double knight ending. Two advanced passers gave Winter the win. 

game 277, DeepSjeng - Arasan: DeepSjeng captured a rook for a bishop early in the game. Evals increased slowly, after a long period with no exchanges  the engines reduced to a RB vs R ending which DeepSjeng converted. In the reverse game Arasan did not capture the rook, but it still won. 

game 279, SmallBrain - ScorpioNN: The game reached a QRR vs QRR position with white a pawn up. The black queen was almost trapped by the time ScorpioNN moved it to a more useful location SmallBrain captured a second pawn, then it reduced to a won queen ending. ScorpioNN won the reverse game.

game 281, Clover - rofChade: Clover captured a knight for two pawns, the engines slowly exchanged pieces until only QBN vs QB remained. rofChade had connected passers and Clover played slowly and carefully. Clover managed to capture pawns and control the passers, after exchanging queens it had enough material to win. rofChade won the reverse game. 

Standings after 7 double rounds: Caissa Viridithas SmallBrain DeepSjeng Clover BlackCore +1, Booot MrBob Expositor Mantissa StockDory ChessFighter Weiss Winter -1, ice4 Tucano -2, Stash Equisetum -3, 4ku -6, Bagatur -7 OliThink -8. A group of 6 engines are leading, those that were ahead met strong opponents and lost their lead. There will be more head to head games within this group now. A second group of 8 engines is 1 point behind, these can jump higher is they chance to meet one of the engines at the bottom.

game 305, ChessFighter - Wasp: ChessFighter was up a rook for a bishop and two pawns. Wasp thought its passers were strong enough to secure a draw but it was forced to lose material when ChessFighter attacked the black king. The game reached a RN vs N position, Wasp was up 3 pawns but the white rook captured them to win. Wasp won the reverse game.

game 308, Weiss - Winter: Winter was weak on the dark squares, Weiss used this to attack the black king. Weiss sacrificed two pieces but Winter had to give the material back to avoid mate. The Q vs RN ending with three white pawns was a win for Weiss. The reverse game was a draw. 

game 310, Booot - Expositor: Booot was up a pawn from the opening, the engines reduced to a knight ending. After exchanging most pawns Booot had an advanced passer that Expositor couldn't stop, game over. The reverse game was a draw. 

game 317, Viridithas - DeepSjeng: Viridithas trapped the black LS bishop, after exchanging queens Viridithas captured a pawn. Then it moved a rook forward and captured a second pawn. It used a passer to captured the trapped bishop, the game ended in a tablebase win. The reverse game was a draw.

game 319, Caissa - SmallBrain: SmallBrain gave a rook for a knight to open the queen side and attack the white king. Caissa kept its king safe and reduced to a RN vs BN position, then slowly captured all the remaining black pawns to win. The reverse game was a draw.

game 345, Expositor - ChessFighter: The game reached a RB vs RB position with white a pawn up. Expositor exchanged the pieces and won the king and pawns endgame. The reverse game was a draw.

game 348, Marvin - Mantissa: Mantissa was not careful enough with its king's safety. Marvin opened the king side, Mantissa started to lose material and was mated quickly. The reverse game was a draw.

game 350, Stash - Wasp: Evals were stable for a long while in a closed position. After the position opened and only RRN vs RRB were left Stash created a passer and used it to reduce to a won knight vs pawns ending. Wasp won the reverse game.

game 355, SmallBrain - Weiss: The game reached a RRB vs RRB position and SmallBrain captured a pawn. After a shuffle period SmallBrain exchanged a pair of rooks and captured a second pawn, then queened a passer to win. The reverse game was a draw.

game 363, SlowChess - Clover: Clover played a few weak moves, then traded both bishops for knights. The black king was in danger and Clover exchanged pieces until only RRB vs RNN remained. SlowChess created a passer and queened to win. The reverse game was a draw.

game 366, Viridithas - Revenge: Viridithas opened the king side and Revenge had to protect its king. For a long while the engines shuffled and slowly exchanged pieces, the game reached a QR vs QR position on move 70. Viridithas had a passer on the 6th rank, after 20 moves the passer moved to the 7th rank. Viridithas captured black pawns and reduced to a tablebase win. Revenge won the reverse game.

game 369, Caissa - Ethereal: Ethereal tried to be active against a better white position, it sacrificed a knight for two pawns and created connected passers. Caissa exchanged pawns and created a passer, then traded knight for rook. The engines reduced to a RB vs R ending, Caissa queened first and won. Ethereal won the reverse game.

Standings after 9 double rounds: Caissa Viridithas +2, SmallBrain MrBob +1, Clover StockDory Equisetum Booot Tucano 0, DeepSjeng Weiss BlackCore Winter Stash Expositor -1, Mantissa ChessFighter -2, ice4 -6, 4ku -8, Bagatur -11, OliThink  -12. Caissa and Viridithas both beat a close competitor and survived a strong engine, they lead with two double rounds to go. Five engines with medium low rank were lucky to play against low ranking engines and got double wins: Stash, Tucano, StockDory, Equisetum, MrBob. Luck will be an important factor in the last rounds. 

game 390, Weiss - Expositor: Expositor had a rook and knight stuck on the king side, its king remained uncastled. Weiss attacked through the center, captured 3 pawns and reduced to a won RRB vs RRN position. The reverse game was a draw.

game 391, Stash - StockDory: The engines opened the queen side and both created passers, Stash pinned a bishop on the back rank. Most pieces were exchanged, Stash kept one passer and managed to reduce to a winning king and pawns ending. The reverse game was a draw.

game 393, Equisetum - Booot: The game reached a QN vs Q ending with black two pawns up. Equisetum couldn't find a way to improve, after a long time the game ended in a draw.

game 396, Marvin - Clover: Clover traded its queen for 3 minor pieces, the engines traded pawns and pieces and for a long while it seemed Clover could hold. Clover pushed its last pawn forward, it gave a rook and knight to promote to a queen. This may have been a mistake, Marvin reduced to a R vs BN ending with two pawns up, a 7-man win. The reverse game was a draw.

game 402, SmallBrain - Halogen: The engines opened the king side and both kings were exposed to attack. After many exchanges only RBN vs RBN remained, both king were safe and SmallBrain was up two pawns. The game ended in a tablebase win, the reverse game was a draw.

game 409, Viridithas - Caissa: The game reached a knight ending, material was equal but Viridithas had a protected passer on the 7th rank. Viridithas waited for the right moment, it gave the passer but captured two pawns, enough to win.  The reverse game was a draw.

Standings after 10 double rounds: Viridithas +3, SmallBrain +2, Caissa DeepSjeng BlackCore +1, Clover Booot Weiss Tucano Equisetum Stash MrBob Mantissa 0, ChessFighter StockDory -1, Expositor Winter -2, ice4 -8, 4ku -9, Bagatur -13, OliThink -14. Viridithas took the lead with a win against Caissa, SmallBrain is in second place after a win against Halogen. DeepSjeng and BlackCore used their double wins against low ranking engines to climb back to the top, Mantissa was also lucky to get a double win.

Expositor and MrBob both won twice against low ranking engines, Winter only managed one win and ChessFighter only drew against ice4. 

game 432, Equisetum - Mantissa: Equisetum created a passer in a closed position. When the queen side opened Equisetum captured a pawn and reduced to a QRN vs QRN position. It pushed a second passer forward and captured another pawn, Mantissa lost more material and was eventually mated. The reverse game was a draw.

game 435, Clover - Booot: Both engines had passers, Clover protected its passer better. Booot lost one passer and pushed the other to the 2nd rank, in a QRB vs QRB position Clover captured a pawn and created a second passer. Booot lost its rook for the white passers, game over. In the reverse game Booot had a chance to win but it reduced to a drawn Q vs RN ending.  

game 437, Weiss - Marvin: The game reached a QRB vs QRB position, Weiss gave two pawns and used a back rank pin to reduce to a R vs B ending. It took almost 100 more moves to get to a tablebase win. The reverse game was a draw.

game 446, Seer - DeepSjeng: Seer captured a rook for a bishop and pawn, the game reached  R vs N ending with black two pawns up. DeepSjeng pushed two passers forward, Seer gave the rook to stop them but DeepSjeng couldn't stop an advanced white passer, game over. In the reverse game DeepSjeng had an advantage in a BB vs BN position but couldn't convert to a win. 

game 447, Caissa - Arasan: The engines gradually exchanged pieces, with the white eval advantage increasing. The game reached a rook ending with white a pawn up, this was enough for Caissa to win. Arasan won the reverse game. 

SmallBrain and Viridithas lost to strong engines. Viridithas finished first, tied with MrBob (!!!) at +2, followed by Caissa, SmallBrain, Weiss, Equisetum and Clover at +1.