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.