Wednesday, June 17, 2020

Season 18 premier division, final results

Final standings


Stockfish and Leela will play in the season 18 superfinal. Stockfish took the lead in RR3 and never looked back. Leela kept winning in a steady pace to end up in 2nd place. It finally won a game against a top 4 engine, though it was a result of a Stoofvlees blunder. AllieStein stayed in the race until the last two rounds. It had a potential tiebreak advantage over Leela but it couldn't find wins when it needed them, instead it lost to Komodo and couldn't recover. Stoofvlees made a late comeback in the last RR, after losing twice in RR5. Its +4 score after RR2 seems to be a statistical outlier. 

Fire and rofChade are relegated back to league 1. There were 4 leagues this season, and 7 of the 8 engines that promoted at the end of a league were then relegated back in the next league. Only Booot managed to survive its promotion to league 1.

Interesting games
Game 114, Stockfish - Fire: Fire didn't castle and moved its king early, Stockfish's eval increased over 1 as it gathered forces for a king side attack. Fire protected its king and Stockfish shifted to the center and created a passer. It gave a rook for a knight and used a mate threat to reduce to a QRN vs QRR position, with two pawns up. Fire had to block the passer with a rook, this was enough for a win though it took Stocfish a while. 
Game 115, AllieStein - Ethereal: AllieStein pushed a pawn to h6 and attacked the black king, while its king remained uncastled. Ethereal exchanged queens and captured two pawns, yet evals increased quickly. The black king was trapped in the corner, Ethereal relieved the pressure by exchanging pieces until only R vs B remained. The white pawns were out of the bishop's reach, AllieStein captured pawns until getting a tablebase win.
Game 117, rofChade - Stoofvlees: Stoofvlees made a few moves in the opening that were not optimal, rofChade went a pawn up and evals were around 1. Stoofvlees pushed pawns on the king side, it then gave a second pawn and attempted to attack the white king. rofChade gave the pawns back and was confident in its defense despite the two black rooks on the 2nd rank. Then Stoofvlees blundered badly, it went ahead with the attack and missed the threat against its king. It saw the mate coming 4 moves later, too late. rofChade gets its first win in the division, a real blow for Stoofvlees' superfinal chances.
Game 121, Stockfish - rofChade: Stockfish had an eval of 1 from the start. rofChade had problems developing the queen side while Stockfish attacked on the king side, evals increased quickly. Stockfish gave a rook for a bishop and pawn, creating a pawn majority on the queen side and a threat to the black king on the long diagonal. After exchanging queens Stockfish created passers on both sides and rofChade's defense collapsed. Stockfish started to win material and the game was adjudicated.
Game 123, Komodo - Fire: Komodo pushed pawns on the king side and didn't castle its king. The g file opened and one white pawn reached h6, Komodo's eval was over 1. Fire had no real counter, evals slowly increased as Komodo moved both its rooks and its queen to the g file. Fire had to give material to save its king and the game was adjudicated.
Game 129, AllieStein - rofChade: rofChade was up a rook for a bishop exchange early in the game, though AllieStein had a small eval advantage. AllieStein had a strong bishop pair that limited the black pieces. AllieStein castled long, when it was ready it opened the king side with its pawns. For a while the engines seemed to be shuffling, though AllieStein's eval continued to increase. Eventually rofChade gave back the rook to get rid of one of the white bishops. AllieStein pushed a passer to the 7th rank and rofChade gave a bishop to stop it. AllieStein had enough pawns to win in a RB vs R ending.
Game 131, Stoofvlees - Leela: Stoofvlees had an eval advantage in a closed position, Leela defended well. The position opened and the engines reduced to a RN vs RB position with low evals. Suddenly Leela's eval jumped over (negative) 3, Stoofvlees blundered and Leela captured the knight a few moves later. Stoofvlees was 3 pawns up but its pawns were isolated and it couldn't defend them all. Leela kept one pawn safe, it slowly captured black pawns until reaching a tablebase win.
Game 134, Leela - Ethereal: The engines castled in opposite directions, two pawns were exchanged on the queen side and Leela pushed a pawn to h6 on the king side. Evals increased slowly while the engines exchanged pieces and pawns. Leela pushed pawns on the king side, after a series of exchanges only QRN vs QRB remained and Leela had an advanced passer in the center. The engines exchanged queens and the white king moved forward to support the passer. Ethereal gave a rook for a knight to get rid of the passer and the R vs B ending was a win for Leela.
Game 136, AllieStein - Komodo: There were many exchanges after the start and the game reached a RRB vs RRB position on move 22, with AllieStein a pawn up. AllieStein had a 3 to 1 pawn majority on the queen side, after exchanging a pair of rooks its eval jumped quickly to double digits. AllieStein knew it was winning but getting there took 40 moves. First it exchanged pawns on the queen side and created connected passers. Komodo concentrated on blocking the passers, AllieStein captured two pawns on the king side and then reduced to a winning rook ending.

Scores after 35 rounds: Stockfish +9, Leela +7, AllieStein +6, Stoofvlees +2, Komodo -1, Ethereal -4, rofChade -9, Fire -10. Stockfish and Leela continue to lead with two wins each. AllieStein had its best RR so far with 3 wins, it is still in the race. Stoofvlees is practically out after losing twice, including a huge upset by rofChade. No news at the bottom other than now Fire is last. The only question is which engine will beat Fire and rofChade, and how this will affect the race at the top of the table. So far the reverse games have been less exciting, we'll see how the last RR goes.

Game 141, rofChade - Leela: The engines shuffled from move 28, with pawn moves that reset the 50-move counter. On move 158 the engines exchanged a pair of rooks, on move 221 the queens were exchanged and only RB vs RB remained. Leela may have missed a win, rofChade's eval was over (negaitve) 2 for a while. However evals came down as the game continued, adjudication finally came on move 304. 
Game 145, Stoofvlees - rofChade: The engines opened the king side, both kings were exposed and the black king was especially vulnerable on the long diagonal. Stoofvlees gave a rook for a bishop and created an advanced passer in the center. Evals increased quickly while the engines exchanged pieces until only BB vs RN remained. Stoofvlees went 3 pawns up, it promoted a pawn before the game was over.

Scores after 38 rounds: Stockfish +9, Leela +7, AllieStein +6, Stoofvlees +3, Komodo -1, Ethereal -4, rofChade Fire -10. Only one decisive game in 3 rounds. AllieStein couldn't get anyting playing white against Fire. If it wins a game it will have a tiebreak advantage over Leela, so the superfinal race is still open.

Game 154, Stoofvlees - Fire: The black queen moved forward, Stoofvlees used its absence to place a pawn on f6 before exchanging queens. Evals increased as the engines exchanged pieces, they were over 3 when only BN vs BN remained. Material was equal, Stoofvlees moved its king forward and Fire couldn't stop it and protect all its pawns. Stoofvlees captured the white king side pawns and created passers, enough for a win.
Game 159, Leela - Stoofvlees: The game reached a BB vs R ending on move 31, evals over 1.5. Stoofvlees had a passer on the 2nd rank, it took Leela a few moves to get rid of it. Analysis engines were sure Leela was winning, and that move 43 was a mistake. Leela did not find a way to win, the engines shuffled with a few pawn moves in between. The game was adjudicated on move 143.

AllieStein only managed a draw playing black against rofChade, while Leela missed a win against Stoofvlees. No change at the top, only two more rounds to play.

Game 164, Komodo - AllieStein: See featured game below.

At precisely the wrong moment AllieStein lost a game. One round to go there is still a theoretical possibility that AllieStein will finish ahead of Leela, AllieStein has to win in black against Stoofvlees and Leela has to lose in white to Fire.

AllieStein only managed a draw against Stoofvlees, and Leela qualified for the superfinal before its last game. Leela was close to a win against Fire but the game ended in a draw. In any case AllieStein wouldn't have qualified even if it had won its last game. 

Featured game: Komodo - AllieStein
Premier division, game 164
Link to game on TCEC

Komodo had an eval advantage of around 1 from the opening. AllieStein tried to attack on the king side, its queen moved forward and captured a pawn, while its king remained uncastled in the center. Komodo opened a file in the center, its pieces were ready to attack the black king. AllieStein's queen came back quickly, evals were over 2 already on move 19.


Komodo targeted the pinned black knight, AllieStein couldn't castle because the king was a crucial defender. The black pieces surrounded their king, with very little room to move. AllieStein's eval was over 10 on move 25.


Komodo attacked through the center, it gave a rook for a bishop and exposed the black king. Komodo was behind in material but the black king was in front of its defenders, facing 4 white pieces and with nowhere to hide.


The game was adjudicated, both PVs showed how AllieStein loses material within a few moves. There were two white wins in this opening, though the games were very different. I don't think anyone expected Komodo to beat AllieStein this fast, if at all.

Tuesday, June 9, 2020

Season 18 premier division, after RR4

Standings after RR4


Stockfish leads the table, Leela is a point behind while Stoofvlees and AllieStein are still in the race. Stockfish had an outstanding RR3 with a +5 score, including wins against Stoofvlees and AllieStein. This was enough for the lead though it drew all the games in RR4. Leela continues to accumulate wins at a slower pace. Stoofvlees led after RR2 but had only one win since then to compensate for its loss and it dropped to 3rd.

At the bottom Fire and rofChade are on their way back to league 1, it is mostly a question which will finish last. Ethereal and Komodo are stable in the middle of the table, Ethereal is still without a win in the division.

There were 10 decisive games in RR3, of which 5 were Stockfish wins. There were a few more games with winning chances, at least one missed win by AllieStein. RR4 was less interesting with only 3 decisive games, all Fire losses.

Interesting games
Game 57, Leela - rofChade: rofChade was a pawn up with a queen side passer on the 2nd rank that Leela blocked with a rook. Leela exposed the black king and regained the pawn, evals stayed low and the engines shuffled for a while. Leela thought rofChade's move 50 was a blunder, within a few moves Leela captured the black passer and the black defense collapsed. The engines exchanged pieces and reduced to a RBN vs RBN position, Leela was 3 pawns up when the game was adjudicated.
Game 58, Stockfish - Fire: Stockfish had an eval advantage close to 1 after the start, Fire seemed to be holding as the engines slowly exchanged pieces. On move 35 the game reached a QRN vs QRB position and Stockfish's eval jumped over 2. The queens were exchanged and the engines started to capture pawns, Stockfish's eval climbing fast. On move 55 Stockfish went a pawn up, there were only a few pawns left and Stockfish seemed to have an unstoppable passer. Fire gave its last pawn in desperation and the game was adjudicated.
Game 59, AllieStein - Ethereal: AllieStein had a promising QRB vs QRB position with a passer on the 7th rank. Ethereal found a way to exchange pieces and get rid of the passer, the game reached a B vs pawns ending. Ethereal was 2 pawns up, all its pawns out of the bishop's reach. AllieStein wouldn't lower its eval, the game ended in a 50-move draw.
Game 61, rofChade - Stoofvlees: Stoofvlees sacrificed a bishop for pawns, but its attack on the white king wasn't strong enough. The engines reduced to a NN vs R position and the game ended in a tablebase draw.
Game 63, Fire - AllieStein: AllieStein missed a win in this game. Fire was two pawns up in a B vs BN position, with advanced connected passers on the 6th and 7th ranks. AllieStein probably made a wrong choice on move 47, its knight had to protect a pawn and its king blocked the passers, while the black bishop's targets were protected by the white king. The engines shuffled, AllieStein prolonged the game with pawn moves until adjudication on move 171.
Game 65, Stockfish - rofChade: Stockfish had an eval advantage from the start. It pushed the king side pawns forward and didn't castle its king. rofChade moved its queen forward on the queen side and captured a pawn, Stockfish immediately attacked while the black queen was away. It gave a rook for a knight, opened the king side with its pawns and took advantage of the fact that the black queen side pieces were undeveloped. Stockfish used the king side attack to regain the material, and created connected passers. Together with a mate threat this was enough for a win. 
Game 67, Komodo - Fire: Fire was up a pawn early but Komodo pushed a pawn to h6 and trapped a black bishop in the corner. The engines exchanged pieces gradually until only RBB vs RBB were left on move 34. Komodo was effectively a bishop up, the game was adjudicated after a few moves. This is Komodo's first win in the division. 
Game 72, Stockfish - AllieStein: See featured game below. First decisive game in the top 4, first loss for AllieStein.
Game 73, AllieStein - rofChade: AllieStein had a strong central pawn and a space advantage. The pawn became a passer, and eventually rofChade gave a knight to get rid of it. The game reached a RBN vs RN position on move 54, evals were high but AllieStein played 30 more moves of slow progress before the game was adjudicated.
Game 74, Komodo - Stockfish: Stockfish had an eval advantage under 1 (negative) from the start, Komodo had two isolated pawns on the queen side. The engines mainly shuffled and evals stayed constant until move 40. A few piece exchanges later Komodo managed to connect its pawns while Stockfish had a bishop pair and a queen side passer. Stockfish's eval jumped to around 3 on move 60, it used its passer to reduce to a R vs BB ending. The bishop pair was stronger than the rook, the game was adjudicated before Stockfish started to capture pawns.
Game 78, Leela - Ethereal: All the pieces were on the board until move 29, evals increased slowly. Leela had two strong knights in the center, Ethereal gave a rook to take one out. The engines exchanged pieces until only RR vs RBN remained, white two pawns up. Ethereal created a passer but it wasn't strong enough, Leela moved the rooks to the back rank and managed to capture the black knight. A few moves later Leela went a pawn up and the game was adjudicated. 
Game 79, Stockfish - Stoofvlees: Stoofvlees castled long, Stockfish's eval jumped over 1 after it opened the queen side. The white queen and knight chased the black king to the center, then Stockfish's eval jumped again when Stoofvlees gave a rook for a knight. The black king moved forward as Stockfish closed in. Stoofvlees had a 21 minute long think on move 30, the first time it realized it was in trouble. However, Stoofvlees' eval didn't increase fast enough, the white rooks got involved and the game ended with mate on the board. First loss for Stoofvlees in the division.
Game 81, Komodo - rofChade: Komodo had an eval advantage from the start, it pushed the black pieces back and evals increased to around 2. rofChade gave a rook for a knight and pawn, the game reached a RB vs BN ending that was a win for white, though the game continued for 20 more moves.

Scores after RR3: Stockfish +7, Leela +4, Stoofvlees +3, AllieStein +2, Komodo -1, Ethereal -2, Fire -5,  rofChade -8. Stockfish takes the lead after a fantastic RR with 5 wins, including wins against Stoofvlees and AllieStein. Leela took advantage of the losses of its opponents to move up to 2nd place, after a solid +2 in the RR. Komodo had a positve score after it beat Fire and rofChade, it moves away from the relegation line. Fire and rofChade continue to lose games, probably both will relegate. The reverse games are next.
 
Game 91, AllieStein - Fire: AllieStein tried to sacrifice a bishop for pawns and to expose the black king, Fire refused to take back and accepted the pawn loss. AllieStein's eval jumped over 2, and it continued to increase quickly as the engines exchanged pieces. The game reached a knight ending, Fire continued to play another 30 moves before its eval was high enough for the win rule.
Game 98, Stoofvlees - Fire: Stoofvlees pushed pawns on the king side and its eval increased over 1. Fire tried to use open files on both sides but had no real threats. Stoofvlees placed a protected knight on f6, its eval increasing steadily. By move 39 Stoofvlees was a pawn up in a BNN vs BNN position, 10 moves later it was two pawns up in a BN vs NN ending. The game was adjudicated after Stoofvlees went 4 pawns up.
Game 112, Leela - Fire: The engines castled in opposite directions, evals started to increase when Leela pushed pawns on the king side facing the black king. Fire hid its king behind a white pawn and tried to counter on the queen side, but its attack was too weak. Fire gave a rook for a bishop and the game reached a RR vs RB ending. Leela was not in a hurry, the black bishop did not have pawn targets. There were several 2-fold repetitions, eventually Leela found the winning path by capturing pawns and pushing a passer.

Featured game: Stockfish - AllieStein
Premier division, game 72
Link to game on TCEC

Stockfish started with an eval advantage under 1, evals stayed relatively low after the opening. The f file was half open early, nevertheless AllieStein decided to castle short. Stockfish doubled its rooks on the f file and on move 22 it sacrificed both its rooks for BN and exposed the black king. Evals increased to around 1.


Stockfish attacked on the king side, AllieStein exchanged pieces and gave some of the material back to save its king. The game reached a QB vs QR position with white 3 pawns up, evals did not change a lot and it was still possible that AllieStein could hold. 


Stockfish's eval fluctuated wildly for a few moves, the black king was in the corner with the rook pinned. After a few moves with low evals Stockfish found an advantage again, AllieStein captured 2 pawns and chased the white king around while Stockfish's eval increased over 4. When the checks ran out AllieStein was in zugzwang, 


AllieStein started pushing pawns and Stockfish captured them. AllieStein finally realized it was losing when it was down to its last pawn. Stockfish pushed a passer to the 7th rank and the game was adjudicated. 

Tuesday, June 2, 2020

Season 18 premier division, after RR2

Standings after RR2



Stoofvlees is leading with a +4 score, followed by AllieStein, Leela and Stockfish with +2 each. Stoofvlees is the surprise of the division so far, I don't think anyone expected it to perform so well. The leading group is unbeaten so far, there is a clear divide between engines with positive scores and those with negative scores.

Fire and rofChade, the promoting engines, are at the bottom. I think rofChade will relegate, Fire still has a chance to survive. Komodo is dangerously close to relegation, which I didn't expect.

The division started with 5 straight decisive games, but the draw rate has increased significantly since then to around 80%.

There are three NN engines in the leading group, it is quite possible that Stockfish will not reach this season's superfinal. The last time TCEC had a superfinal without Stockfish was in season 10 (Houdini - Komodo), this was the only season this happened since season 4.

Interesting games
Game 1, Leela - rofChade: Leela gave two pawns and developed a strong king side attack. rofChade exchanged pieces and reduced to a QRN vs QRN position, its king behind a white pawn. In desperation rofChade gave a rook and exposed the white king to checks. Leela moved its king to safety and reducd to a RN vs N ending, 4 pawns down but still winning.
Game 2, Stockfish - Fire: The game reached a same color bishop ending., Stockfish a pawn up with a passer. The engines shuffled for a few moves with evals constant. Then Stockfish saw a win, though Fire didn't think it blundered. It took Fire a few moves to see what happened, Stockfish found a way to push the black bishop away and moved its king forward. The game was adjudicated before we saw the win played. 
Game 3, AllieStein - Ethereal: AllieStein had an eval advantage from the start, the black king stayed in the center uncastled and evals increased steadily. The black king side rook was effectively trapped, Ethereal traded it for a knight to slow AllieStein on the king side. The game reached a RR vs RN position, AllieStein's eval was winning though the game continued for another 20 moves.
Game 4, Komodo - Stoofvlees: Stoofvlees went a pawn up and created a pawn majority on the king side. The queen side opened and Stoofvlees' (negative) eval started to increase. Komodo did not defend accurately, Stoofvlees reduced to a QBN vs QBN position and targeted the white backward e pawn. The white king and knight couldn't reach the pawn in time, Stoofvlees exchanged queens and captured it. The two pawns advantage was enough for a win.
Game 5, rofChade - Stoofvlees: rofChade went a pawn up and opened a file on the queen side, Stoofvlees' eval became negative. Stoofvlees threatened the white king on a long diagonal, forcing the white pieces back to defend. The black pieces moved forward on the queen side, Stoofvlees regained the pawn and reduced to a RN vs RB position. Both engines had passers but Stoofvlees' pieces were stronger. It managed to capture all the white pawns, 4 pawns up when the game was adjudicated.
Game 9, Stockfish - rofChade: The game reached a RBN vs Q imbalance, black two pawns up. After some shuffling, and perhaps inaccuracies from rofChade, Stockfish found a combination to capture two pawns and exchange a pair of rooks. rofChade then traded a promoting passer with a bishop and only RN vs Q remained, white two pawns up. rofChade thought it could hold until it realized Stockfish had an unstoppable passer. 
Game 15, Leela - Komodo: The engines castled on opposite sides and the center was blocked. All pawns were on the board and the engines mostly played behind their pawn lines. On move 42 the first pawns were exchanged, Komodo opened a file on the queen side and then sacrificed a knight for pawns to attack the white king. Leela exchanged queens and found safety for its king, the game reached a RRB vs RR position with black 3 pawns up. Leela made slow progress, it made sure to keep one pawn safe and won the RB  vs R ending. 
Game 22, Leela - Ethereal: The game reached a BBN vs Q imbalance early. Leela thought it had an advantage, its eval got close to 1.5. However, after exchanging all rooks Ethereal defended well and evals slowly came down. The engines reduced to a 7-man drawn position and Leela kept playing until move 176. 
Game 25, Komodo - rofChade: Komodo had a strong king side attack. It forced the black king to run to the center, evals were around 2. Most pieces were exchanged and only Q vs RR remained, Komodo couldn't break rofChade's defense and the game ended in a draw after 149 moves. 

Scores after RR1: Stockfish Leela Stoofvlees +2, AllieStein +1, Fire Ethereal -1, Komodo -2,  rofChade -3. The table is split into positive and negative scoring engines. At the top Stoofvlees is in the lead together with Leela and Stockfish, after winning two games playing black. At the bottom rofChade is last, which was expected. Komodo is weaker than I assumed, it used to be be better that Fire and Ethereal. Still many games to be played, the reverse games may change everything.

Game 33, Stoofvlees - rofChade: Stoofvlees' eval increased quickly from the start. It pushed the black pieces back with its pawns, then gave a pawn and attacked on the king side. rofChade gave back the pawn and gave a bishop to force a queen exchange. The black king was out of immediate danger, but Stoofvlees created an advanced passer, both engines agreed that together with the extra piece Stoofvlees was winning.
Game 35, AllieStein - Fire: AllieStein sacrificed a knight for pawns and exposed the black king. Fire kept its king safe, while AllieStein went 3 pawns up with two advanced passers. A series of exchanges reduced to a RB vs RB postion, AllieStein had a protected passer on the 7th rank that kept the black pieces busy, it captured the remaining black pawns and the game was adjudicated. 

After round 9 Stoofvlees moves into the lead, and AllieStein joins the chasing group together with Leela and Stockfish.

Game 42, Stoofvlees - Fire: See featured game below. 
Game 44, AllieStein - Stockfish: The engines opened two files, their remaining pawns locked in three pawn islands. All pieces were on the board until move 44, AllieStein had more space and its eval was around 2. Stockish's eval went over 2 for a short while, then came back down after the queens were exchanged. Stockfish covered all entry points, AllieStein couldn't break the fortress. The game ended in a 50 move draw. 

After round 11 Stoofvlees increases its lead to a full point, with a good chance of being first at the end of the first double RR. 

Featured game: Stoofvlees - Fire
Premier division, game 42 
Link to game on TCEC

Fire went two pawns up from the start, also exposing the white king. Stoofvlees thought it had a small advantage, it had a bishop pair and the black king couldn't castle. Stoofvlees pushed the black pieces back, gave two more pawns and captured a knight.


Fire had all its pawns on the board until move 41. The engines mainly shuffled behind the pawn lines and exchanged pieces. Evals stayed low, the game reached a RB vs R ending on move 47. 


Fire was 3 pawns up and evals were drawish. The white king came forward while the bishop kept watch over the black queen side pawns. AllieStein's eval increased above 1, Fire was close to zugzwang. All the black pawns could not move safely, the black king was trapped in the corner, only the black rook moved and it had no safe square behind its pawns. I'm not sure what was Stoofvlees' threat, but somehow Fire felt it had to move its pawns on move 68. Fire lost control of the position very quickly and its eval jumped over 5.


Stoofvlees was careful to keep its a pawn safe, the bishop made sure the black passers couldn't advance. The white king and rook had more freedom to operate, it took a while but Stoofvlees captured the black passers and the game was adjudicated in a 7-man winning position.

Tuesday, May 26, 2020

Season 18 league 1, final results

Final standings


Fire and rofChade promote to the premier league. Fire led most of the league, with two wins in the first half and three in the second half. rofChade was in a group of engines that fought for 2nd place, it beat two of its direct competitors in the second half to promote.

RubiChess and Pedone relegate to league 2. Pedone was the weak engine of the league after promoting from league 2, it lost 5 games in the second half. RubiChess only lost 3 games in the league, it was close to the central group of engines but couldn't catch up to them. The other engine that promoted from league 2 was Booot, it was close to the bottom after the first half, it won its last two games to escape relegation.

Fire and rofChade will play in the premier division with Leela, Stockfish, AllieStein, Komodo, Stoofvlees and Ethereal, all played in season 17 premier division. We will not see Houdini or KomodoMCTS this season.

Notable games
Game 5, RubiChess - Fire: RubiChess had an advanced passer in the center, while Fire opened the king side and threatened the white king. RubiChess gave material to protect its king, the game reached a BBN vs RNN position. It took Fire a while to move its king forward and capture a pawn, the game was adjudicated a few moves later.
Game 11, rofChade - Pedone: rofChade was a pawn up in a RRB vs RRB position. rofChade created connected passers on the queen side, Pedone had a central passer. rofChade lost a bishop for the black passer, Pedone lost a rook for the white passers. The RR vs RB ending was a win for white.
Game 16, Pedone - Fritz: Pedone attacked on the king side in a closed position, and its queen got trapped. After the black king walked out of danger to the queen side Fritz forced a Q for R trade and the game reached a RB vs QN position. The game was adjudicated before Fritz started to capture pawns.
Game 24, Fire - Booot: Fire went up a pawn and reduced to a RRB vs RRB position. Fire had connected passers on the queen side, after exchanging a pair of rooks it pushed them forward. Booot blocked the passers with its king, Fire captured another pawn and the game was adjudicated.
Game 27, Booot - Fritz: The engines castled in opposite directions and Booot pushed pawns and opened a file on the king side. The black king was in danger and Fritz lost two pawns in its defense. Booot reduced to a winning RRN vs RRN position.
Game 28, ScorpioNN - Fire: A miniature that ended in a 3-fold repetition on move 17.
Game 30, Xiphos - Defenchess: Xiphos attacked on the king side, the black king hid in the corner supported by one pawn. When it was ready Xiphos exchanged all pieces and got a winning B vs pawns ending.
Game 31, Defenchess - Pedone: Defenchess pushed a pawn to h6 and trapped a black bishop in the corner. The engines exchanged pieces slowly, Pedone couldn't get its bishop out. The game reached a BN vs BN position, Defenchess was virtually a piece up, enough for a win.
Game 36, Pedone - Booot: In a QBN vs QBN position that looked drawn Booot decided to trade its bishop for 3 pawns. Pedone reduced to a QB vs Q position, Booot avoided exchanging queens and gave checks as long as it can. The white king came forward and the game was adjudicated.
Game 40, Defenchess - RubiChess: The engines shuffled in a RBB vs RNN position when Defenchess exchanged a pair of minor pieces and moved its rook to the back rank. RubiChess couldn't protect its pawns, Defenchess went 3 pawns up to win.

Scores after 9 rounds: Fire +2, rofChade Xiphos Defenchess +1, ScorpioNN Arasan Fritz 0, Booot -1, RubiChess Pedone -2. The league is very close, only 2 points separate first and last place. Fire has a small lead, 3 more engines have positive scores. Pedone and Booot that promoted from league 2 are at the bottom, together with RubiChess. Arasan and ScorpioNN have 9 draws.

Game 46, Pedone - ScorpioNN: Pedone castled long, ScorpioNN pushed pawns on the queen side and attacked. Pedone gave a bishop to stop the pawns, the engines reduced to a RR vs RRN position and the extra piece gave ScorpioNN the win.
Game 51, Fire - Pedone: The engines mostly shuffled for 35 moves, then Pedone tried to attack on the queen side. Pedone captured two pawns but its queen became trapped, it gave a rook for a knight to open a way out. Then Pedone blundered and through an attack on the black king Fire captured a rook. The material advantage gave Fire the win.
Game 61, Fritz - Pedone: Fritz attacked the king side while Pedone created an advanced passer on the queen side. Fritz captured a pinned knight and managed to block the black passer on the 2nd rank. It took a while for Fritz to reduce to a RN vs R ending, push a passer of its own and get the win.
Game 62, Fire - Arasan: Both engines castled long and Arasan pushed pawns on the king side, its e pawn stayed behind and was weak. After a long struggle Fire captured the e pawn and took control of the center. Fire went two pawns up in a QRN vs QRN position, it exposed the black king with a pawn sacrifice. It used a mate threat to capture the knight and reach a winning RN vs R ending.
Game 67, rofChade - Defenchess: rofChade gave a pawn and created a queen side passer, while Defenchess had connected passers in the center. Defenchess gave a rook for a bishop to capture the white passer, rofCHade captured one of the black passers and the game reached a RR vs RB ending. rofChade exchanged a pair of rooks and the game was adjudicated, both engines agreed white was winning though it was not clear to me.

Scores after 14 rounds: Fire +4, rofChade +2, Xiphos ScorpioNN Fritz 1, Defenchess 0, Arasan Booot -1, RubiChess -2, Pedone -5. Fire had two wins in the last 5 games, it increases its lead at the top and is close to promotion. Pedone lost 3 of its last 5 games and it will probably relegate. The races for 2nd and 9th places are still undecided with 4 rounds left.

Game 74, RubiChess - rofChade: rofChade played better in a closed position, it increased pressure on both sides until it was ready, then reduced to a BB vs BN position. One white bishop was trapped, rofChade captured two pawns and then traded its knight for the bishop. The remaining same color bishop ending was a win for black.
Game 76, Pedone - Defenchess: Pedone captured a pawn and ignored the danger to its king. Defenchess sacrificed a knight to expose the white king, Pedone started to lose material to stop the attack. DefenChess was a rook up when the game was adjudicated.

Scores after 16 rounds: Fire +4, rofChade +3, Xiphos ScorpioNN Fritz Defenchess 1, Arasan Booot -1, RubiChess -3, Pedone -6. Two rounds left. Fire and rofChade have a small lead at the top, the race for promotion is not over yet. Pedone will relegate, RubiChess needs a miracle to survive.

Game 81, Booot - Pedone: The game reached a QRR vs QRB position, Booot traded RR for Q to clear most of the pawns and reduce to a Q vs RB ending. Pedone could have held with better play, when Booot's king moved forward to support a passer the black defense collapsed.
Game 83, Fritz - rofChade: rofChade had a negative eval above 1 with a pawn majority on the king side. It gave a rook for a knight and created a passer, the game reached a RB vs BN position. rofChade captured white pawns, the game was adjudicated in a B vs R ending with black 3 pawns up.
Game 84, Fire - Xiphos: Fire developed an attack slowly, it opened the king side and doubled rooks in the center. Xiphos gave a rook for a bishop, the center opened up and the black king was exposed. Fire had too many threats, it captured a bishop and the game was adjudicated.

Fire and rofChade secure their promotion with wins. Booot is safe after its win, Arasan is a point away from RubiChess.

RubiChess drew against Pedone, both relegate to league 1.

Game 90, ScorpioNN - Booot: ScorpioNN castled long, Booot sacrificed a knight and attacked the white king. Booot regained the material and reduced to a RBB vs RBN position, black two pawns up. It took a while for the black pawns to advance, eventually ScorpioNN lost a rook to stop a passer.

Monday, May 25, 2020

Season 18 league 1 statistics

A summary statistics table of previous stages and seasons. 

Draw rate, wins


Final draw rate was 77.8%.


Game termination

The three most common game termination causes were:

50.0% - TCEC draw rule
22.2% - TCEC win rule
15.6% - 3-Fold repetition


There were no crashes in the stage.

Moves per game


Median= 53.3
Average= 57.2

There was only 1 game longer than 100 moves, lasting 197 moves (RubiChess - Defenchess, game 85, draw).

Time per game (hours)

Median= 1:25
Average= 1:23

Openings

There were 8-move book openings in this stage chosen by Cato. 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 code twice, and all but one repeated the same opening variant.

Reverse pairs, wins


Reverse pairs, same moves

Pairs of reverse games diverged very quickly, 33.3% diverged immediately out of book, 75.6% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 9 plys (Booot - Xiphos games 9 and 54, English symmetrical, hedgehog system, two draws)

Tuesday, May 19, 2020

Season 18 bookless bonus

While we waited for league 1 to start the TCEC organizers ran a bonus match between Stockfish and Leela which was (kind of) without using books. There was a similar match in season 14 where I did some analysis on the openings the engines chose, and I was interested in comparing the matches.

There were 50 games played in the match, less than the 100 games last time. There were no predefined book sequences in the first 24 games, and the remaining 26 games were played with a book sequence of 1 ply, played in reverse pairs. Leela was the regular engine that plays in TCEC. Stockfish was a special version called Bookfish, that used an online database of opening moves run by noobpwnftw (who also provides TCEC with the hardware used for the tournament). So the opening moves Stockfish used were pre-calculated and pre-analyzed - using Stockfish. Does that mean that Stockfish used a book? It's complicated, but this was certainly not a regular TCEC Stockfish. To complicate things further, Bookfish was configured to add some randomness in its move choices. It could play a non-optimal move as long as its evaluation was close enough to optimal.

Leela beat Stockfish in both parts of the match, 2-0 with 22 draws in the bookless part and 3-0 with 23 draws in the 1-ply openings. Leela was better in virtually all games, Stockfish constantly fought to get a draw. At least some of this is a result of the online book setup. After playing many automatic book moves, more than 12 usually, Stockfish's first real eval of the position was almost always in favor of Leela. This was when Stockfish was white and black. Not what you would expect from a well designed book. I would say that the randomness allowed is the main reason for this, but the book may be weaker that expected. There is also the possibility that Leela is just better, we have seen before that Leela's training makes its internal "book" very strong, especially from the opening position.

The 1-ply openings were all different, each played in one pair. This made sure the games did not repeat themselves. Quite incredibly, all pairs diverged at the second ply - not a single case where Leela and Bookfish chose the same reply to the 1-ply opening.

The bookless part of the match was more repetitive. The randomness in Bookfish caused the opening tree to widen faster than in the previous match, and there were only 24 games which is a smaller sample than the previous 100. One thing that was similar to the previous match is that Leela almost always plays the same move when faced with the same position. Up to ply 24, in all games, there were only two exceptions to this rule. Surprisingly, these exceptions were in the opening move.

Stockfish as white had 4 opening move choices, with a constanst reply by Leela: c4 e5 (5 times), d4 Nf6 (3 times), e4 e5 (twice) and Nf3 d5 (twice). After Stockfish's next move there were already 10 different move sequences. Only games 3, 9 and 17 continue to repeat until ply 10 in the English Opening: King's English, Nimzowitsch - Flohr variation (moves c4 e5 Nf3 e4 Nd4 Nc6 e3 Nxd4 exd4 Qf6). Games 3 and 9 continued to repeat until ply 14.

Leela as white started with d4 in 10 games and e4 in 2 games. In the previous match Leela played e4 exclusively, it changed its mind since then. The e4 games diverged after Stockfish's reply to a Sicilian opening and a French opening. The d4 games were more repetitive. Stockfish replied d5 in two games, the engines repeated 9 plys in the QGD exchange, positional variation. In the remaining games Stockfish replied Nf6 and the games continued d4 Nf6 c4 e6 Nf3. In 4 games the engines continued b6 g3 in the Queen's Indian Fianchetto variation, two of these games repeated until ply 13. The other 4 games continued d5 Nc3 and switched to a QGD. All 4 games repeated until ply 13 in the Semi Slav defense. Games 4 and 24 repeated 49 plys (!!!).

Monday, May 18, 2020

Season 18 league 2, final results

Final standings


Booot and Pedone promote to league 1. Both engines led the league without loss after the first half. In the second half Booot increased its lead despite losing a game to Winter, Pedone remained without loss but only had one win in the second half. Winter had  +3 performance in the second half of the league and it caught up with Pedone in the last round, but Pedone had a head-to-head tiebreak advantage that ensured its promotion.

Demolito and Gogobello relegate back to league 3. As in league 3 the two engines that promoted from a lower league are relegated back. Gogobello was at the bottom of the league from the start, though it managed a win in the second half. It seemed Demolito would survive the league, Nemorino was in 9th place with a crash tiebreak handicap. In the second half Demolito lost more games, it was still 0.5 points ahead of Nemorino entering the last round. However Nemorino beat ChessBrain in its last game and Demolito lost in the very last game of the league, and they switched places.

Both the promotion and relegation races turned out to be very close in this league, and both were decided in the last round.

The engines to play in league1:
Played in season 17 premier league: Fire, ScorpioNN
Played in season 17 CPU league 1 - DefenChess, Rubichess, rofChade, Xiphos, Arasan
Missed season 17 due to crashes - Fritz
Promoted from league 2 - Booot, Pedone

Notable games

Game 2, Pedone - Demolito: Pedone gave two rooks for three minor pieces, then created a passer and pushed it to the 7th rank. Demolito gave a rook for a knight to capture the passer, the BN vs R ending was a win for white.
Game 4, Winter - ChessBrain: The game reached a RB vs RBN position, white 3 pawns up. Winter created connected passers, ChessBrain captured one and lost its bishop. Winter slowly outplayed ChessBrain, it was 3 pawns up in a rook ending when the game was adjudicated.
Game 13, Winter - Demolito: The engines played a RB vs RN ending for a many moves, Winter was a pawn up but the game seemed to be heading for a draw. Demolito went wrong somewhere, Winter managed to push a pawn forward and Demolito eventually traded a rook for it and lost the game.
Game 15, Booot - ChessBrain: Booot pushed a passer to the 7th rank in a RRB vs RRB position. After exchanging a pair of rooks ChessBrain blundered, Booot slowly brought its king forward to support the passer. This forced a trade of a rook for the passer giving Booot the win.
Game 17, Chiron - Booot: Booot was up a pawn early with a pawn majority on the king side. The game reached a RBN vs RBN position and ended after Chiron lost a bishop for a pawn.
Game 18, Demolito - Wasp: Demolito missed a win in a RB vs RN ending.
Game 20, Pedone - Nemorino: Nemorino blundered in a RB vs RB position, allowing Pedone to reduce to a winning rook ending.
Game 22, Winter - Pedone: Pedone opened files, went a pawn up and took the initiative. Winter held on for a while, but a combination of an advanced passer and an attack on the white king caused the defense to collapse.
Game 28, Vajolet - Booot: Booot gave a rook for a bishop and slowly developed a strong attack on the white king. Too many white pieces were stuck on the queen side, Vajolet began losing material and the game was adjudicated.
Game 29, Pedone - Wasp: Pedone pushed the black pieces back, then reduced to a QRN vs QRN position. Wasp captured the black knight through an attack on the king, leading to a winning RN vs R ending.
Game 30, Nemorino - Winter: Winter played a RR vs RBN ending better. The black king moved forward and created back rank threats, Nemorino lost material and the game.
Game 32, Wasp - Nemorino: Wasp was up a pawn in a QRR vs QRR position, with a pair of connected passers. Nemorino gave a pawn and pushed a passer to the 2nd rank, the double rook ending was a win for white.
Game 35, Chiron - Demolito: Demolito created an advanced passer on the queen side early in the game. Then it opened the king side and attacked the white king. Chiron couldn't handle both threats, the game was adjudicate before Demolito won material.
Game 37, Vajolet - Chiron: Vajolet chose a Q vs BBN imbalace early in the game. The white queen moved forward and captured pawns, Chiron captured a rook for a bishop, an attack on the white king led to more material gain for the win.
Game 39, Nemorino - Booot: Nemorino was up a rook for a bishop, in a QRR vs QRB position Booot had a passer and the white king was vulnerable on the long diagonal. Booot created a connected pair of passers on the other side and the white defense collapsed. Nemorino also crashed instead of resigning.
Game 40, Winter - Wasp: Winter gave pawns to open the king side, then regained the pawns. The black pawn structure was weak, after some preparations Winter reduced to a winning rook ending.

Scores after 9 rounds: Booot Pedone +5, Winter +3, Wasp Chiron 0, Vajolet Demolito -1, ChessBrain -2, Nemorino -3, Gogobello -6. Booot and Pedone are leading the table, both without loss. Winter is not far behind. At the bottom Gogobello is on its way to relegate back to league 3. The second relegation spot is still contested.

Game 50, Booot - Wasp: Booot outplayed Wasp in a QRB vs QRB position. The black king was exposed and there were more pawn targets for Booot. Wasp held on for a while but eventually its king fell in a mating net.
Game 54, Nemorino - Demolito: Nemorino traded RB for Q and a few moves later saw it was a bad idea. The game reached a Q vs RN ending, Demolito was two pawns up with an advanced passer. Demolito promoted a pawn before the game was adjudicated.
Game 58, Demolito - Winter: Demolito gave a rook to get rid of an advanced passer and a strong bishop. Winter used the white king's vulnerability to reduce to a winning N vs R ending.
Game 59, Chiron - Wasp: After 80 moves of mostly shuffling the position opened up. Chiron pushed a passer to the 6th rank in a RRB vs RRN position, Wasp gave a rook for a bishop to get rid of it. The R vs N ending was a win for white.
Game 61, ChessBrain - Gogobello: ChessBrain gave a rook for a bishop early in the game, without getting anything out of it. The game reached a BB vs RN position, after trading a few pawns Gogobello created a passer. The white bishops couldn't stop the black king moving forward for support, the game ended in a tablebase win for black. First win in the league for Gogobello.
Game 62, Booot - Chiron: The black king was vulnerable on light squares and Booot slowly developed a king side attack. Chiron's queen side passer was a weak counter, Booot started to gain material and the game was adjudicated.
Game 63, Wasp - Demolito: Wasp had connected passers in the center, Demolito gave a bishop to remove them. The game reached a RBB vs RN position, black 3 pawns up. The white pieces were stronger, Wasp trapped the black rook and captured it for a bishop, the material advantage was enough for a win.
Game 64, Winter - Vajolet: Vajolet had weak pawns on the queen side, Winter captured one and reduced to a RB vs RB ending a pawn up. It took a while for Winter to capture a second pawn, create a passer and win.
Game 69, Demolito - Booot: In a RRB vs RRN position Demolito went 3 pawns up but because of a mate threat it had to give a rook for a knight. Booot moved its king forward and used the same mate threat to reduce to a winning B vs R ending.
Game 70, Chiron - ChessBrain: Chiron was up a pawn with a passer from the start, it gave away both of these and the game reduced to a BN vs NN position. ChessBrain took the initiative, created connected passers in the center and pushed them forward. Chiron gave two pawns to block the passers, and the game was adjudicated.

Scores after 14 rounds: Booot +8, Pedone +6, Winter +5, Chiron Vajolet Wasp -1, ChessBrain -2, Demolito -3, Nemorino -4, Gogobello -7. Booot leads with a 1 point gap to 2nd place, Winter got closer to Pedone, one of them will also promote. Pedone has a head-to-head tiebreak advantage over Winter. At the bottom Demolito changed places with ChessBrain, both are still in danger. Nemorino's crash means it loses any tiebreak.

Scores after 16 rounds: Booot +8, Pedone +6, Winter +5, Chiron Vajolet Wasp -1, ChessBrain -2, Demolito -3, Nemorino -4, Gogobello -7. No change in the table after 10 straight draws. Winter drew both Nemorino and Gogobello, missing a chance to move ahead. Pedone drew against Booot, and Demolito drew against ChessBrain.

Another round of draws in round 17. Demolito drew against Gogobello. One round to go, Pedone needs a draw to promote, Demolito needs a draw to be safe, Winter and Nemorino need wins.

Game 87, Winter - Booot: Winter went a pawn up and created a passer early in the game. The engines exchanged pieces and pawns until reaching a N vs B ending, Winter captured another pawn and two white passers were too many for Booot. Booot's first and only loss in the league, Winter keeps its hope alive.
Game 88, Nemorino - ChessBrain: ChessBrain gave a rook for a knight and pawn early in the game. Nemorino was better in a QR vs QB position, it took a while but Nemorino reduced to a winning R vs B ending. Nemorino has a chance to survive.
Game 89, Pedone - Chiron: Pedone was never in danger, the game ended in a draw. Pedone promotes by a tiebreak with Winter.
Game 90, Vajolet - Demolito: Demolito had a connected pair of passers on the queen side. Vajolet blocked them, created a central passer and reduced to a RRB vs RRN position. The white passer moved to the 7th rank supported by the rooks, Vajolet used it to reach a winning R vs N ending. With this loss Demolito is relegated, Nemorino is safe.