Saturday, August 9, 2025

Season 28 premier division, after RR2

Standings after RR2

Stockfish is in the lead with 5 game pair wins without loss. The surprise is that Integral is in second place with 4 game pair wins and no loss. Leela is only in 3rd place with 3 game pair wins and an unexpected game pair loss to Obsidian. At the bottom of the table Berserk and Ethereal with 4 and 5 game pair losses and no game pair wins.

It is still early, but if Leela fails to qualify for the superfinal this could be a major upset in TCEC. The last time Leela missed a superfinal was in season 22, and before that it was season 16. Adding to the surprise is that this is the first TCEC season for Integral. 

Interesting games

game 1, Leela - Berserk: There was one minor piece exchange after the start, Leela had a space advantage and evals increased. Bersesrk gave a pawn and opened the queen side, Leela created a passer after a rook exchange. In a long shuffle the white king walked to the queen side, then the engines locked the center and king side. Berserk gave a knight for two pawns, Leela moved a rook forward and captured pawns. The game reached a RB vs R position, Leela pushed connected passers to win.

game 3, Stockfish - Ethereal: The engines exchanged pieces slowly and Stockfish's eval increased. The game reached a QN vs QB position, Stockfish threatened the black king and Ethereal exchanged queens. Stockfish created a passer on the queen side and Ethereal pushed a passer in the center. The white passer had pawn support, Stockfish managed to capture the black passer. After Stockfish captured another pawn Ethereal lost the bishop for another passer, Stockfish queened and mated.

game 4, KomodoDragon - Obsidian: The engines exchanged all knights and KomodoDragon had a passer in the center. After a while the engines opened a file on the queen side and exchanged a pair of rooks. The engines traded pawns and KomodoDragon captured two on the queen side. A series of exchanges reduced to a RB vs RB position with white 3 pawns up, Obsidian lost more material and was mated.

game 6, Ethereal - KomodoDragon: The center was blocked, the engines opened a file on the queen side and exchanged queens. KomodoDragon pushed pawns on the king side, most pawns there were exchanged, Ethereal was a pawn up with a passer. After some shuffling Ethereal gave a rook for a knight and captured two more pawns, reducing to a BBN vs RBB position. KomodoDraogon lost a bishop for a passer, more pawns were captured until there was only one white pawn left. KomodoDragon lost material for the last pawn, the game ended in a double bishop mate.

game 9, PlentyChess - Berserk: Berserk castled long, the engines exchanged minor pieces on the king side and Berserk had a triple g pawn. PlentyChess opened the queen side, the black king ran to the center. The game reached a RN vs RB position, the black bishop was trapped and Berserk gave the rook for a knight and pawn to release it. The white king moved forward, PlentyChess created a passer and queened to win.

game 12, Obsidian - Ethereal: There were no exchanges after the start, the center and queen side were blocked. The engines shuffled and pushed pawns on the king side, then opened the h file and exchanged minor pieces. Obsidian captured a pawn, all major pieces were exchanged and only BN vs BN were left. Obsidian had two passers, Ethereal managed to capture one but Obsidian captured two pawns and created another passer. Ethereal couldn't avoid a queening and mate.

game 13, Berserk - Ethereal: The center was blocked, the engines exchanged minor pieces and opened the e file, then opened a file on the queen side. Berserk moved a rook forward and trapped the black king. Ethereal gave a rook for a knight and reducd to a RR vs RB position, Berserk moved the second rook forward and pinned the black bishop. Ethereal delayed with checks but was mated on the back ranks. 

game 14, Integral - Obsidian: The center was blocked, the engines opened a file on the queen side and exchanged all rooks. The engines shuffled for a while and blocked the king side, then reduced to a BN vs BN position. Integral had a passer on the queen side and it captured a pawn. It gave the passer and captured two pawns on the king side. Integral traded pawns and created two passers, Obsidian lost the bishop for one. Integral queened another passer and won.

game 17, Stockfish - Berserk: Berserk castled long, Stockfish exchanged pawns on the queen side and moved its major pieces there and Berserk did the same. After a long wait Stockfish gave a rook and knight for the black queen. The game reached a Q vs RB position, Stockfish pushed a pawn forward and Berserk gave the bishop for it. Stockfish captured pawns and then reduced to a winning king and pawns ending.

game 18, KomodoDragon - PlentyChess: The engines exchanged all bishops, then started a very long shuffle that was extended by pawn moves. After move 110 the engines exchanged pawns and a pair of knights, evals started to increase after KomodoDragon opened the queen side and threatened the black king. In a QRN vs QRN position PlentyChess tried to counter attack with its queen, KomodoDragon created passers in the center and the black defense collapsed. PlentyChess lost material and KomodoDragon reduced to a tablebase win.

game 19, Obsidian - Leela: See featured game below. 

game 22, Leela - Ethereal: The engines blocked the center, there were no exchanges after the start. After a while there were a few pawn exchanges as well as a minor piece exchange, the h file opened. Leela gave a pawn and opened the e file, the engines exchanged a pair of rooks. Leela attacked through the h file, the black king ran to the queen side and the game reached a QRB vs QRB position. Leela regained the pawn and created a passer, then it gave a pawn and shifted to attack the queen side. The queens were exchanged and Leela captured two pawns. Leela pushed the passer and promoted to a knight, expecting Ethereal to give a piece for it but Ethereal decided it can face an extra knight. Leela moved its pieces forward, the black king was trapped and eventually mated.

game 24, Stockfish - KomodoDragon: After a pawn exchange in the center KomodoDragon pushed pawns on the queen side. Stockfish captured a pawn, then trapped a knight on the king side. KomodoDragon traded the knight and a bishop for a rook. Stockfish captured pawns while KomodoDragon attacked the white king through the center. After a series of exchanges the game reached a RBN vs RB position with black two pawns up. Stockfish captured black pawns until none were left, it trapped the black king on the back rank and mated.

Standings after RR1: Stockfish +3, Leela Integral +1, KomodoDragon PlentyChess Obsidian 0, Berserk -2, Ethereal -3. Stockfish leads the table, with five engines chasing. Only Stockfish and Integral are without loss.

game 32, Obsidian - KomodoDragon: The engines opened the center, Obsidian gave a bishop but the black king was stuck in the center and KomodoDragon's king side pieces were not developed. Obsidian captured 3 pawns while KomodoDragon developed pieces, then a series of exchanges reduced to a RR  vs RBN position. The engines traded pawns and Obsidian had a passer on both sides of the board. It pushed both passers slowly, eventually KomodoDragon lost a bishop to capture them. The black king was trapped, KomodoDragon lost more material and was mated. There were two white wins in this game pair.

game 34, KomodoDragon - Ethereal: KomodoDragon gave a knight for two pawns and created connected passers on the queen side. Ethereal captured a pawn back, but KomodoDragon placed a rook on the 7th rank and pushed the passers forward. Ethereal lost a rook for one passer, the engines reduced to a RB vs BB position. For the second passer Ethereal lost a bishop, KomodoDragon chased the black king and mated. There were two white wins in this game pair.

game 39, Integral - KomodoDragon: The engines formed a blocked line of pawns across the board, where only the h pawns had a chance of exchange. The was a long shuffle, most pieces were concentrated on the king side. On move 74 Integral's eval jumped, it sacrificed a knight and a bishop for two pawns and created connected passers on the queen side. KomodoDragon had 3 pieces that couldn't get out of the king side corner. Integral exchanged queens, KomodoDragon lost a knight and a rook for two passers. In a RRN vs RBN position the black king was trapped and eventually mated on the back rank. 

game 41, Ethereal - Berserk: There were a few pawn exchanges after the start, Ethereal had a space advantage. The black king was threatened on the long diagonal, Berserk exchanged most minor pieces and its last bishop was restricted. Ethereal opened the h file, in a series of exchanges it captured two pawns and reduced to a RN vs RB position. Ethereal pushed passers forward, queened and mated. There were two white wins in this game pair.

game 43, KomodoDragon - Leela: The center was blocked, Leela had a space advantage. Leela pushed pawns on the queen side, KomodoDragon exchanged a pair of pawns to free space on the king side. KomodoDragon created a passer in the center, Leela pushed pawns on the king side. The white king felt threatened and it walked to the queen side. Leela doubled queen and bishop on a long diagonal and the g pawn became a passer on g6. Leela captured a pawn in a series of minor piece exchanges, it connected a second passer on the king side. KomodoDragon gave material to stop one passer, reducing to a QBN vs QRB position. Leela captured two more pawns, the white queen was forced to block a passer. This left the white king vulnerable, Leela attacked and mated.

game 44, Stockfish - PlentyChess: The center was blocked, Stockfish castled long and PlentyChess kept its king in the center. PlentyChess captured a pawn on the queen side and tried to attack the white king but was not strong enough. Stockfish created a passer in the center, then shifted its pieces to the king side. Stockfish gave a rook for a bishop and pawns to open the king side and expose the black king. Stockfish connected a second passer, PlentyChess managed to capture both passers but it lost material and the game reached a QBN vs QN position. Stockfish pushed passers forward, queened and mated.

game 48, Integral - Ethereal: The center was blocked, Ethereal castled long and Integral kept its king in the center. All pawns were on the board, the engines exchanged a pair of knights. Integral pushed pawns on the king side, the first pawn exchange was on the queen side and the a file opened. Integral attacked the black king and the engines exchanged queens, a pawn exchange on the king side created a white passer. Integral gave a rook for a bishop, the game reached a BB vs RB position. Ethereal gave two pawns to create a passer on the queen side, Integral lost a bishop for it but was still 4 pawns up. Ethereal lost all its pieces and managed to stop all pawns except one, Integral queened and won.

game 49, Integral - Berserk: There were no exchanges after the start, the engines blocked the center and played behind their pawn lines. On move 63 Berserk gave a pawn and another pawn exchange opened the king side. The black king walked to the queen side and the engines moved their major pieces trying to decide where to attack. Evals started increase after move 98, Integral opened two files and created a passer on the king side. Berserk gave a rook for a knight and two pawns to capture the passer, reducing to a QRR vs QRN position. Berserk pushed a passer to e3, the white king walked to the queen side for safety. Then in a series of exchanges the game reached a RR vs R position with black 2 pawns up, Integral exchanged rooks and won.

game 51, Obsidian - PlentyChess: Obsidian opened the b file, exchanged a pair of rooks and controlled the file with another rook. Obsidian placed a bishop on the long diagonal to threaten the black king. When the long diagonal opened the engines exchanged bishops, the white queen moved to the diagonal. The engines exchanged queens and the game reached a RB vs RN position. Obsidian captured a pawn and created a passer, then captured a second pawn. PlentyChess couldn't stop the passer, Obsidian queened and mated.

game 54, Stockfish - Obsidian: The queens were off early and the black king moved without castling. The engines exchanged pieces and pawns, the game reached a same color bishops ending on move 28. Material was equal but there was one isolated black pawn visible to the bishops. It took Stockfish 24 moves to set up the board to force the black bishop away and capture the isolated pawn. Stockfish captured a second pawn and created a passer on the king side, it took longer to crack the queen side pawns. Eventually Stockfish exchanged bishops, queened passers and mated.

game 55, PlentyChess - Ethereal: The engines opened the queen side and gradually exchanged pieces and pawns. On move 44 PlentyChess gave a rook for a bishop and created a passer on the queen side. Ethereal later gave back the material to capture the passer, the game reached a RB vs RN position with white a pawn up. PlentyChess' eval started to increase, it pushed the black king away from the pawns on the king side and exchanged rooks. The white king moved forward and the black king scrambled back, Ethereal noticed it was in trouble many moves too late. PlentyChess drove the knight away, the black king had to keep an eye on the pawns and PlentyChess managed to trap and capture the knight. Then PlentyChess queened a pawn and mated. 

Featured game: Obsidian - Leela
game 19

Leela kept its king in the center, it couldn't develop its king side pieces. The engines pushed pawns on the queen side, Obsidian captured a pawn and created a passer. Leela managed to regain the pawn and it also created a passer, evals started to increase. Obsidian captured a pawn and threatened the black king from the king side. Then it shifted back to the queen side,  it captured the black passer and was a pawn up. Leela created another passer, its eval already over 2.5. 

The black king tried to find safety on the king side. Obsidian moved a rook forward on the king side and pushed pawns there. Leela tried to avoid pawn exchanges but eventually it lost two more pawns and the black king was exposed. 

Obsidian pushed pawns and Leela gave a knight to stop them, Leela lost more material and mate followed. 


Monday, August 4, 2025

Season 28 league 1 statistics

A summary statistics table of previous stages and seasons. 

Draw rate, wins 


Final draw rate was 64.0%. 

Game termination

The three most common game termination causes were:
50.4% - TCEC draw rule
36.0% - Mate
11.0% - 3-Fold repetition

There were no crashes in the stage.

Moves per game

Median= 76.5
Average= 82.3

There were 73 games longer than 100 moves, the longest was 279 moves (Caissa - RubiChess, game 86, draw). 

Time per game (hours)

Median= 1:03
Average= 1:01

Openings

There were variable length book openings in this stage. The first letter of the ECO codes was distributed as follows: 

The engines had almost no freedom to choose the opening variant, all of the game pairs repeated the same ECO code and the opening variant twice.

Reverse pairs, wins

Reverse pairs, same moves

Pairs of reverse games diverged quickly, 31.8% diverged immediately out of book, 54.5% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 37 plys (Viridithas - Stormphrax, games 142 and 208, Sicilian closed variation, two draws. In fact these two games were identical up to a few transpositions, the draw rule ended game 208 a few moves earlier than game 142.) 



Sunday, August 3, 2025

Season 28 league 1

Final Standings

Integral and PlentyChess advance to the premier division. After twso RRs Integral and PlentyChess had a small lead over Caissa and Reckless. In the third RR Integral opened a small gap ahead of PlentyChess and kept it until the end to win the league. In the 4th RR PlentyChess also left Caissa and Reckless behind, but in the last rounds Reckless got closer until it was only 0.5 points behind. In the end PlentyChess managed to hold on to 2nd place. Integral had 12 game pair wins and one loss to Ceres. PlentyChess had 11 game pair wins and 3 losses, it beat Reckless twice and lost to Caissa twice.

Integral and PlentyChess both started the season in the entrance league, and they made it to the premier division. For Integral this is the first TCEC season, for PlentyChess it is the second one. Reckless is also a new engine for TCEC, it started this season in league 2 and was very close to advancing to the premier division as well. 

Integral and PlentyChess will play in the premier division together with Stockfish, Leela, Berserk, Obsidian, KomodoDragon and Ethereal.

Interesting games

game 10, Viridithas - Stormphrax: Virisithas had a bishop pair advantage, it moved a rook to the 7th rank and the engines traded pawns on the queen side. The engines cleared the queen side and exchanged pieces, Viridithas captured a piece and the game reached a QB vs Q ending. It took Viridithas 20 moves to exchange queens, then it captured pawns, queened passers and won.

game 16, PlentyChess - Viridithas: PlentyChess had a bishop pair advantage, evals increased though the engines seemed to be mostly shuffling. PlentyChess opened a file on the queen side and then exchanged queens. The engines reduced to a RBB vs RNN position, PlentyChess captured a pawn and created a passer. After exchanging a pair of minor pieces PlentyChess captured two more pawns, then queened passers to win.

game 20, RubiChess - Caissa: There were many exchanges after the start, the engines opened the center and exchanged queens. The game reached a RB vs RN position with white a pawn up. After exchanging rooks the engines shuffled for a while, RubiChess gave back the pawn to create a passer. Caissa captured the passer, RubiChess went a pawn up again and created two more passers. Caissa lost the knight for one passer, RubiChess queened the other and mated.

game 30, Ceres - RubiChess: There were almost no exchanges after the start, all knights were gone. Evals jumped after move 33, Ceres gave a pawn on the king side, then captured a rook for a bishop and created a passer. RubiChess tried to attack through the open g file, Ceres gave the passer and exchanged queens. In a RRB vs RBB position Ceres pushed a pawn to h6 and created two more passers. RubiChess couldn't avoid a queening and mate.

game 31, Integral - RubiChess: RubiChess blundered in a QRB vs QBB position, it ignored the danger to its king. Integral used this to capture pawns and reduce to a queen ending 3 pawns up. Integral pushed its passers and queened to win.

game 42, RubiChess - Viridithas: RubiChess captured a pawn early, it had a doubled pawn and Viridithas controlled an open file. The engines exchanged pawns and pieces slowly, the game reached a RBN vs RBB position. RubiChess gave a bishop to create a passer which cost Viridithas a rook. RubiChess gave a rook for a bishop and created an unstoppable passer, followed by mate.

game 44, Reckless - RubiChess: There were a few exchanges after the start and the engines shuffled. RubiChess gave a knight for 3 pawns and it had two connected passers. All rooks were exchanged, evals were stable for a long time. After move 80 evals started to increase, Reckless captured one passer and reduced to a QBN vs QB position. Reckless used the exposed black king to capture all the remaining black pawns, then exchanged pieces and won with its last pawn. 

game 55, Integral - Reckless: Reckless gave a knight for 3 pawns, in a RBN vs RB position the last white pawn became a dangerous passer and Reckless gave the bishop to stop it. After exchanging rooks Integral captured all the black pawns and the game reached a bishop and knight ending on move 85. Incredibly, Integral did not find the win even with tablebase support, on move 113 it became too late and on move 122 Integral finished the game with stalemate. Must be some annoying bug, happened because this season there is no tablebase adjudication.

game 62, Caissa - PlentyChess: The engines castled in opposite directions, Caissa pushed pawns on the king side and PlentyChess placed major pieces on the a file. In a series of exchanges the engines reduced to a RBN vs RBN position. Caissa captured pawns anc created two passers, PlentyChess had one passer but it was not enough. PlentyChess lost more material, Caissa queened and mated.

Standings after RR1: PlentyChess +3, Caissa Reckless +2, Integral Stormphrax +1, Ceres Viridithas 0, Seer RubiChess -1, Revenge rofChade -2, Stoofvlees -3. There are 5 engines with positive scores after one RR. Integral and Reckless are without loss, the other 3 leading engines have one loss each. The gaps are still small and the reverse games can change the rankings. Integral gave away a tablebase win against Reckless, unexpected bug.

game 70, RubiChess - Stormphrax: The game reached a RB vs RB position with white a pawn up. Evals were stable for a long time, the engines cleared the queen side pawns and shuffled for a while. Evals increased after RubiChess gave a pawn and pushed a passer to the 7th rank. Eventually Stormphrax lost the rook for the passer, and mate followed.

game 72, Caissa - Seer: The game reached a RB vs RB position, the engines shuffled for a long time. Evals increased after move 133, the engines exchanged rooks and reduced to a same color bishop ending. Seer had two isolated pawns and the black king was too far to protect them. Caissa managed to capture all the black pawns, then queened a passer to win.

game 74, Seer - Ceres: There were many exchanges on the queen side after the start, the game reached a RRB vs RRN position with white a pawn up and the queen side pawns cleared. Seer created a passer and exchanged a pair of rooks. Seer pushed pawns slowly and carefully, after 30 moves the engines exchanged minors and the white passer was on the 7th rank. Ceres captured the passer and Seer created another, after exchanging rooks Ceres couldn't stop the queening and mate followed.

game 85, Ceres - Integral: There were almost no exchanges after the start, Ceres had a space advantage. A series of exchanges opened the center, Ceres pushed a pawn to h6 and evals started to increase. The engines reduced to a RN vs RN position and Ceres pinned the black knight on the back rank. The white king moved forward, Integral captured pawns but lost the knight. Ceres queened a passer, then gave up material but eventually mated.

game 88, PlentyChess - Reckless: There were a few pawn exchanges after the start, the engines opened the e file. Evals increased slowly, after move 42 the engines exchanged pieces, the queen side opened and PlentyChess was up a rook for a knight and pawn. The game reached a QRB vs QBN position, PlentyChess captured a pawn and Reckless exchanged queens. Reckless tried to avoid more exchanges but PlentyChess captured the bishop, it then queened a passer and mated.

game 94, Reckless - Seer: Reckless gave a pawn to open the d file, then regained the pawn in a series of exchanges. It created a passer on the queen side, Seer gave a rook for a bishop to capture the passer and the game reached a RR vs RB position. The engines cleared the queen side pawns and exchanged a pair of rooks. The white king moved forward, Reckles created a passer and pushed it forward to win.

game 98, Ceres - Viridithas: Ceres had a bishop pair advantage, it gave a pawn and opened the center. After exchanging queens the engines concentrated their pieces in the center, eventually Ceres captured a rook for a bishop and the game reached a RR vs RN position. Ceres made slow progress, after 35 moves it reduced to a 7-man position with only one white pawn left. It took another 40 moves to complete the win.

game 103, Integral - Stormphrax: There were almost no exchanges after the start, evals were stable for a long time. After move 45 evals started to increase, Integral captured a pawn and created a passer on the queen side. Integral pushed the passer to the 6th rank, then it captured another pawn and created a passer on the king side. Stormphrax captured the queen side passer but now the black king was threatened. Stormphrax lost material and was mated.

game 120, Reckless - Viridithas: The engines slowly exchanged pieces and pawns, evals were stable for a long time. On move 58 the game reached a RBN vs RBN position, both engines had a passer on the queen side. Evals started to increase when Reckless created a passer on the king side. The engines reduced to a B vs N ending, Reckless captured a pawn and pushed one passer to the 7th rank. Viridithas captured this passer but lost its remaining pawns, Reckless trapped the black king and mated.

game 128, PlentyChess - Caissa: Evals increased as the engines exchanged pieces and pawns, the game reached a king and pawns ending on move 51, a 6-man tablebase win for white. PlentyChess was two pawns up with a doubled pawn, both engines pushed passers forward and both queened. PlentyChess gave one pawn and slowly pushed the other, Caissa delayed as much as possible. On move 102 the passer finally promoted, but Caissa placed its king in a corner where a queening would force a draw. PlentyChess chose to promote to a knight, but that was an immediate draw after exchanging queens. Another tablebase implementation bug, this time by PlentyChess. 

Standings after RR2: PlentyChess Integral +5, Caissa +4, Reckless +3, Ceres Stormphrax Viridithas +1, RubiChess 0, Seer -1, Revenge -5, Stoofvlees rofChade -7. Integral had a good RR2 and it now shares first place with PlentyChess. Caissa and Reckless are close behind, and 3 more engines have positive scores at the half. The 4 leaders all have one game pair loss. In this RR PlentyChess gave away a tablebase win against Caissa.

game 135, rofChade - Viridithas: rofChade captured a pawn and exchanged queens. It had two passers, Viridithas gave a bishop to stop one and the engines reduced to a RBN vs RN position. The engines exchanged rooks and an 8-man position remained. rofChade captured a pawn and used its tablebase support to complete the win in 40 more moves.

game 136, Stormphrax - RubiChess: RubiChess gave a knight for two pawns and then pushed a passer but it was not strong enough. The engines exchanged pieces and reduced to a bishop vs pawns ending. The white bishop blocked black passers, Stormphrax queened a passer of its own to win.

game 137, PlentyChess - Ceres: PlentyChess captured a pawn and exposed the black king. The engines exchanged pawns and both created a passer on the queen side, PlentyChess captured a second pawn and its passer was more advanced. PlentyChess pushed the passer to the 7th rank and gave a rook for a knight, then it queened twice and mated.

game 139, Integral - Caissa: There were many exchanges after the start, the game reached a RB vs RB position with white a pawn up. Integral created a passer on the king side, Caissa tried to delay  bu blocking it with its king. Integral captured another pawn, after a while it gave the pawn back and created another passer. This time Caissa lost the bishop, Integral reduced to a tablebase win and converted it in 30 moves.

game 148, PlentyChess - Viridithas: PlentyChess kept its king in the center and doubled queen and rook on the h file. It gave a knight for a pawn to weaken the black pawn support on the king side, in a series of exchanges the engines reduced to a rook ending. PlentyChess was two pawns up with connected passers, Viridithas captured one pawn back but couldn't avoid a queening and mate. 

game 150, Caissa - Ceres: There were many exchanges after the start, the game reached a rook ending with no pawns on the king side and white a pawn up. Caissa created a passer in the center, for a long while the engines mostly shuffled. After 50 moves Caissa started to push the passer slowly, after another 30 moves Ceres lost the rook for the passer and mate followed.

game 165, Reckless - Caissa: Reckless captured an early pawn and created a passer on the queen side. Caissa gave a rook for a knight to capture the passer and the game reached a RRB vs RNN position. In a series of exchanges the engines cleared the king side pawns and reduced to a 6-man R vs N ending. It took Reckless 35 move to complete the win.

game 180, Stormphrax - PlentyChess: The engines opened the c file, they exchanged a few pieces including queens. Stormphrax created a passer in a pawn exchange, the engines shuffled for a while while evals increased. The game reached a RRB vs RRB position, the black bishop moved forward and was trapped and captured. Stormphrax exchanged pieces, then gave back the bishop, queened twice and mated.

game 181, PlentyChess - Integral: The engines slowly exchanged pieces and pawns, evals were mostly stable and slightly increasing. On move 73 PlentyChess captured a pawn, a few moves later the engines reduced to a RB vs RN position. Integral tried to block the white passer, it took PlentyChess 35 moves to push it to the 7th rank. PlentyChess captured a second pawn and then reduced to a winning rook ending. 

game 187, Integral - Reckless: There were no exchanges after the start and evals were stable. On move 45 Reckless gave a pawn and the engines started to exchange pieces and pawns. Reckless tried to expose the white king and attack but was not strong enough. The game reached a QBN vs QR position and Integral had a passer. However, Integral attacked the black king instead, when all the white pieces moved forward Reckless was forced to lose material and was mated.

game 194, Caissa - PlentyChess: The engines exchanged all knights, Caissa captured a pawn and then all major pieces were exchanged. The game reached a same color bishop ending, Caissa shuffled for a long time but after 30 moves it managed to capture more black pawns. Eventually PlentyChess lost the bishop for a passer, Caissa queened another passer to win.

Standings after RR3: Integral +8, PlentyChess +6, Reckless Caissa +5, Stormphrax +4, Ceres +1, Seer RubiChess -1, Viridithas -2, Revenge rofChade -8, Stoofvlees -9. Integral is in the lead with a good RR3 including wins against Reckless and Caissa, and with a loss to PlentyChess. PlentyChess lost twice and drew 3 times as white, it is still in second place but there are 3 engines still close behind. At the bottom of the table there are 3 engines which will surely relegate, and 3 more which are trying to avoid the remaining relegation spot.

game 209, rofChade - Reckless: All pawns were on the board untile move 27, after a few exchanges rofChade captured a pawn. After some shuffling rofChade captured a second pawn and the game reached a QRN vs QRN position. forChade slowly pushed a passer to the 7th rank, in a series of exchanges the engines reduced to a rook ending. Reckless captured the passer but rofChade had two more, it queened and won.

game 216, Ceres - Caissa: The engines exchanged queens early, more pieces were exchanged and the game reached a RB vs RN position. The white pieces were better placed, Ceres moved a rook forward, gave two pawns created an advanced passer. Caissa lost the rook for the passer, all pawns were gone and Ceres converted the tablebase win.

game 220, PlentyChess - Reckless: The engines exchanged pieces and the game reached a BN vs BB position. PlentyChess was a pawn up with a passer on the queen side, it pushed the passer to the 7th rank but the white bishop didn't control the promotion square. The engines shuffled for a long time, eventually Reckless captured the passer but PlentyChess captured the last black pawn. There were two white pawns, it took PlentyChess 25 more moves to start to push them safely. Reckless couldn't stop a queening and mate.

Standings with 5 rounds to go: Integral +10, PlentyChess +9, Reckless +5, Caissa +4, Stormphrax +3, Ceres +1, Seer RubiChess 0, Viridithas -2, rofChade -8, Revenge Stoofvlees -11. Integral continues to lead with PlentyChess close behind. The gap to 3rd place Reckless seems to be sufficient to secure the first two places. PlentyChess also beat Reckless in this RR. At the bottom Viridithas is alone in the 4th relegation spot, but it can still close the small gap to Seer and RubiChess in 5 rounds. 

In round 40 Reckless drew as white against Ceres, Viridithas and RubiChess also drew their game. In round 41 PlentyChess drew as white against Stormphrax and Seer drew as white against rofChade. 

game 247, Integral - PlentyChess: The engines slowly exchanged pieces and pawns, evals were mostly stable. On move 39 PlentyChess gave a pawn, opening a file in the center but giving Integral a passer. After a series of exchanges the engines reduced to a rook ending, PlentyChess captured the passer but Integral was still a pawn up. Integral created another passer, the white king moved forward and PlentyChess lost its rook for the passer, followed by mate.

In round 42 PlentyChess lost to Integral while Reckless beat Viridithas, reducing the gap between then to 1 point with 2 rounds to go. Seer also lost as black, its gap to Viridithas also remained 1 point.

game 253, Reckless - Integral: There were a few minor piece exchanges after the start. After move 30 Integral gave a pawn and opened the center, the white king was exposed and Integral attacked the back rank. Reckless exchanged queens and the game reached a RBN vs RBN position. Reckless created an advanced passer and eventually Integral lost a knight for it. The engines captured all pawns and Reckless won the 7-man position in 45 moves. 

In round 43 Reckless beat Integral and reduced the gap to PlentyChess to 0.5 points. Viridithas beat Stoofvlees and also reduced the gap to Seer to 0.5 points. In round 44 PlentyChess drew as white against Caissa, Reckless drew as black, so PlentyChess finished in 2nd place. Seer lost to Integral and Viridithas drew, their scores were tied in the end. In a special 2-game tiebreak match Viridithas beat Seer, so Seer finished in the 4th relegation spot.


Wednesday, July 23, 2025

Season 28 league 2 statistics

A summary statistics table of previous stages and seasons. 

Draw rate, wins

Final draw rate was 60.6%. 

Game termination

The three most common game termination causes were:
48.9% - TCEC draw rule
37.9% - Mate
9.1% - 3-Fold repetition

There were 4 crashes in the stage, Ginkgo twice and Stormphrax twice.

Moves per game

Median= 76.5
Average= 83.2

There were 62 games longer than 100 moves, the longest was 277 moves (Ginkgo - Uralochka, game 154, draw). 

Time per game (hours)

Median= 1:05
Average= 1:03

Openings

There were variable length book openings in this stage. The first letter of the ECO codes was distributed as follows: 

The engines had very little freedom to choose the opening variant, all but one of the game pairs repeated the same ECO code and the opening variant twice. In all of the game pairs the first letter of the ECO code was repeated.

Reverse pairs, wins

Reverse pairs, same moves

Pairs of reverse games diverged less quickly than usual, 18.9% diverged immediately out of book, 42.4% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 20 plys (Stormphrax - PlentyChess, games 151 and 217, Nimzo-Indian classical, San Remo variation, two draws) 


Tuesday, July 22, 2025

Season 28 league 2

Final standings

Reckless, PlentyChess, Integral and Stormphrax advance to league 1. Integral and PlentyChess started in the entrance league this season, Integral and Reckless are new to TCEC. Integral, PlentyChess and Reckless led from the start, with Stormphrax close behind. After RR1 Booot, Uralochka and Horsie were also close to the leaders, only Booot remained in the race after RR2. After RR3 Stormphrax and Booot couldn't keep up with the three leaders, and in the last RR Booot dropped from the race as well.

Reckless and PlentyChess finished the league with 13 game pair wins and no losses, each with two game losses. Somehow Ginkgo gave both a free win by crashing. Integral also finished with only 2 game losses, it won 11 game pairs and lost one to Reckless. Stormphrax also crashed twice, but only as it was about to be mated so there was no unwanted effect on the scores.

The four qualifiers will play in league 1 together with:
played in the premier division in season 27: Caissa, Seer
played in league 1 in season 27: Ceres, RubiChess, rofChade, Viridithas, Stoofvlees, Revenge

Interesting games

game 3, Booot - Starzix: Booot had a bishop pair, a passer in the center and control of an open file on the queen side. The game reached a QRB vs QRN position with white a pawn up, Booot gave the pawn back, pushed the passer and exchanged queens. Starzix captured the passer but lost all its pawns, Booot won the rook ending. 

game 11, Ginkgo - Booot: Both engines had a passer on the queen side in a closed position. Ginkgo moved its king to the queen side and blocked the black passer. After some shuffling Ginkgo pushed pawns and opened the king side. The black king ran to the center, Ginkgo gave a rook for a knight and captured pawns to create more passers. The game reached a RB vs RR position with 5 white pawns, Booot couldn't avoid a queening and mate.

game 18, Integral - PlentyChess: Integral captured a pawn and after some preparation created a passer on the queen side. The game reached a RBN vs RBN position and Integral captured another pawn. After exchanging minor pieces Integral pushed passers forward to win. 

game 34, Reckless - Horsie: Reckless was a pawn up early, it gave the pawn back but the black king was stuck in the center and Horsie had a trapped rook. By the time Horsie freed its rook Reckless opened the king side and threatened the black king. In a QRN vs QRN position Reckless captured a pawn, then reduced to a 7-man queen ending, it took more than 50 moves to mate.

game 47, Booot - Horsie: Horsie grabbed a pawn on the king side, Booot captured one on the queen side and created a passer. The engines opened the center and Horsie created a passer there, the game reached a QRN vs QRB position and Booot connected a second passer on the queen side. Horsie delayed with checks but eveentually lost material to stop the white passers, Booot won a 7-man QN vs Q ending in over 50 moves. 

game 55, Stormphrax - Ginkgo: The game reached a RB vs RB position with white a pawn up. For a long time it seemed the position was drawn, even after Stormphrax created a passer. However Ginkgo' s defense failed in time trouble, Stormphrax pushed the passer and Ginkgo lost a rook followed by mate. 

Standings after RR1: Integral PlentyChess Reckless +3, Uralochka Horsie Stormphrax +2, Booot +1, Velvet -2, Ginkgo Arasan Igel -3, Starzix -5. There are 7 engines with a positive score, 4 of them are without loss - Integral, Reckless, Uralochka and Stormphrax. It is still early for predictions, the picture will be clearer after the reverse games are played. The first several Ginkgo games were replayed because the wrong version was used, it still crashed in one game this RR. 

game 71, PlentyChess - Uralochka: The game reached a BN vs BN position that looked drawn. PlentyChess created a passer in the center and captured a pawn. After exchanging knights evals increased, PlentyChess exchanged pawns, Uralochka avoided a 7-man position by giving a pawn. PlentyChess queened a passer to win.

game 72, Integral - Horsie: Horsie had a passer on the queen side, Integral threatened to open the queen side and also threatened the black king on the king side. Horsie gave a knight for a pawn, this also created a passer for Integral. Integral gave a rook for a bishop and captured the black passer, it pushed its own passer forward. The black queen moved to capture the passer, Integral gave a bishop on the king side and mated.

game 84, PlentyChess - Integral: There was a series of exchanges after the start, then evals increased very slowly. After move 46 PlentyChess opened the king side and reduced to a RBN vs RBN position. The black pawns were weak and PlentyChess captured three pawns. It queened a passer to win.

game 91, Stormphrax - Booot: The engines castled in opposite directions and pushed pawns facing the opponent's king. Stormphrax locked the queen side pawns and opened the f file. It captured a pawn and created connected passers on the king side. After over 30 moves of exchanging pieces slowly the game reached a RB vs RB position with white a pawn up, Booot could not avoid a queening and mate.

game 93, Reckless - Uralochka: Uralochka captured an early pawn but was slow developing its pieces and its king was stuck in the center. Reckless moved a rook forward, regained the pawn and created a passer in the center. Uralochka lost some material to capture the passer, the game reached a RR vs RN position. It took some time for Reckless to capture pawns and create passers, Uralochka gave up and was mated.

game 94, Ginkgo - Horsie: Horsie was a pawn up but its king moved without castling, Ginkgo gave a knight for a pawn and exposed the black king. Horsie gave a rook for a bishop but was under a lot of pressure. Ginkgo doubled rooks on the 6th rank, after a series of exchanges the game reached a queen ending with white two pawns up. The endgame was slow, it took Ginkgo more than 70 moves to mate.

game 101, Uralochka - Velvet: Velvet was a pawn up from the start, the engines exchanged pieces and Uralochka traded two rooks for the black queen. Uralochka captured a pawn and reduced to a RR vs Q ending, this was probably a mistake as evals jumped. Velvet exchanged pawns, then it trapped the white king with its rooks and forced Uralochka to trade its queen for a rook, with mate following.

game 105, Velvet - Horsie: Evals slowly increased with all pieces on the board, Velvet captured a pawn on the king side and Horsie opened the queen side. This led to a series of exchanges that reduced to a RB vs RN position with white two pawns up. Velvet gave a pawn back and created a passer, then it created a second passer, queened and mated.

game 121, Ginkgo - Stormphrax: Ginkgo had a passer in the center and it pushed pawns on the queen side. The queen side opened, Stormphrax block a file with a knight. Stormphrax tried to keep the king side closed and lost a pawn. After a series of exchanges Ginkgo gave a rook for two knights and captured most of the black pawns. Ginkgo pushed passers and gained more material, Stormphrax crashed before mate.

game 127, Stormphrax - Horsie: All pieces were on the board and evals slowly increased. Stormphrax captured a pawn and opened the king side, then it shifted to the queen side and opened files there as well. After some preparation Stormphrax captured another pawn and created a passer on the queen side. Horsie lost more material, the game reached a QR vs QN position with white 3 pawns up. Horsie blocked the white passer but couldn't avoid mate.

Standings after RR2: PlentyChess Integral Reckless +6, Stormphrax +5, Booot +3, Uralochka 0, Ginkgo Horsie -2, Velvet -3, Starzix -5, Igel -6, Arasan -8. At the halfway point there are 5 engines with a positive score. Uralochka and Horsie had a weak RR2 and their ranking dropped. Only Reckless is without loss. Integral, PlentyChess and Stormphrax have not lost a game pair.

game 133, Reckless - Stormphrax: Reckless had a space advantage in a closed position, Stormphrax moved its queen forward and captured a pawn. Reckless trapped the black queen and captured it for two minors. Reckless gave a rook for a knight and threatened mate, Stormphrax gave back the material to save its king. The engines reduced to a Q vs BN ending, Stormphrax crashed in a 7-man lost position.

game 143, Ginkgo - Booot: Booot had a passer in the center but its king was a little exposed. It gave a knight for a pawn to protect its king and attacked the white king through the open h file. Ginkgo kept its king safe, it opened the queen side and the white queen moved forward. The engines exchanged pieces and Ginkgo captured two pawns, then reduced to a winning king and pawns ending.

game 159, Uralochka - Reckless: The engines exchanged pieces and pawns and the game reached a RN vs RN position with white a pawn up. The black pawns were isolated, after a while Uralochka captured all of them and was 3 pawns up. Reckless couldn't stop the white pawns, Uralochka queened all three and mated.

game 173, PlentyChess - Ginkgo: PlentyChess had a blocked passer on the king side in a closed position, for a very long time the engines shuffled. Something went wrong for Ginkgo in time trouble, after move 105 evals started to increase slowly. In a series of exchanges on move 139 PlentyChess reduced to a RN vs RR position, both engines queened and the game went into a tablebase queen ending which PlentyChess won after 45 more moves. 

game 177, Reckless - PlentyChess: PlentyChess moved its king without castling, it tried to find safety on the queen side and evals slowly increased. Reckless captured a pawn, after some preparation it moved a rook forward and captured a second pawn. The engines reduced to a queen ending, Reckless exchanged queens and then queened a passer to win.

game 181, Uralochka - Stormphrax: There were no exchanges after the start and Uralochka had a space advantage. Evals started to increase after Uralochka opened the center, it threatened the black king using long diagonals. Stormphrax was forced to give material to let its king escape, this only delayed the mate.

game 183, Integral - Booot: Integral gave a pawn and pushed its center pawns forward, Booot gave a bishop for the two white pawns. The engines slowly exchanged pieces until only QB vs Q remained. Integral captured a pawn and exchanged queens, the white bishop controlled Booot's pawns and Integral moved its king forward to capture the pawns and win.

game 195, PlentyChess - Igel: The center was closed with open files on both sides. The engines shuffled for a long time, in time pressure after move 85 evals started to increase. The game reached a queen ending with white a pawn up, both engines had a passer. PlentyChess managed to capture black pawns, then pushed passers to win.

Standings after RR3: Reckless +11, PlentyChess +10, Integral +9, Stormphrax +5, Booot +2, Uralochka 0, Horsie -1, Ginkgo -2, Starzix -5, Velvet -7, Igel -10, Arasan -12. After RR3 there are 3 leaders with Stormphrax a bit behind in 4th place. Booot is still in the race but it is 3 wins behind Stormphrax. Reckless lost its first game of the league against Uralochka. 

game 223, Stormphrax - Booot: Evals slowly increased in a closed position, all knights were gone and Stormphrax had a passer in the center. Stormphrax opened a file on the queen side and moved its major pieces there. The game reached a QRB vs QRB position and Stormphrax captured a pawn. In a series of exchanges Booot lost a piece and the engines reduced to a RB vs R ending. Booot lost more material, Stormphrax queened a passer and mated.

Standings with 5 rounds to go: Reckless PlentyChess +12, Integral +11, Stormphrax +7, Booot +2, Ginkgo 0, Uralochka -2, Horsie -3, Starzix -5, Velvet Igel -11, Arasan -12. At this point the three leaders have a 4 win gap to 4th place, all three will qualify but their relative standings may still change. Booot is out of the qualification race, especially after losing to Stormphrax.

game 238, Reckless - Integral: Reckless gave two pawns and exposed the black king, it then captured pawns and the game reached a QNN vs QBN position with white a pawn up. The white knights could protect each other, Reckless used the exposed black king for extra moves. After 30 moves the engines exchanged a pair of knights, 20 moves more and Reckless was 3 pawns up. Reckless exchanged queens and pushed its passers to win.

game 243, PlentyChess - Reckless: PlentyChess was a pawn up, Reckless castled long and opened the king side. PlentyChess kept its king safe and opened the queen side, the game reached a RRB vs RRN position. PlentyChess exchanged a pair of rooks and captued two more pawns, Reckless lost more material and was mated.


Sunday, July 6, 2025

Season 28 entrance league statistics

A summary statistics table of previous stages and seasons.  

Draw rate, wins

Final draw rate was 55%. 

Game termination

The three most common game termination causes were:
45% - mate
41.3% - TCEC draw rule
10.4% - 3-Fold repetition

There were no crashes in the stage. This season tablebase positions do not terminate the game.

Moves per game

Median= 78
Average= 82.0

There were 51 games longer than 100 moves, the longest was 284 moves (Stash - PlentyChess, game 176, draw). The change in game termination criteria caused games to be longer than before.

Time per game (hours)

Median= 1:05
Average= 1:03

Openings

There were variable length book openings in this stage. The first letter of the ECO codes was distributed as follows: 

The engines had almost no freedom to choose the opening variant, all of the game pairs but one repeated the ECO code and the opening variant twice.

Reverse pairs, wins

Reverse pairs, same moves

Pairs of reverse games diverged quickly, 30.8% diverged immediately out of book, 68.3% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 18 plys (Renegade - Arasan, games 15 and 135, QGD Slav, Steiner variation, two draws) 


Saturday, July 5, 2025

Season 28 entrance league

The engines that will play in the season 28 entrance league are:

relegated from season 27 league 1: PlentyChess
relegated from season 27 league 2: BlackMarlin, Arasan, Minic, DeepSjeng
played in season 27 entrance league: Renegade, Altair, Booot, Patricia, Tucano
new to TCEC (played in Swiss tournament): Integral, Starzix, sirius
returning to TCEC: Clover (season 26 league 1), ScorpioNN (season 26 league 2), Stash (season 26 entrance league)

Final standings



Integral, PlentyChess, Booot, Starzix and Arasan advance to league 2. There was a tie in 5th place, Arasan and Clover played a tiebreak match and in the 5th game pair Arasan won.

Integral won 13/15 game pairs without loss, it lost only one game against Booot. PlentyChess won 12/15 game pairs and lost only to Integral. Arasan was in 2nd place after RR1 with 7 wins and one loss, in RR2 it played as black against stronger engines and it drifted down in the table. Booot finished in third without a game pair loss and only one game loss to Integral. Starzix had 3 game pair losses but 10 wins, it finished in 4th place. With only two rounds remaining Clover was able to tie the score with Arasan, their final results were almost identical. A tiebreak match was played and Arasan won. Interestingly both Arasan and Clover lost a game to Patricia, for Patricia the win against Clover was its only game pair win in the league. 

A tiebreak was played between DeepSjeng and ScorpioNN, not sure why it was needed. DeepSjeng won the 2-game match and is officially in 11th place, ScorpioNN is in 12th. 

The 5 qualifiers will play in league 2 together with:
played in season 27 league 1: Igel, Uralochka
played in season 27 league 2: Velvet, Ginkgo, Stormphrax
new in TCEC: Reckless, Horsie (I'm not sure why these are starting in league 2, perhaps based on their results in the Swiss tournament)

Interesting games

game 4, Integral - Starzix: Starzix pushed the f pawn and its king was vulnerable. Integral pushed a pawn to g6 and threatened a king side attack. The engines reduced to a double rook ending and Integral went a pawn up. Integral used a passer on the 7th rank to reach a winning rook ending.

game 8, Patricia - Clover: Patricia controlled an open file on the queen side. After a very long shuffle the king side opened, the white queen moved forward and drove the black king to the center. Patricia had a passer on the 7th rank and active knights, Clover lost material and was eventually mated.

game 12, Stash - Minic: Minic sacrificed a knight to open the king side, it tried to attack the white king. Stash protected its king, gave the piece back and reduced to a RB vs RB ending with a pawn up. Minic lost the bishop for a passer, the game ended in mate.

game 18, Arasan - Altair: Arasan had a space advantage, it gave pawns to open both sides and placed both rooks on the 6th rank. Arasan moved a pawn to g7 and threatened the black king, Altair exchanged pieces but lost material. Arasan converted a RB vs R ending.

game 26, PlentyChess - Clover: PlentyChess opened the queen side, captured a pawn and created a passer. Clover countered with a knight sacrifice to create connected passers on the king side. Clover gave a bishop to capture all remaining white pawns, in  BBN vs N position PlentyChess captured all black pawns and mated.

game 29, BlackMarlin - Minic: BlackMarlin doubled queen and rook on the open h file, Minic countered on the queen side and won a rook for a passer. However, BlackMarlin used the exposed black king to gain material and win a QN vs Q ending.

game 34, Integral - Booot: Booot opened the queen side but its king was stuck in the center. Integral had an active rook on the queen side and it pushed pawns on the king side. Booot kept the king side closed, Integral placed a pawn on the 7th rank. Booot lost material and was mated.

game 50, sirius - Arasan: The game reached a R vs B ending, Arasan was a pawn up with connected passers and one on the 2nd rank. sirius captured one passer and blocked the other, but it couldn't find the winning moves. The game was adjudicated after a very long shuffle on move 282.

game 53, Patricia - Renegade: Patricia went a pawn up in a closed position, after a long shuffle it captured a second pawn. The engines reduced to a double bishop ending, Patricia used a passer to win.

game 69, Clover - Altair: Altair kept the king side closed, Clover captured a pawn and opened the queen side. In a series of exchanges Altair lost two knights for a rook. Clover used a passer to gain more material followed by mate.

game 70, ScorpioNN - Renegade: ScorpioNN gave a rook for a knight and captured black pawns. The game reached a RB vs RR position with 3 white pawns and all black pawns gone. ScorpioNN pushed connected passers and seemed to be winning, but it let Renegade capture a pawn and block the connected passers to hold a draw.

game 78, Arasan - Patricia: In a RR vs RB position Patricia, with no tablebase support,  blundered and exchanged rooks. The result was a 7-man win for Arasan, 80 moves long. 

game 88, Starzix - BlackMarlin: In a closed position Starzix opened the center and its two bishops threatened the black king and pieces. After a series of exchanges the game reached a R vs B ending which Starzix won.

game 94, Integral - Clover: Integral opened the center and created a passer, Clover gave a rook for a knight and tried to counter on the queen side. After exchanging pieces Integral gave back the material, it captured the black pawns on the queen side while Clover captured the center passer. In a RB vs RN position Integral pushed a queen side passer, Clover stopped it but lost its pawns on the king side. Integral pushed passers on the king side to win.

game 101, PlentyChess - Arasan: The engines exchanged pieces in a closed position, PlentyChess created a passer on the queen side and only QB vs QN were left. After exchanging queens PlentyChess created a second passer on the king side to win.

game 106, Altair - BlackMarlin: Altair captured a pawn and reduced to a QRN vs QRN position. After a long preparation Altair captured a second pawn and then converted a knight ending.

game 107, Booot - Starzix: Booot was two pawns up early in a closed position. The engines exchanged pieces until only BBN vs BBN were left, Starzix gave two pieces for the remaining white pawns. Booot captured the black pawns and mated.

game 109, Integral - PlentyChess: Integral created a queen side passer, then captured a pawn and pushed another passer to the 7th rank in the center. PlentyChess blocked the passer, regained the pawn and created a king side passer. It tried to avoid exchanging queens, eventually Integral reduced to an opposite color bishop ending. Integral lost the advanced passer but captured all black pawns, PlentyChess couldn't avoid a queening and mate.

Standings after RR1: Integral +7, Arasan +6, PlentyChess +5, Booot +3, Starzix Clover +2, BlackMarlin Renegade 0, Altair DeepSjeng -1, Tucano -2, Patricia -3, sirius ScorpioNN -4, Minic Stash -5. Integral leads with no loss and one draw with white. Arasan and PlentyChess are close behind, each with one loss and one draw with white. Booot, Starzix and Clover are in the race for the first 5 places which qualify for league 2. 

game 123, BlackMarlin - Arasan: Arasan captured a rook for a knight while BlakMarlin created advanced connected passers in the center. Arasan tried to block, BlackMarlin exchanged pieces and gave a bishop to push a passer to the 7th rank in a Q vs QR position. Arasan could not stop the queenings, it lost material and was mated.

game 134, Integral - BlackMarlin: Evals increased from the start in a closed position, on move 37 Integral went a pawn up and created a passer in the center. Gradually Integral captured all the remaning black pawns, then queened a pawn to win.

game 149, Minic - BlackMarlin: In a closed position Minic managed to create connected passers in the center. BlackMarlin gave a bishop to capture both passers and the game reached a RBN vs RN position. BlackMarlin lost a knight for another passer, Minic won in a KBN vs K ending.

game 154, Booot - Integral: Booot threatened the black king side, Integral moved its queen forward on the queen side and Booot blocked its path back. Integral gave a rook for a knight to open the block. In a QRR vs QRN position Booot captured two pawns, then reduced to a winning R vs N ending.

game 168, Integral - Arasan: Integral gave a pawn open a file on the queen side, then gave another pawn and hid its king behind a black pawn. Integral regained one pawn, it kept pressure on the queen side until Arasan gave a knight for a pawn, but Arasan's counter was weak. Integral created a passer on the queen side and exchanged pieces, it queened and mated.

game 178, PlentyChess - Starzix: PlentyChess attacked on the king side, it gave two minor pieces to expose the black king. In a series of exchanges the engines reduced to a RB vs RN position. PlentyChess was two pawns up, Starzix lost material to stop a queening and was mated.

game 198, Patricia - Arasan: Patricia gave two pawns and attacked the king side. Arasan gave a knight and exchanged pieces, the game reached a QRN vs QR position with black two pawns up. Patricia used the extra piece to capture pawns, it pushed a passer to win. 

Standings with 5 rounds to go: PlentyChess +11, Integral +10, Booot Starzix +6, Arasan +5, Clover +4, Renegade BlackMarlin Altair 0, DeepSjeng Tucano ScorpioNN Patricia -5, Minic sirius -7, Stash -8. PlentyChess and Integral have a significant lead and will probably finish in the first two places. There are 4 engines in the race for the other 3 qualification spots, and anything can happen.

Standings with 2 rounds to go: Integral +12, PlentyChess +11, Booot +8, Starzix +7, Arasan +5, Clover +4, Renegade 0, BlackMarlin Altair -1, Tucano -4, Minic DeepSjeng -6, ScorpioNN sirius Patricia -7, Stash -8. Booot and Starzix will probably qualify in places 3-4. Clover still has a chance of qualifying instead of Arasan, it has a game against Minic as white while Arasan will face Starzix as white.

Clover beat Minic, and there is a tie with Arasan with one round to go.

Arasan only drew against Starzix, there is a tie for 5th place between Arasan and Clover.

 

Tuesday, June 24, 2025

Season 27 superfinal statistics

A summary statistics table of previous stages and seasons. 

Draw rate, wins

Final draw rate was 47%.

Game termination

The three most common game termination causes were:

44% - TCEC draw rule
34% - SyzygyTB
19% - Mate

There were no crashes in the stage.

Moves per game

Median= 78.8
Average= 81.7

There were 16 games longer than 100 moves, the longest was 167 moves (Stockfish - Leela, game 32, draw).

Time per game (hours) 

Median= 4:25
Average= 4:22

Openings

There were variable length book openings in this stage chosen by Jeroen Noomen. The first letter of the ECO codes was distributed as follows:

The engines had almost no freedom to choose the opening variant, all the game pairs repeated the same ECO and the same opening variant twice.

Reverse pairs, wins 

Reverse pairs, same moves

Pairs of reverse games diverged slower than usual, 14% diverged immediately out of book, 40% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 21 plys (Leela - Stockfish games 3 and 4, Nimzo-Indian Rubinstein variation, Stockfish won as white).


Sunday, January 5, 2025

Season 27 superfinal games 91-100, season summary

Stockfish is the winner of the season 27 superfinal. The final score is 35-18 with 47 draws. In the last 10 games Stockfish won 3 more game pairs, extending its lead to 17 wins. Game 94 was an example where Stockfish saw a win and Leela's eval was close to 0, such huge eval differences are quite rare in the recent superfinals. Leela had a promising eval advantage in game 98 but Stockfish managed to reduce to a drawn ending. 

Stockfish won the first two game pairs, but then Leela won 2 of the next 3 game pairs. The reverse games in the two Leela wins ended in a Q vs R endgame fortress, in one of them Stockfish thought it was winning for a while. Stockfish led 3-2 at this stage, it seemed possible the match would be competitive. Stockfish won two more pairs, in one of them Leela had high evals but missed the win in the reverse. Leela won another game pair and the score was 5-3 after 11 game pairs, then Stockfish won 3 pairs in a row and extended the gap to +5. After 16 pairs there were 11 decisive pairs and none had two white wins, then there were two pairs with two white wins and one with a Leela win that reduced to gap to +4. This was Leela's last pair win in the match, Stockfish won 13 more to finish with a +17 gap. There were 14 pairs with two white wins, so Leela won more games but couldn't hold the reverse. In many games Stockfish spent a lot of time in the beginning of the game, more than 40 minutes for one move in some cases. It ran out of time and played on increments as these games continued, sometimes finding a complicated win that neither Leela nor the spectators believed was possible. This season Stockfish again displayed its superiority in converting difficult endgames.

Season 27 leagues started with the entrance league, with 16 engines and 5 advancing. The newcomer Ceres led the league easily, Devre (another newcomer) and BlackMarlin also advanced with almost no game pair loss. For BlackMarlin this was a little surprising based on its predicted strength. Three engines were in the race for the last two qualification spots, in the last round Halogen lost it game, PlentyChess (newcomer as well) and akimbo finished in 4th and 5th places. In league 2 Ceres again won easily and without loss, PlentyChess finished a close second with one loss. There were 5 engines with a chance of qualifying, in the last RR Devre pulled away from the group but was caught again. In the last round Devre held on to 3rd place and Uralochka finished in 4th, tied with Devre and with a small lead over the chasing engines. In league 1 there were three engines in the lead: Obsidian, Caissa and Ceres. After two RRs the three leaders were still close to each other, in RR3 Obsidian pulled away and it continued to lead until the end. Caissa had a weak RR3 and it allowed Ceres to tie the score. However in RR4 Ceres lost 3 times, Caissa also lost a game but it performed better than Ceres and managed to qualify from second place. Ceres finished in third place, the end of its first TCEC season.

In the premier division Stockfish led from the start and finished first. It won 22/28 game pairs without loss, including 3 wins against Leela and 4 draws against Obsidian. Leela was second but Obsidian and Berserk were not too far behind. In DRR3 Leela beat Obsidian and Berserk and opened a gap to finish in second place and qualify for the superfinal. Obsidian was third after DRR3 with Berserk and KomodoDragon chasing. In DRR4 Obsidian had 3 game pair losses, including against KomodoDragon and Ethereal, and only one win. Berserk was solid with one loss and 3 wins and it managed to finish third ahead of Obsidian. KomodoDragon had one win and one loss, only enough for fifth place.

For the last few seasons I have been neglecting the personal section of this season summary. The war in Gaza that started on October 7th 2023 is still ongoing, perhaps the shock I had then makes it hard for me to look back, and when the season ends I just leave the blog until the next league season. Most of the people kidnapped were returned, either dead or alive, but as of June 2025 there are still 50 held in Gaza, about 20 of which are assumed to be alive. Related events in Lebanon, Syria, Yemen and lately Iran make the war in Gaza seem small at times, but it is devastating to the people in Gaza as well as internally for Israel. My concern is for the safety of my family and my country, I have less attention for other things such as the war in Ukraine that is still raging after more than 3 years (Russia using ammunition from Iran and soldiers from North Korea, what???), or an almost war between nuclear powers Pakistan and India.

Still, I hope for a better future, and go TCEC!!

================================

Games 91-92 started with a sideline in the KID, Steiner attack variation. All pieces and pawns were on the board, the white king was in the center and the white king side pieces were not developed. In game 91 Leela castled long and exchanged a pair of bishops on the king side. Stockfish's eval came down, the white queen moved forward on the king side but the black king was safe. Stockfish captured a pawn and created a passer in the center. Leela captured a pawn and then a rook with a knight, but the knight was trapped. Before capturing the knight Stockfish moved a bishop to protect its passer. Leela captured a pawn and tried to expose the black king, Stockfish hid its king behind a white pawn. Then in a series of exchanges the engines reduced to a QR vs QBN position, the black passer was gone and Leela was up two pawns. Evals were low, after exchanging queens the game was adjudicated.

In game 92 Stockfish castled long, the black queen moved forward on the queen side and Leela's eval was unusually high for the first move, over 1.5. Stockfish immediately pushed the g pawn and Leela pushed the b pawn. The engines exchanged bishops on the king side and the white queen was on h6, Leela's eval came down while Stockfish's eval increased. Stockfish ignored Leela's threats on the queen side and prepared a king side attack. On move 17 Leela's eval jumped, Stockfish's g5 pawn attacked a knight defender on f6. 

Leela went on the attack despite the high evals. It gave the knight for a pawn and then gave the second knight to open the b file and create an advanced passer. The white king was in the corner and the black passer reached c2, but then it was Stockfish's turn to attack. Leela gave a rook for a knight to protect its king, Stockfish had time to block the black passer with its queen. After a series of exchanges the game reached a QRB vs QR position and the black c7 passer was gone. Stockfish kept the black pieces away from its king, on move 43 the engines exchanged rooks. 

Stockfish soon saw the win in its PV. It used checks by the queen to capture a few pawns and then forced a queen exchange. The game ended in a tablebase win. Stockfish wins the game pair, it leads 33-18.

Games 93-94 started with a 22-ply sideline in the Sicilian, Scheveningen, classical variation. There was one pawn exchange and all pieces were on the board, white had a space advantage. In game 93 the engines opened the d file, then in a series of exchanges the queens were off as well as minor pieces, Stockfish created a passer in the center. From move 24 the engines played out long PV agreements and evals came down. Leela captured a pawn and created a passer, the game reached a RBN vs RBN position. Stockfish pushed the passer to e2, Leela captured the passer and Stockfish captured the white passer. Both engines created a new passer, Leela captured the black passer on the 2nd rank again. Leela captured the last black pawn and was two pawns up, however evals were close to 0. The game was adjudicated after rooks were exchanged. 

In game 94 Stockfish pushed pawns on the queen side, the engines exchanged pawns, knights, bishops and queens, and opened the d file. The engines played out a long PV agreement and the game reached a RRB vs RBN position with black two pawns up. Leela had a passer on the queen side and its eval was low, Stockfish's eval was around 1.5. 

Stockfish's eval came down and moved back up, it captured the c5 pawn, the engines pushed pawns on the king side and then Stockfish moved a rook to the back rank. The engines cleared the queen side pawns, then Stockfish moved its other rook to the back rank. On move 57 Stockfish's eval jumped, the engines exchanged a pair of rooks. Stockfish was again on increments and Leela's eval did not move. Stockfish exchanged bishops and Leela's eval dropped even further. On move 64 Leela gave a pawn, Stockfish saw the win in its PV. In the 8-man position left, the contrast with Leela's eval was incredible.

Leela's eval started to react only on move 71. The white king and rook hunted the black knight, on move 79 the knight was close to being trapped and Leela gave it up. The game ended in a tablebase win. Stockfish wins the game pair, it leads 34-18.

Games 95-96 started with the Modern defense, Averbach system, played in high level human chess. White had a space advantage, all pieces and pawns were on the board and both kings were uncastled. In game 95 pawn exchanges in the center opened the e file, the engines castled in opposite directions and Leela captured a pawn on the king side. Pawn exchanges opened more files in the center, the game reached a RRN vs RRN position. Leela doubled rooks on the d file, Stockfish's eval came down and a pair of rooks was exchanged. The engines shuffled and Leela's eval also came down. There were a few pawn exchanges and knights were exchanged as well, the game was adjudicated when Leela's eval was low enough for the draw rule. In game 96 there were no exchanges after the start and both engines castled short. The engines blocked the center and a pawn exchange opened the a file. Evals came down as the engines exchanged all rooks as well as queens. The engines shuffled and there were a few pawns exchanges, the game was adjudicated after two more minor piece exchanges.

Games 97-98 started with a 17-ply sideline in the Alekhine defense, Marcozy variation. One pair of knights was exchanged, all pawns were on the board, black had a passer in the center and an eval advantage. In game 97 Leela blocked the black passer with bishops, Stockfish pushed pawns on both sides of the board. The black queen moved forward on the king side and the white king moved without castling. Stockfish's (negative) eval increased and the black queen retreated.  Stockfish pushed the g pawn to g3 and moved the king side rook forward to capture a pawn. Leela captured the g3 pawn, Stockfish gave the rook for a bishop yet Leela's eval also increased. In a pawn trade the white queen moved forward on the king side and Leela created a passer there, Stockfish castled its king long. In a series of exchanges the game reached a RRN vs RBB position, Stockfish captured the white passer and was a pawn up.

Pawn exchanges opened the queen side and Stockfish created a second passer. The black king moved forward and Stockfish pushed a passer to d3. Stockfish gave its rook for the knight and captured another pawn. 

Stockfish saw the win in its PV, it had a skewer attack on the two white rooks but refused to exchange. Stockfish pushed the second passer to a6, the white king moved to help block the white passers and the black king moved forward to support them. Leela lost a rook for one passer to avoid mate, Stockfish captured the remaining white pawns and the game ended in a tablebase win. 

In game 98 the start was similar but not identical to game 97, Stockfish blocked the black passer and Leela pushed pawns on the king side. Stockfish thought for 41 minutes on its 4th move, yet Leela chose a different continuation. The engines played out a long PV agreement, Stockfish captured a pawn on the king side, there was a minor piece exchange on the queen side and the white king moved without castling. Leela regained the pawn and castled long, the engines opened files on the king side and exchanged a pair of rooks. Stockfish's (negative) eval increased, Leela refused to exchange rooks, instead it captured two pawns and exchanged the rook for a bishop, resulting in a QRN vs QBB position with black two pawns up. Leela's (negative) eval started to increase, Leela gave a pawn on the queen side but when it didn't take back Stockfish's eval dropped. The engines exchanged queens and Leela's eval dropped as well. The game reached a B vs R ending, Leela was up two pawns with connected passers on the queen side. Leela pushed the passers forward, Stockfish blocked with its king in front and its rook behind the pawns and there was nothing Leela could do. The engines shuffled until Leela lowered its eval for the draw rule on move 93. Stockfish wins the game pair, it leads 35-18.

Games 99-100 started with a 22-ply sideline in the KID orthodox variation. The center was blocked, all pieces and pawns were on the board. In game 99 the engines exchanged pawns and a pair of knights on the queen side. Leela's eval increased, the engines opened the a file and exchanged a pair of rooks. The engines shuffled for a while and Leela's eval came down. The white king walked to the queen side and the shuffle continued until the engines exchanged rooks on move 59. The engines opened the h file, Leela's eval came down slowly. Stockfish captured a pawn and the black queen moved forward. Leela regained the pawn and captured a knight, Stockfish ended the game in a perpetual check. In game 100 Stockfish pushed pawns on the queen side until it was locked with white pawns on a6 and c6. Leela pushed pawns on the king side, the engines opened the h file but completed a diagonal pawn wall with a black pawn on h3. The engines exchanged a pair of rooks and started to shuffle. Stockfish extended the shuffle with a pawn move, evals came down. On move 126 Stockfish gave a knight for two pawns on the king side, after another shuffle the engines started to exchange pieces. The game reached a B vs N ending, Stockfish was two pawns up but evals were low and the game was adjudicated.