Thursday, December 31, 2020

Season 20 league 1 statistics

A summary statistics table of previous stages and seasons.  

Draw rate, wins

Final draw rate was 42.9%. 

Game termination

The three most common game termination causes were:

39.3% - SyzygyTB
33.0% - TCEC draw rule
23.2% - Mate

There were no crashes in the stage.

Moves per game


Median= 71.8
Average= 75.9

There were 14 games longer than 100 moves, the longest was 212 moves (Defenchess - Igel, game 68, draw). 

Time per game (hours)


Median= 1:39
Average= 1:37

Openings

There were variable length book openings in this stage chosen by Bastiaan Braams. 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 twice, all but one repeated the same opening variant twice. 

Reverse pairs, wins


Openings were heavily biased in favor of white, there were a lot more biased 1-1 results than usual.

Reverse pairs, same moves


Pairs of reverse games diverged very quickly, only 23.2% diverged immediately out of book, 69.6% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 17 plys (RubiChess - Xiphos, games 10 and 38, Sicilian dragon, Yugoslav attack, Rauser variation, two white wins) 


Tuesday, December 29, 2020

Season 20 league 1 final results

Final standings

Ethereal and rofChade advance to the premier division. After RR2 Ethereal and rofChade were tied at the top and Igel was 0.5 points behind. Ethereal secured 1st place after it won 5/7 game pairs in the second half of the league and lost only one. This included a rare double win against Defenchess. rofChade had 3 wins and 2 losses while Igel had 3 wins and one loss. As a result their final scores were tied, and their head-to-head score was also a tie. The deciding tiebreak was r-mobility, as in league 2.

Nemorino and Defenchess are relegated to league 2. Defenchess was the weakest engine in the league and there was no doubt it would be last. There were 4 other engines that fought to avoid relegation. SlowChess was 0.5 behind after RR2 but it moved up with 3 wins and 2 losses. RubiChess had one win and one loss, it ended with the same score. Xiphos had 4 losses and 3 wins while Nemorino had 3 losses and 2 wins. Both should have been tied in 7th place, however the decider was that Xiphos beat Nemorino twice. This meant that Xiphos ended in joint 4-6th place and Nemorino was relegated without a tiebreak.

The qualifiers will play in the premier division together with Stockfish, Leela, AllieStein, Stoofvlees, KomodoDragon, ScorpioNN, all of which played in season 19 premier division as well.

KomodoDragon is the new Komodo version that uses NNUE technology. It is expected to be much stronger than Komodo was in recent TCEC seasons.

Interesting games

Games 57+85, Xiphos - SlowChess: In game 57 the engines exchanged pieces and the game reached a RRN vs RRB position. Xiphos gave a rook for a bishop and pawn, then moved its remaining rook to the 7th rank. The game ended in a perpetual check. In game 85 SlowChess went a pawn up while Xiphos had an advanced passer in a BN vs NN position. SlowChess captured the passer and reduced to a knight ending. The extra pawn was enough for a win, though it took SlowChess another 40 moves.

Games 58+86, rofChade - Nemorino: Nemorino seemed to be holding even though it was a pawn down in game 58, evals went below 1 in a mostly closed position. With the king holding the center rofChade found a way to open the queen side and create a passer. Nemorino was busy blocking the passer and rofChade broke through the king side and attacked the black king. The game reached a winning queen ending with white 3 pawns up. Game 86 reached a double rook ending after a series of exchanges. Nemorino was a pawn up while rofChade had a passer on the 2nd rank. Evals came down and the game was adjudicated.

Games 62+90, Igel - Ethereal: In game 62 Igel went a pawn up early, then there were long shuffle periods with a few pawn moves in between. On move 126 the engines started exchanging pawns and pieces and opened the position. Igel captured two more pawns before the game reduced to an opposite color bishop ending. Ethereal got one pawn back but Igel had one passer on the 2nd rank and another advancing quickly. Ethereal lost its bishop and the game. In game 90 material was equal when the engines started to shuffle. Ethereal extended the shuffle once with a pawn move, the second time time it lowered its eval and the game was adjudicated.

Games 64+92, Xiphos - rofChade: Game 64 reached a QB vs QB ending. rofChade had an advanced passer on the 2nd rank, and Xiphos chased the black king around the board while capturing pawns. Xiphos managed to capture the black passer and for a while both engines believed it had a clear advantage with evals over 3. However the game eventually reduced to a drawn opposite color bishops ending. In game 92 rofChade attacked on the queen side, it managed to capture a pawn and reduce to a RN vs RB position. A passer on the 7th rank forced Xiphos to lose its bishop, rofChade had enough pawns left to secure the win. 

Games 66+94, RubiChess - Xiphos: In game 66 Xiphos was a pawn up but its king was vulnerable on the back rank. RubiChess moved a rook to the 7th rank and Xiphos had to be careful not to be mated. It traded RB for Q and the game reached a Q vs RN ending. RubiChess captured pawns and created two passers. Xiphos lost its rook but could not prevent a queening, game over. In game 94 material was equal, evals came down after the engines started exchanging pieces and the position opened. The game reached a RRB vs RRN position, both engines managed to created advance passers. However all the passers were stopped and the game ended in a tablebase draw.

Games 67+95, Ethereal - Nemorino: In game 67 the engines reduced to a B vs N ending, white a pawn up. Ethereal sacrificed its bishop and created connected passers in the center that Nemorino could not stop. Ethereal queened a pawn and won. Game 95 went into shuffle mode early, there were no captures until move 84. After the king side opened Ethereal's eval became negative, the engines reduced to a RN vs RN position with black a pawn up. Ethereal had a passer but couldn't move it forward, evals came down and the game was adjudicated.

Games 71+99, Xiphos - Ethereal: Game 71 reached a QBB vs QBN position, Xiphos had connected passers on the queen side. Evals were high for a while but came down after Ethereal exchanged a pair of bishops. Ethereal sacrificed its knight for the two passers and ended the game in perpetual check. In game 99 queens were off early. The engines exchanged pieces until only RR vs RR remained, and Ethereal created connected passers in the center. Xiphos was busy with this threat, it took Ethereal a while but it managed to capture two pawns, enough for a win.

Games 73+101, RubiChess - SlowChess: In game 73 RubiChess gave a rook for a knight and pawn and created connected passers in the center. SlowChess gave a bishop to get rid of the white passers, then RubiChess did the same to capture a black passer. The game reached a RN vs RR ending and was adjudicated a draw. In game 101 SlowChess captured a rook for a bishop and then moved a pawn to the 7th rank. RubiChess managed to block the white passer, and eventually capture it after many exchanges. The R vs N ending was a win for white.

Games 74+102, Ethereal - rofChade:In game 74 Ethereal captured a rook for a bishop and pawn, then reduced to a R vs N ending. A passer on the 7th rank kept the black pieces busy, rofChade managed to capture the passer but Ethereal captured the remaining black pawns. There were enough white pawns left to secure the win. In game 102 rofChade sacrificed a bishop and attacked on the king side. Ethereal protected its king, after exchanging queens rofChade captured a bishop back and remained a pawn up with only rooks an knights left. Evals came down as the engines mostly shuffled until the game was adjudicated..

Games 77+105, SlowChess - Nemorino: SlowChess did not find a way to improve in game 77. The engines gradually exchanged pieces until only QB vs QB were left. Both engines had passers and both kings were exposed, SlowChess ended the game in perpetual check. In game 105 SlowChess gave a bishop for 3 pawns early. SlowChess tried to threaten the exposed white king but was too weak. Nemorino reduced to a RBN vs RN position and captured black pawns until it was a pawn up, forcing a win.

Games 78+106, Xiphos - Igel: Xiphos exposed the black king in game 78, evals increased as it slowly increased the pressure. Igel tried to counter on the back rank but couldn't break through the white defense, while Xiphos captured pawns. The game reached a RN vs RN position with white 2 pawns up, enough for a win for Xiphos. In game 106 the black king side stayed closed, evals came down as the engines exchanged pieces. The game was adjudicated in a drawn QB vs QB position.

Games 81+109, Ethereal - SlowChess: In game 81 Ethereal reduced to a RN vs RN ending a pawn up. It slowly pushed a passer to the 6th rank, then waited for the right moment to trade its rook for the black knight. SlowChess couldn't prevent a queening and a white win. In game 109 the pieces stayed on the board longer and evals came down to 0. Eventually the engines reduced to a drawn rook ending.

Games 83+111, Igel - rofChade: In game 83 Igel opened the queen side after some preparation and shuffling. The back ranks and black king were vulnerable, Igel slowly captured pawns and opened the king side as well. rofChade was 3 pawns down when Igel captured its bishop, leaving a RN vs R position and a white win. In game 111 there were many early exchanges and the game reached a RBN vs RNN position. Evals came down and the game was adjudicated.

Games 84+112, Nemorino - Xiphos: In game 84 Nemorino opened the queen side with a pawn sacrifice, later it got the pawn back and created connected passers. Xiphos blocked the passers and advanced pawns in the center. Evals became negative after Xiphos lost its center pawns and captured one of the white passers. Xiphos pushed a pawn to g3 and Nemorino moved its king out of the corner. Xiphos continued to threaten the white king, Nemorino abandoned its passer and gave material, the game reached a QN vs QR position with only one pawn left for both engines. The rook was much stronger than the knight in the open board, Xiphos eventually won though the game continued for more than 30 moves. In game 112 queen were exchanged early and Xiphos attacked on the king side. Nemorino gave a rook for a knight to move its king out of the corner. In a RRB vs RNN position Xiphos created a passer on the queen side, Nemorino had to protect its king and stop the passer and it started to lose material. A rare double win for Xiphos.


Tuesday, December 22, 2020

Season 20 league 1 after RR2

Standings after RR2

 

Half of the league is over. Ethereal and rofChade are currently leading but the score difference between 1st and 7th place is only 1.5 points, so anything can happen. The only thing I can say with some certainty is that Defenchess is weaker than the other engines in the league, though it too is only 3 points behind.

The openings in this league, chosen by Bastiaan Braams, are more biased than usual. As a result the expected result of a game is a white win, so far there have been 33 white wins, 22 draws and one very surprising black win. This is unusual for TCEC and changes the way we can assess the performance of the engines as the league progresses. Points are less relevant, a good score is a draw with black. The situation becomes clearer only when all the game pairs in a DRR have been played. 

This situation raises the issue of fairness, always a TCEC favourite topic. It seems the challenge for the engines in this league is not the same as that for the engines in other stages this season, or any past TCEC season. The game pairs and double round robins ensure all 8 engines are given the same test, but you could argue that using more balanced openings as usual would have given different results. On the other hand TCEC aims to entertain, not to provide a "true measure" of which engine is "better". Also, you have to admit that defense is an important part of chess. 

I feel a bit uncomfortable with the league. It changes my viewing experience because I have to change my expectations. The excitement of a decisive match is not the same when an engine is given a better starting position and manages to convert. I find it harder to praise an engine that manages to reduce a worse position into a boring draw. From a reporting point of view this requires a different approach, since a decisive game becomes interesting for the competition only in the context of a game pair.

Interesting games

Games 1+29, Xiphos - SlowChess: In game 1 Xiphos attacked on the queen side and went a pawn up. The engines exchanged pieces and the game reached an opposite color bishops ending, draw. In game 29 there were no exchanges until move 44, SlowChess had a small eval advantage after the position opened. Both kings became exposed, SlowChess managed to win in a slow and difficult QR vs QN ending two pawns down. 

Games 2+30, rofChade - Nemorino: In game 2 rofChade was 2 pawns up for a while, Nemorino exchanged pieces and reduced to a RB vs RB position with white a pawn up. Eventually the rooks were exchanged and the bishops were of opposite color, draw. In game 30 Nemorino went a pawn up but got nowhere and evals came down. In a RRB vs RRB position rofChade's eval went negative and gradually increased. It created a passer while giving two more pawns. Nemorino pushed a passer to the 7th rank, both engines had to be careful to prevent pawn promotions. Nemorino thought it was OK for a while but it overlooked some of rofChade's moves. The game reached a R vs RR position, white had 4 pawns but the extra rook was good for a win. Very unusual with these book openings to win in black.

Games 3+31, RubiChess - Igel: In game 3 the action was on the queen side initially. When RubiChess opened the king side and attacked the black king Igel reduced to a Q vs RB position and held the draw. In game 31 Igel managed to block the queen side and trap a black rook and bishop. In a QRN vs QRB position RubiChess was almost completely paralyzed, it gave a rook to free the bishop and lost quickly.

Games 6+34, Igel - Ethereal: In game 6 Igel opened a file on the queen side after some shuffling. The engines reduced to a RBN vs RBN position with white two pawns up. Eventually Ethereal was able to capture two pawns back but by then Igel had advanced connected passers. One passer queened and the game was soon over. In game 34 both engines had passers in the center. After a series of exchanges Igel captured the white passer and the game reached a RBN vs RR position. Ethereal thought it had an advantage with its eval over 2, Igel lost its passers but managed to capture all the white pawns. This left a drawn RN vs R ending.

Games 7+35, Nemorino - Rubichess: In game 7 RubiChess blundered in RR vs RN ending. It gave its knight thinking that the connected passers were strong enough as compensation. Nemorino found a way to stop the passers, and though it was left without pawns the extra rook gave it the win. In game 35 RubiChess had a passer on the 7th rank in a RRB vs RRN position, Nemorino reduced to a drawn rook ending.

Games 16+44, rofChade - RubiChess: It seemed that RubiChess equalized in game 16, reaching a QRB vs QRB position with evals close to 0. After RubiChess captured two pawns rofChade captured a rook for a bishop, then in a long endgame rofChade managed to reduce to a king and pawns endgame. The white king was able to block the black passers but the black king was too far to prevent a queening and a win for white. Game 44 was more straightforward. RubiChess attacked from the open queen side and eventually captured a bishop. A passer in a RBB vs RB position forced rofChade to lose another bishop and the game.

Games 17+45, RubiChess - SlowChess: In game 17 RubiChess went up a pawn early. The engines exchanged pieces until only RB vs RN were left, RubiChess captured another pawn and reduced to a winning rook ending. In game 45 material was equal. SlowChess tried to attack through the queen side but only managed a perpetual check draw.

Games 18+46, Ethereal - rofChade: Ethereal gave a rook for a knight in game 18, then pushed pawns in the center and reduced to a RN vs RR position. rofChade lost a rook trying to stop the pawns, Ethereal managed to promote to a queen and win. In game 46 Ethereal equalized quickly, after the position opened the engines exchanged pieces until reaching a tablebase draw.

Games 22+50, Xiphos - Igel: In game 22 Xiphos was up a pawn with a queen side passer from the start, but it did not push it forward. After a few exchanges Xiphos captured a second pawn and created connected passers. The engines reduced to a rook ending, the white king came forward and Igel couldn't prevent a queening, game over. In game 50 Igel was a pawn up but Xiphos managed to keep a protected pawn on the queen side. Igel couldn't create a passer, evals came down and the game was adjudicated quickly.

Games 25+53, Ethereal - SlowChess: In game 25 Ethereal captured a pawn and later created a passer on the queen side. Ethereal delayed exchanging queens until it was ready, after the exchange only RN vs RN remained. Ethereal captured another pawn and pushed its passers forward. SlowChess lost a rook for one passer, but couldn't stop the other and a white win. In game 53 SlowChess was a pawn up but without a passer. It gave a rook for a bishop and tried to threaten the black king. Ethereal kept its king safe, it gave the material back and evals came down. The game was adjudicated a few moves later.

Games 27+55, Igel - rofChade: Igel had a better pawn structure in a QR vs QR position in game 27, but its eval stayed below 2. Both engines created passers that promoted to a queen, the game reduced to a drawn queen ending. In game 55 rofChade played the middlegame better,  it was down a pawn in a BB vs BN position with a doubled passer on the queen side. Igel lost a bishop to stop the white passers, rofChade kept one pawn safe to win in a bishop vs pawns endgame.


Saturday, December 19, 2020

Season 20 league 2

Final standings


Nemorino and Defenchess advance to league 1, Wasp and Minic are relegated to league 3.

The league was more or less divided into two sections, the top 6 engines had a chance of qualifying and the bottom 4 engines tried to avoid relegation. Both races were close and were decided only in the last few rounds. In the end tiebreaks were needed in both races. Both pairs of tied engines, Defenchess/Vajolet and Seer/Minic, drew their direct encounters. Therefore r-mobility was used as a the second tiebreak.

The tiebreak decision for Defenchess was interesting and a little disturbing. In game 50 Defenchess played Arasan and the game reached a 7-man drawn bishop vs pawns position. Both engines had high evals and played on until a 50-move draw. When Arasan saw the draw is unavoidable it played random moves, and the final position was a win for white if you ignore the 50-move rule. As it is the r-mobility uses 7-man tables to adjudicate and ignores the 50-move rule in tablebase positions, therefore Defenchess was granted an r-mobility win for this draw. This unusual score was enough for Defenchess to beat Vajolet in the tiebreak decision, according to my calculations Vajolet would have advanced otherwise.

The two qualifiers join the following engines in league 1, which will be an 8-engine 2DRR event:
relegated from premier division season 19: Ethereal (Fire does not play in this season)
played in league 1 season 19: Slowchess, Xiphos, RubiChess, rofChade, Igel

Interesting games

Game 6, Fritz - Defenchess: Fritz pushed the h pawn forward on the open h file facing the black king. Defenchess let the pawn reach the 7th rank but kept the king side closed and its king safe. Meanwhile Defenchess captured a pawn and had a pawn majority on the queen side. After many exchanges the game reached a RB vs RB ending, Defenchess had a an unstoppable passer that ensured the win.

Game 10: Pedone - Vajolet: There were almost no exchanges after the start and the engines seemed to be shuffling, then Pedone sacrificed a bishop and attacked on the king side. Most of the black pieces were stranded on the queen side and Vajolet's king was soon in a mating net. 

Game 17, Seer - Defenchess: Seer gave two pawns and attacked the uncastled black king. Defenchess had to give material to stop an advanced passer, the game reduced to a QB vs RBN position. Evals were high but Seer couldn't find a win. It started shuffling in a Q vs R ending, draw after 50 moves.

Game 23, Arasan - Pedone: Arasan captured a bishop for pawns early in the game. Arasan arranged its pieces and then opened the king side. The attack on the black king was deadly, Pedone had to lose material, this led to a Q vs N ending and a win for Arasan.

Game 24, Defenchess - Winter: Winter gave a pawn and created an advanced passer on the queen side. Defenchess blocked the passer, opened the king side and attacked the black king. Defenchess won some material and reduced to a R vs B ending, getting back in time to stop the passer. The game ended in a tablebase win for white.

Game 27, Winter - Nemorino: Winter was up a rook for 3 pawns while Nemorino had a passer on the 2nd rank. Winter may have missed a win due to lack of tablebase support, the game reduced to a tablebase draw with both engines about to queen a pawn.

Game 28, Pedone - Defenchess: Pedone gave a pawn early and created a hole in the pawn wall on the queen side. Much later the white queen advanced through this hole supported by knights, while the white rooks pressed on the king side. Pedone attacked patiently from both sides, by move 90 most of the pawns were gone. Defenchess was forced to trade its queen for a rook to avoid mate, the game was over 15 moves later.

Game 38, Vajolet - Nemorino: Nemorino created a passer on the queen side, then slowly exchanged pieces and pushed the passer forward. Vajolet lost a few pawns while preventing the passer from advancing, The game reached a RB vs RN position with black 3 pawns up, enough for a win. 

Game 45, Winter - Pedone: Winter gave material for a strong attack on the black king. After many exchanges the attack was over in a RBN vs RN position. Pedone was two pawns up, but Winter used the still vulnerable black king to capture the knight and win.

Scores after 9 rounds:  Nemorino +3, Pedone Vajolet +2, Defenchess Winter +1, Fritz +0, Seer Minic Arasan -2, Wasp -3. Races are very tight at the top and at the bottom. In general the engines with positive scores performed well against engines with negative scores, so this divide will probably continue to hold.

Game 46, Fritz - Pedone: Pedone tried to attack on the queen side without success, the game reached a RN vs RB position. Fritz captured a pawn and had connected passers on the king side, while Pedone had a passer on the queen side. Fritz gave its rook to stop the black passer, but Pedone could not stop a white promotion. Pedone lost its rook to prevent a second queening, game over.

Game 49, Nemorino - Minic: Minic seemed to have an advantage in a QBB vs QRN position with both evals over (negative) 3. However it chose to reduce to a drawn queen ending with a pawn up.

Game 52, Arasan - Nemorino: Arasan doubled rooks on the open g file with the black king in the corner on move 19. Not a lot happened and it seemed that Nemorino would hold, even after it gave a rook for a bishop and pawn. The position opened up, Arasan walked its king to safety. Only after move 85 Arasan's threats became effective and it reduced to a winning Q vs R ending.

Game 55, Vajolet - Pedone: Pedone opened the king side and attacked the white king. Vajolet stopped the attack and the game reached a RB vs RB position, Pedone with a pawn up and an advanced passer. Vajolet had to block the passer, Pedone used its rook to capture another pawn and create a second passer, enough for a win.

Game 60, Nemorino - Defenchess: Nemorino had a passer on the queen side, it gave a rook for a bishop and pushed the passer to the 7th rank. Defenchess couldn't get rid of the passer, Eventually it lost a rook for it. The material advantage gave Nemorino the win.

Game 64, Minic - Pedone: Minic was up a rook for a knight early in the game. Minic created a passer on the king side , then after some shuffling reduced to a RR vs RN position. Minic used its strong rooks to slowly capture all the black pawns, Pedone lost its rook for a second passer and mate followed soon. 

Game 69, Winter - Defenchess: Defenchess opened the king side, then gave its queen for a knight. The white king was in danger and Winter gave material back, the attack ended with Defenchess up a piece. The black rooks and bishops were strong on the open board, Defenchess gained more material and was up a rook before tablebase adjudication.

Game 73, Defenchess - Pedone: Pedone made the wrong move and found its king under attack with all its major pieces too far away. One black rook could not return on time and Pedone gave it for a bishop. Defenchess reduced to a winning R vs B ending.

Scores after 15 rounds: Nemorino +5, Vajolet +4, Defenchess +2, Pedone Winter Fritz +1, Arasan -2, Minic -3, Seer -4, Wasp -5. Nemorino and Vajolet opened a small gap at the top, though nothing is decided yet at the top or at the bottom of the table. Only 3 rounds to go.

All draws in round 16, no change in the scores and only 2 rounds left. Nemorino is close to qualification and Arasan is close to being safe.

Game 81, Winter - Fritz: Winter sacrificed a knight for pawns and opened the position. The game reached a RB vs RBN position. Winter had 3 connected passers in the center and Fritz lost a piece for each passer, game over.

Game 83, Nemorino - Vajolet: Nemorino gave a rook for a bishop and pawn and exposed the black king. After many exchanges the game reached a RBN vs RN position, black 2 pawns up. It took Nemorino another 30 moves of slow improvement to win.

Scores after 17 rounds: Nemorino +6, Vajolet Defenchess +3, Winter +2, Pedone +1, Fritz +0, Arasan -1, Minic Seer -4, Wasp -6. Nemorino is sure to qualify, the last round will determine 2nd place. Same goes for the two engines to be relegated. The top 3 and bottom 3 engines play each other in the last round, even draws could be important.

Game 90, Pedone - Winter: Winter's development was slow and its king moved without castling. Pedone attacked quickly, it opened the center and exposed the black king. Winter gave material but that only delayed the mate.

Nemorino, Vajolet and Defenchess beat Wasp, Seer and Minic respectively. Nemorino qualifies and Wasp is relegated, there are ties between Vajolet and Defenchess and between Minic and Seer. In both cases the head-to-head scores are also tied, so r-mobility is used. As a result Defenchess is the second qualifier and Minic is the second engine relegated.

 

Friday, December 18, 2020

Season 20 league 2 statistics

A summary statistics table of previous stages and seasons.  

Draw rate, wins

Final draw rate was 52.2%. 

Game termination

The three most common game termination causes were:

47.8% - SyzygyTB
24.4% - TCEC draw rule
16.7% - Mate

There were no crashes in the stage.

Moves per game

Median= 64.3
Average= 67.5

There were 8 games longer than 100 moves, the longest was 163 moves (Arasan - Winter, game 63, draw). 

Time per game (hours)

Median= 1:05
Average= 1:04

Openings

There were variable length book openings in this stage chosen by Eduardo Sauceda. 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 opening variant twice.

Reverse pairs, wins

Reverse pairs, same moves


Pairs of reverse games diverged very quickly, 46.7% diverged immediately out of book, 82.2% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 16 plys (Wasp - Seer, games 3 and 48, Sicilian, Velimirovic attack, Wasp won as white)     

Sunday, December 13, 2020

Season 20 league 3

Final standings


Minic, Nemorino and Seer advance to league 1. The race at the top was exciting and was not decided until the last round. Minic and Nemorino led the league from the start and finished tied at the top. Four engines fought for 3rd place, all 4 still had a chance of qualifying in the last round. The race ended with 3 engines tied, and Seer qualified by tiebreak.

Marvin and Pirarucu are relegated to league 3, Marvin lost more than half of its games, Pirarucu performed better but was never close to escaping relegation.

There were 3 qualifiers in this league due to Demolito not playing in league 2. This was formally declared only when the league was finished, though it was expected since the report was that there was no response from the engine's author.  

Seer advanced for the 3rd time after starting from the quallification league. This time it advanced as 3rd, so it would be a surprise it it managed to advance again unless there is a significant update.

In this season the tiebreak rules have been changed and r-mobility is used as a second tiebreak after head to head. This tiebreak was used to decide which of Minic and Nemorino finished first in the league, and it was almost needed for the 3rd place tiebreak. I am not comfortable with this rule. I understand the concept but I feel it is not visible enough. It cannot be calculated from the results of the games, and I haven't seen anything keeping track of this score on the website except reports on the chat. It is hard to know which engine has an advantage this way.

The 3 qualifiers will join the following engines in league 2:
Played in league 2 season 19:  Pedone, Vajolet, Winter, Wasp
Played in league 1 season 19: Defenchess, Fritz, Arasan

Interesting games

Game 11, Minic - Tucano: Tucano ignored the danger on the king side and captured a free pawn on the queen side with its bishop. Minic trapped the bishop and opened the king side with a knight sacrifice. Tucano did not have time to free its bishop, it avoided mate by giving material. The game reached a QR vs RR position, a win for Minic.

Game 18, Weiss - Topple: The black queen moved forward early, Topple managed to get it back safely and was up a pawn with a bishop pair advantage. Weiss then used its two knights to trap a rook in the corner, then it attacked the back ranks. After a while Weiss gained some material, and it was able to reduce to a winning R vs B ending.

Game 27, Weiss - Combusken: The engines shuffled in a closed position, then Weiss opened a file on the queen side and created an advanced passer. Most pieces were exchanged and Combusken was forced to lose a rook for a passer, game over. 

Game 35, Seer - Weiss: The game reached a drawn RN vs RB position, all pawns were captured except one black pawn in a 7-man tablebase draw. Then Seer blundered - no tablebase support - and exchanged the minor pieces, losing immediately by a 6-man tablebase win for black.

Game 36, Tucano - Weiss: In a RRB vs RRB position that looked drawn Weiss allowed Tucano to capture a pawn and create a passer. Tucano slowly pushed the passer forward, forcing Weiss to lose material and winning the game.

Game 38, Minic - Combusken: Minic attacked the king side from the start, the black king was exposed and Combusken exchanged pieces to save it. The game reached a Q vs R ending with black two pawns up, Minic won after 35 moves.

Game 45, Weiss - Nemorino: Weiss captured a pawn with its queen, and Nemorino immediately attacked the white king. Weiss lost a rook to save its king, enough for a win for Nemorino.

Scores after 9 rounds: Minic +4, Nemorino +3, Weiss Tucano Combusken +2, Seer +0, Topple Counter -1, Pirarucu -5, Marvin -6. There are 5 engines with positive scores in the qualification race. Pirarucu and Marvin lost more that half of their games with no win, together accounting for half of the decisive games so far.

Game 63, Topple - Weiss: The engines mostly shuffled for almost 100 moves, then evals started to increase. Topple found a way to reduce to a knight ending two pawns up and win.

Game 70, Seer - Combusken: Combusken missed a combination that let Seer capture a knight. Seer reduced to a winning RB vs R ending.

Scores after 15 rounds: Minic +6, Nemorino +5, Seer +4, Combusken +3, Weiss Tucano +2, Counter -2, Topple -3, Pirarucu -6, Marvin -11.  Now there are 6 engines racing for 3 qualification spots. Seer joins the leaders after 4 wins in 6 games. At the bottom Pirarucu and Marvin continue to accumulate losses.

Game 79, Nemorino - Combusken: Nemorino found a way to open the queen side and capture a pawn, then reduced to a winning rook ending two pawns up.

In round 16 Minic, Nemorino and Tucano won their games and Combusken lost. The scores at the top are: Minic +7, Nemorino +6, Seer +4, Tucano +3, Combusken Weiss +2. 

Game 81, Weiss - Tucano: Weiss was up a pawn with an advanced passer in the center. After reducing to a QR vs QR position Weiss captured two more pawns, then reduced to a winning rook ending.

Game 83, Combusken - Minic: Minic was busy defending its king side, Combusken captured two pawns on the queen side and created a passer. Minic gave a rook for a bishop to open the queen side and create some pressure on the white king, Combusken reduced to a winning QR vs QB position.

The scores at the top after round 17: Minic Nemorino +6, Seer +4, Combusken Weiss +3, Tucano +2. The top 2 are almost surely determined with one round to go. A 4-way race for 3rd place, head to head tiebreaks give Seer an advantage over Combusken, and Weiss over Seer and Combusken.

Game 89, Minic - Seer: Minic gave an early pawn and exposed the black king, then continued to give material during the attack which it then won back. The game reached a BNN vs R imbalance, Seer 3 pawns up. Minic used its piece advantage to attack the queen side while Seer pushed a passer on the king side. Eventually both engines queened a pawn and reduced to a QB vs Q ending, which was a win for white.

Game 90, Nemorino - Weiss: Nemorino opened the queen side and attacked the black king. The engines reduced to a QRB vs QRB position, Nemorino used mate threats to increase the pressure until it managed to capture the black queen for its rook. The game was over a few moves later.

Tucano won its last game, while Seer and Weiss lost theirs. As a result there is a 3-way tie for 3rd place including Seer, Combusken and Tucano. Weiss needed a draw to join this group in its last game. Seer qualilfies due to a win against Combusken. 


Friday, December 11, 2020

Season 20 league 3 statistics

A summary statistics table of previous stages and seasons.  

Draw rate, wins 

Final draw rate was 50.0%. 

Game termination

The three most common game termination causes were:

34.4% - SyzygyTB
26.7% - Mate
22.2% - TCEC draw rule

There were no crashes in the stage.

Moves per game


Median= 64.5
Average= 67.7

There were 7 games longer than 100 moves, the longest was 192 moves (Weiss - Counter, game 69, draw). 

Time per game (hours) 


Median= 1:05
Average= 1:03

Openings

There were 4-move book openings in this stage chosen by Cato. The first letter of the ECO codes was distributed as follows:


The engines had some freedom to choose the opening variant, 80.0% of the game pairs repeated the same ECO code twice, and 71.1% repeated the same opening variant. Only in one (2.2%) game pair the ECO first letter was not repeated twice.

Reverse pairs, wins

Reverse pairs, same moves 


Pairs of reverse games diverged very quickly, 35.6% diverged immediately out of book, 68.9% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 9 plys (Tucano - Counter, games 6 and 51, Nimzovich-Larsen attack, modern variation, two draws)    


Monday, December 7, 2020

Season 20 league 4 statistics

A summary statistics table of previous stages and seasons. 

Draw rate, wins

Final draw rate was 56.7%.

Game termination

The three most common game termination causes were:

43.3% - SyzygyTB
22.2% - Mate
20.0% - TCEC draw rule

There was one crash in the stage, Bagatur crashed without playing a single move.

Moves per game


Median= 63
Average= 65.9

There were 7 games longer than 100 moves, the longest was 149 moves (MrBob - Tucano, game 18, draw).

Time per game (hours) 


Median= 1:06
Average= 1:03

Openings

There were 2-move book openings in this stage chosen by Cato. The first letter of the ECO codes was distributed as follows:


The engines had a lot of freedom to choose the opening variant, only 48.9% of the game pairs repeated the same ECO code twice, and 44.4% repeated the same opening variant. However, only in 11.1% of the game pairs the ECO first letter was not repeated twice.

Reverse pairs, wins


Reverse pairs, same moves 


Pairs of reverse games diverged very quickly, 51.1% diverged immediately out of book, 77.8% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 8 plys (Tucano - Halogen, games 14 and 59, KP Colorado counter, two white wins)    

 

Season 20 league 4

 Final standings

Seer, Weiss and Tucano advance to league 3.  Seer and Weiss led the league from the start. Weiss had a strong first half with 7 wins and a +6 score, then it scored only +0 in the second half with 2 losses. One of these losses was to Seer, which went on to win the league. Tucano and Monolith fought for 3rd place and were very close. Monolith had a tiebreak advantage and needed a win in the last round to qualify, but managed only a draw.

Bagatur finished last and is relegated. It was the weakest engine in the league, losing more than half of its games. All 4 engines from the qualification league survived. It should be noted that relegation is not final until the next season starts, depending on available engines and format changes.

The 3 qualifiers will play in league 3 together with:

Relegated from league 2 in season 19: Nemorino
Played in league 3 in season 19 :  Minic, Pirarucu, Marvin, Topple, Counter
Played in qualification league in season 19: Combusken

Interesting games

Game 1, Monolilth - A0lite: A0lite was a pawn down in a RNN vs RBB ending. It took A0lite a long time to take advantage of its bishop pair, after exchanging rooks it went a pawn up and finally won on move 127.

Game 4, Weiss - Seer: Seer was confident it had an advantage, its eval peaking over (negative) 2.5 after Weiss sacrificed a knight for two pawns. Weiss remained calm and exchanged pieces, the game eventually reached a drawn R vs N ending.

Game 6, A0lite - Bagatur: A0lite failed to convert a knight ending a pawn up with a passer.

Game 12, FabChess - Monolith: The black pieces were stuck behind the pawns. FabChess turned a space advantage to a king side attack, which led to a material advantage. It secured the win with a rook up.

Game 19, Monolith - Weiss: Monolith played better in a RRB vs RBN position, black two pawns up. It reduced to a R vs B ending and used zugzwang to capture a pawn and win.

Game 23, Tucano - Monolith: Monolith was up two pawns in a RBN vs RNN closed position. It took Monolith 40 moves to open the position safely and win.

Game 25, Seer - Halogen: Seer had an eval of 3 in a RBN vs RBN position, it probably missed a win. Halogen had an advanced passer, Seer managed to stop it but settled for a draw.

Game 32, Tucano - FabChess: An advanced passer was enough for Tucano to force a win in a RB vs RN ending. 

Game 40, Weiss - Tucano: Weiss trapped the black queen in a corner, then used a passer to capture a knight. Mate was reached more that 40 moves later.

Scores after 9 rounds: Weiss +6, Seer +4, Tucano +2, Monolith +1, FabChess ChessFighter +0, Halogen -2, A0lite MrBob -3, Bagatur -5. The race at the top of the table is open, Weiss will probably qualify. At the bottom Bagatur is likely to be last.

Game 49, Seer - Weiss: Seer attacked on the king side, and reduced to a winning RR vs RB ending.

Game 58, MrBob - Weiss: MrBob gave a rook for a bishop, it blocked the center with advanced pawns and it had a strong central bishop that dominated the dark squares. Progress was slow, MrBob converted its advantage to material only on move 73, and mated not long afterwards. 

Game 59, Halogen - Tucano:  The game reached a RN vs RB position with Halogen a pawn up on move 17, Halogen played better and managed to convert the win.

Game 66, A0lite - FabChess: A0lite blundered in a winning rook ending, it captured a pawn and ended the game in a drawn 6-man position two pawns up.

Scores after 15 rounds: Seer +7, Weiss +5, Tucano +3, Monolith +2, Halogen +1, ChessFighter -1, FabChess -2, MrBob -3, A0lite -5, Bagatur -7. Seer is leading after Weiss lost twice, both will probably qualify. The 3rd place is still contested. Bagatur is still last with a small probability of survival.

All draws in round 16, no change in table. Seer is sure to qualify.

Game 83, Seer - ChessFighter: ChessFighter shuffled for a long while in a RR vs RBB position, before it found the path to victory. After reducing to a R vs RB ending with white 3 pawns up, possibly with the help of a blunder by Seer, ChessFighter managed to protect and advance its last pawn. Seer lost its rook to stop it, game over.

Monolith needed a win in the last round to reach 3rd place since it had a tiebreak advantage over Tucano. However it only managed a draw playing black against MrBob, Tucano is the 3rd qualifier.

 

Friday, December 4, 2020

Season 20 qualification league statistics

A summary statistics table of previous stages and seasons. 

The season 20 qualification league was a bookless event. Therefore the game pairing is not relevant and statistics related to it are not shown.

Koivisto crashed 7 times out of its 12 games. I have decided to disregard all its games in this report.

Draw rate, wins

Final draw rate was 30.0%.

Game termination

The three most common game termination causes were:

46.7% - Mate
30.0% - SyzygyTB
13.3% - TCEC draw rule

There were 7 crashes in the stage, all by Koivisto (its games are removed from this report). The win rule has been disabled, decisive games are played until mate or tablebase position.

Moves per game

Median= 66.5
Average= 72.7

There were 3 games longer than 100 moves, the longest was 224 moves (Cheese - A0lite, game 21, draw).

Time per game (hours) 

Median= 1:05
Average= 1:06

Openings

Books were not used in this stage. The first letter of the ECO codes was distributed as follows:

  

Season 20 qualification league

Season 20 started with a short qualification league with 7 engines participating, and 4 engines advancing. A new league 4 was introduced this season, most engines that played in the season 19 qualification league will play there.

The engines in the qualification league are:

New engines: Koivisto, Halogen, Seer, Stash, MrBob
Played in season 19 qualification league: A0lite
Played in season 17 qualification league: Cheese

Final standings


Seer, Halogen, MrBob and A0lite qualify for league 4. 

Seer, Halogen and  MrBob were much better than the other engines, their final order at the top of the table reflected the games they played against each other. At the other end of the table Cheese and Stash lost most of their games.

Koivisto supplied most of the drama in this stage. It crashed 7 times, including all its games against the top 3 engines, but it won the remaining 5 games. There was a change of rules in this season and engines were not disqualified after 3 crashes. Koivisto was close to qualifying despite its crashes, but it crashed in the last round and A0lite won its last game, finishing in 4th place 0.5 points ahead of Koivisto.

Scores without Koivisto games: Seer +6, Halogen +4, MrBob +2, A0lite +1, Cheese -6, Stash -9.

Two more changes in season 20:
- The win rule has been canceled, decisive games continue until mate or a tablebase position.
- r-mobility has been added as a second tiebreak criterion, replacing crashes.

The 4 qualifiers will join Monolith, ChessFighter, FabChess, Weiss, Tucano and Bagatur (all from season 19 qualification league) in league 4.

Interesting games

Game 2, Halogen - MrBob: MrBob blundered in a rook ending, Halogen sacrificed its rook and won with 3 connected passers.

Game 5, Cheese - Halogen: Cheese used zugzwang to capture a crucial passer in a knight vs pawns ending. Halogen couldn't protect all its remaining pawns with its king alone.

Game 6, A0lite - Koivisto: A0lite's attack on the king side was blocked by a well timed pawn move. Koivisto opened a file on the queen side and forced mate.

Game 18, Halogen - Seer: Seer exposed the white king with a bishop sacrifice, the attack ended in a RN vs Q ending. Halogen had to use all its pieces to block a passer on the 2nd rank, the black king was free to capture pawns and force a win.

Game 21, Cheese - A0lite: A0lite was probably in a winning position in a queen ending with a passer on the 2nd rank. However it failed to convert, Cheese gave checks with its queen and A0lite didn't find a way to avoid this. Pawn moves kept the game alive, A0lite lowered its eval for the draw rule only on move 224.

Scores after 21 games (scores including Koivisto games in parentheses): Seer +3 (+4), Halogen MrBob +1 (+2), (Koivisto -2), A0lite +0 (-1), Cheese -1 (+0), Stash -4 (-5).

Game 25, Seer - MrBob: Seer went a pawn up early, that was enough for a win in a B vs N ending.

Game 27, Koivisto - A0lite: Koivisto was up a pawn in a QRR vs QRR position. A0lite allowed the pieces to be exchanged, leading to a king and pawns ending that was a white win.

Game 28, A0lite - Halogen: A0lite sacrificed a knight to expose the black king but then avoided a repetition draw which allowed Halogen to reduce to a winning endgame. 

Game 37, MrBob - A0lite: A0lite seemed to have an advantage, but it failed to see a repetition draw that followed a queen sacrifice by MrBob.

Game 41, Koivisto - MrBob: Koivisto was in a promising position, heading towards a rook ending with a pawn advantage and an eval close to 3. Then it crashed on move 53.


Saturday, October 24, 2020

Season 19 superfinal games 91-100, season summary

Stockfish wins the season 19 superfinal. The final result is 18-9 with 73 draws. In the last 10 games Stockfish increased its lead by two game pairs.

The superfinal started with relatively a few decisive game pairs, after 50 games Stockfish led 5-4 and only 3 game pairs were decisive. In the second half of the match the draw rate dropped to 64% and the score was 13-5. I think Jeroen mentioned in the chat that the opening bias was designed to increase as the match progressed. Still it was unexpected that Leela did not win any game pair in the second half while Stockfish won 8.

This season Stockfish used NNUE, with a neural net for evaluation (on CPU I think? not sure). The NN revolution that started with AlphaZero, and Leela's first participation in TCEC season 12 two and a half years ago, appears to be complete. This season both TCEC superfinalists, indeed the top 4 engines in the premier league, all used neural nets for evaluation. Other engines switched to NNUE and there may be more new NN engines being developed. How long until there are no "classical" evaluation engines playing in the premier league?

In the lower leagues we saw the rise of SlowChess, a new non-NN engine that started from qualification and reached league 1. Igel started in league 3, then transformed to Igel NN and this boosted it to league 1 as well. In the premier league Stockfish and Leela led from early on and most of the attention was the race at the bottom of the league. Four engines battled against relegation, including former champion Komodo. In the last DRR Komodo moved up with a few rare wins, Ethereal dropped to last while Fire and ScorpioNN were tied in the last round. In the end it was Fire that relegated and ScorpioNN survived.

I suppose the added NN improved Stockfish's opening abilities, this was always the strong point for Leela. Looking at some of the games of the superfinal suggests that Stockfish NNUE and Leela made similar choices in the opening, much more than before. In my statistics report you can see that the distribution of equal moves after book is much more flat than ever before in TCEC, so the game pairs repeated more moves than usual. In games 21-22 with a 2-ply book the games diverged after 21 plys. Games 25-26 also had a 2-ply book, the games diverged after 25 plys ignoring an early move transposition. The engines are still not the same, in games 45-46 there was a 2-ply game and the games diverged after only 6 plys.

On a personal note, in season 19 the blog reached 100K all time views. I enjoy looking at the geographic distribution of readers, spread all over the world. This is not something I imagined when I started it 5 years ago. Thank you for reading, I welcome comments and corrections.

The corona virus is still with us, this week there was a new record of ~500K people testing positive in a day. Please take this seriously, avoid crowded places and unnecessary contacts. Keep yourselves and your family safe. Governments may give bad advice or act slowly, but our personal health depends mostly on our personal behavior.

See you next season,

Go TCEC!!

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

In game 91 Leela developed its rook through the h file and didn't castle, while Stockfish castled long. There were only a few exchanges after the start and the engines locked pawns in the center and queen side. On move 30 Leela opened a file on the king side and evals increased over 1.5. The engines exchanged pieces through the gap until the game reached a RN vs RB position. Leela's eval was over 2 but it couldn't break through the black pawn wall. The engines shuffled and Leela moved its f pawn reluctantly while the evals came slowly down. On move 103 Stockfish took the f pawn and evals dropped close to 0, after a few pawn exchanges the game was adjudicated. Did Leela miss a win?

In game 92 Stockfish castled and Leela kept its king in the center. Leela pushed a pawn on the queen side, a pawn exchange opened a way for a white rook to move forward. Stockfish thought that Leela's move 21 was a mistake, it should have tried to castle its king. When it didn't Stockfish's eval jumped, it sacrificed a knight and forced the black king to move.

Leela's eval reacted 5 moves too late. Stockfish doubled rooks and attacked the a pawn, after a series of exchanges the game reduced to a Q vs QB position and Stockfish had 5 extra pawns for the piece.

Leela had too many pawns to worry about, and its king had no protection except the bishop. Stockfish let the 2 pawns on the queen side be captured while it moved its king forward, finding protection from the black queen that was behind the pawn line.The e pawn marched forward and Leela could not stop it, it lost its queen and the game. Stockfish wins the game pair and its lead increases to +8.

In game 93 there were no exchanges after the start, Stockfish formed a pawn line across the board. After most of the minor pieces were exchanged the engines shuffled for a while, then Leela opened a file on the queen side. The engines exchanged all rooks through the gap in the wall and the game reached a QB vs QB position on move 28. Stockfish gave a pawn and moved its queen forward where it could give checks. Evals were close to 0 and the draw rule stopped the game quickly.

In game 94 Leela formed a pawn line as well but it was less stable than in the previous game. Stockfish exchanged a pair of pawns on move 16 and opened a gap in the line, after a series of exchanges the position opened. Stockfish was a pawn up with a central passer though its pawn structure looked awful. Both kings were vulnerable on the open g file. Stockfish thought it was better with an eval over 2.

Leela placed a rook on the g file first. Stockfish exchanged pawns and removed the black pawn on f5, making its f pawn a passer. Leela blocked the second passer with its rook and Stockfish took over the g file. By the time Leela captured the f pawn Stockfish lined up all 3 major pieces on the g file.

Leela needed all available pieces to defend its king, and one rook was too far to help. Stockfish moved its queen forward and pushed the passer, Leela could not stop it. Stockfish got a bishop for the passer, mate was coming when the game was adjudicated. Stockfish wins another game pair, increasing its lead to +9.

Games 95-96 started with a 20-ply book in the Vienna opening, where the black king moved without castling and white captured a rook with a knight, which is trapped in the corner. In game 95 Stockfish captured the knight and Leela castled its king. Stockfish pushed 4 pawns on the king side, it gave one away but managed to trap and capture a knight. Stockfish's eval was 0, it opened the king side and attacked the white king. After a series of exchanges only RR vs RBN remained on move 38. The engines continued to exchange pieces and pawns, the game ended in a tablebase draw. Game 96 repeated the same moves for 30 plys, except for a few early transpositions, resulting in a R vs NN imbalance and advanced black pawns on the king side. Leela opened the king side and evals were close to 0. The engines reduced to a rook ending with Stockfish a pawn up, the pawns did not move and the game was quickly adjudicated.

Games 97-98 started with a 26-ply book, a high level line in the King's Indian defense, orthodox variation. The center was locked and there were no early exchanges. In game 97 the engines exchanged a pair of pawns and a pair of knights on the queen side, but made no attempt to attack. Stockfish opened a file on the king side and the engines exchanged a pair of rooks. Evals were close to 0, the pawns did not move and the draw rule ended the game quickly. In game 98 Stockfish attacked on the queen side, it captured a pawn and its eval jumped over 1.5. Leela pushed pawns on the king side and gave another pawn, Stockfish's eval dropped back to 0. Leela sacrificed a knight and opened the king side, a queen and a knight were sufficient to force a perpetual check draw.

In game 99 there were a few minor piece exchanges after the start, Stockfish went a pawn up and its eval dropped to 0. The engines started to shuffle on move 25, Stockfish was content in defending its fortress and Leela made no attempt to attack it. There was one pawn move until the game was adjudicated on move 92. In game 100 Stockfish castled long, Leela gave a pawn and tried to attack on the queen side. Stockfish was not worried, its eval dropped to 0 as it exchanged a pair of rooks and created a central passer. Leela was busy blocking the passer, its eval was low enough for the game to end quickly by the draw rule.


Wednesday, October 21, 2020

Season 19 superfinal statistics

A summary statistics table of previous stages and seasons. 

Draw rate, wins
Final draw rate was 73%.

Game termination

The three most common game termination causes were:

62% - TCEC draw rule
26% - TCEC win rule
8% - SyzygyTB

There were no crashes in the stage.

Moves per game

 
Median= 55.5
Average= 69.1

There were 13 games longer than 100 moves, the longest was 213 moves (Stockfish - Leela, game 10, draw).

Time per game (hours)
 
 
Median= 3:51
Average= 3:45

Openings

There were variable length book openings in this stage chosen by Jeroen. The first letter of the ECO codes was distributed as follows:
 
The engines had almost no freedom to choose the opening variant, all games repeated the same ECO twice, 96% of the game pairs repeated the same opening variant.

Reverse pairs, wins

Reverse pairs, same moves  

Pairs of reverse games diverged much more slowly than usual, only 14% diverged immediately out of book, 42% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 21 plys (Leela - Stockfish games 21 and 22, Ruy Lopez Berlin defense - book was 2-ply 1.e4 e5, two draws)