TCEC (Thoresen Chess Engines Competition) is a computer chess tournament organized and maintained by Martin Thoresen in cooperation with Chessdom Arena. The goal is to provide the viewers with a live broadcast of long time control, quality chess - played strictly between computer chess engines created by different programmers. One Season is divided into several Stages and lasts about 3-4 months. The winner of the Season will be the TCEC Grand Champion.

I chose to help out with TCEC's opening choices this season because there were a few things that looked easy to improve. I am currently the only native English speaker who is the trainer or second of three players over 2650 (FIDE) in the world right now and I may very well be the most active chess analyst in the world in terms of positions analyzed per day and cores used. This gives me a lot of experience to make judgments not only about openings, but also on which positions are objectively interesting or instructive from a human point of view. In a day of checking 10 or 20 thousand positions, I often just collect a few of them that struck me so that I can show them to other players and pupils as training exercises. In the case of TCEC, the goal was not to have absolutely the most interesting positions, but to have a solid balance. That being said, in cases where two positions were roughly equivalent by every standard, I made a judgment call and selected the more interesting and usually theoretically relevant one.

The main problems in TCEC opening selections of the past that I noticed were a lack of balanced pawn structures and occasionally positions which were too one-sided. Positions which are too far from being objectively balanced merely increase the randomness of the result, in part because sometimes engines stumble into +2 positions that are not wins. Imagine a scenario where both engines reach a +1 position from the opening by force, and White wins in 19 out of 20 of them. The one game which was drawn does not accurately reflect which engine is stronger or played better, although it may reflect who wins a match. There is a general consensus that this is to be avoided and so we wanted the opening selection to be as balanced as possible, not only in pawn structure selection but also in the objective evaluation of positions chosen.

Nelson (aka Cato the Younger) agreed with my general points and provided me with over 1,300 positions that met his statistical approval. I then chose 64 positions out of those that seemed to most accurately reflect every main pawn structure in chess, without excessive overlap. This is the most fair way to have engines play nearly every position type so that one engine that's, say, weaker in King's Indian structures doesn't lose a SuperFinal match solely on that basis. Having engines play the greatest variety of structures and position types leads to the most objective basis for claiming one engine rightfully won a match. It is worth noting that the collection of positions that will be played in the SuperFinal was selected by Nelson and I was mainly an overseer to provide balance and fairness and to reject out the problematic ones. The point isn't to provide perfect positions (which objectively may not even exist), but to select ones that don't have any major flaw to them, are not too drawish, and lead to high quality play that will help determine the strongest engine in some exciting games.

IM Erik Kislik (Budapest, Hungary)

Season 7 opening book notes from Nelson Hernandez (nick: Cato the Younger)
As most of you know Martin Thoresen appointed me to select openings for TCEC toward the end of the 5th season. His intention was to improve an area that was, at that time, provoking criticism from many quarters. I possessed three things that made me a plausible person to take on the task: a fairly thick skin, a statistical/analytic bent, and what is probably the largest human-computer chess database in non-commercial hands in the world, a proprietary endeavor now ten years running.

As I explained last season Martin and I agreed that eight-move openings were optimal for TCEC. He further stipulated that all opening lines should have been played at least once by grandmaster-level players. Based on these two criteria a database of 44,625 opening lines was created. We then developed evaluations for all of these positions. Then, based on an elaborate selection process, hundreds of openings were selected for each stage.

In broad terms, a similar process has been developed for Season 7. This time around, I selected from the same database openings that had been seen at least 50 times in human games and engine games (i.e. a minimum of 100 times in total). I further culled the group by eliminating the bottom 70% in terms of draw-rates. Finally, I eliminated any book-exits that either of the top two engines from last season (Stockfish and Komodo) evaluated last season as more than 30 centipawns away from the relative evaluation one sees at the opening position. These steps brought the candidate openings down to 1,883, which we deemed a manageable number for the next phase of our process.

The remaining positions were then re-analyzed. Stockfish searched to ply 34 and Komodo to ply 28; these depths were roughly equal in terms of time spent per position and were as deep as our resources permitted. We used the latest development versions for both engines that were available in the latter part of July 2014.

The next step was to eliminate from further consideration any openings that were seen in Season 6 at any stage. Also removed were a few outliers that, with deeper evaluation, were newly identified as outside the 30 centipawn range I mentioned earlier.

At this point the candidate positions were turned over to IM Erik Kislik, a new guest member of the opening team about whom I will say more in due course. He selected 64 openings that will be used in the Superfinal for Seasons 7 and 8. That accomplished, I took on the remaining stages.

Stage 1, being single round-robin, requires openings that are exceptionally balanced both in terms of statistics and evaluations in order to be fair to the contestants. Every opening chosen should have white with a slight advantage after eight moves both in terms of evaluations and statistics. I picked openings that were +/-2% of the success rate for the entire database (i.e. 52.3%-56.3%) and showed both Komodo and Stockfish in an evaluation range of 0.00 to +0.40 and not more than 20 centipawns apart. Finally, I did my best to diversify the openings by ECO in each stage.

Martin decreed that Stage 2 will be played without an opening book this Season. This idea was advocated by several TCEC fans and Martin thought it ought to be tried. Initially I was skeptical, but after thinking about it, I could not imagine a better time or a better way to stimulate interest in the tournament. If the aim was entertainment, we had to try it. We will all see what happens and Martin will determine if bookless Stages ought to be a recurring feature in TCEC.

Stages 3 and 4, being double round robin and allowing engines to play all openings from both sides of the board, do not require the same exacting level of play-balance as Stage 1. Instead, lowering the draw-rate assumes much greater importance as otherwise you will likely see 70-75% of the games ending in draws given the hardware being used, the time control and the strength of the engines that make it into these Stages. Such a high draw-rate could get boring. We have an aversion to anything boring.

The way I have attempted to bring down the draw rate is to slightly loosen the play-balance criteria for success rates and opening evaluations while tightening the criteria for draw-rates even further. Every opening selected for Stages 3 and 4 has a historical draw-rate that is well below average. Selecting such openings by no means assures many decisive games but it does slightly help reduce the overall draw-rate. The result of this selection process in Seasons 5 and 6 has been to reduce draw-rates to an acceptable 55-65% range in the later stages. I hope we can continue to achieve that though it is getting steadily harder all the time. Chess engines grow ever stronger.

Last Season I attempted to use evaluation variances between the leading engines as a means of featuring opening positions where the leading engines were in sharp disagreement. I have abandoned this because it did not work very well in practice last Season and, apart from that, I concluded that it could introduce unintentional bias favoring one engine or the other. Eliminating this as a consideration will probably increase the rate of draws a bit but it will also result in fewer busted openings.

The 32 openings that will be seen in Season 7’s Superfinal have been selected by IM Erik Kislik, one of the world’s top (and hardest-working) opening theorists, a chess teacher, writer and advisor to grandmasters. After a lively email exchange during last Season we agreed in principle that the Superfinal’s openings should be carefully hand-selected and well diversified by “pawn structures”. Not being much of a chess player myself, it seemed logical to delegate this task to Erik, which he graciously undertook. Erik will expound on his selection philosophy in a separate communication as we get closer to the Superfinal.

There is no question in my mind that the process we have developed, where each opening has been vetted by two entirely different approaches, will result in Superfinals that are worthy tests of the two finalists. In the end, Erik and I concluded that TCEC’s long-standing “entertainment first” philosophy had to yield just a bit to the emerging reality that the TCEC Superfinal is really a 64-round battle for computer chess supremacy and therefore we ought to take it a bit more seriously.

Q&A

Q: Can you provide us with a list of what openings will be played in each Stage?
A: I could, but Martin prefers the element of surprise and so do I.

Q: Will you know what openings any two engines will play before a game starts?
A: No. For each Stage I have provided Martin with a pgn file containing all the opening positions that will be played. His tournament GUI selects the openings at random, never repeating one that has already been played, apart from cases where engines are playing both sides of the same opening.

Q: Would you be so kind as to send me your database?
A: No. :)

Thanks again to all who had a hand in developing the TCEC openings: Erik Kislik, Adam Hair, Anson Williams and of course Martin, who makes everything possible.

Time control
Starting from Season 5, the time control is 120 minutes + 30 seconds added per move for the whole game, in all events (an event is either a Stage or the Superfinal). If an engine loses on time, the result will not be changed or the game replayed. If the TCEC game server locks up at any time during a game (BSOD, freeze etc), that game will be restarted unless the last position was a 6-man or less tablebase position, then it will be manually adjudicated.

Game adjudication
A game can be drawn by the normal 3-fold repetition rule or the 50-move rule. However, a game can also be drawn at move 40 or later if the eval from both playing engines are within +0.05 to -0.05 pawns for the last 5 moves, or 10 plies. If there is a pawn advance, or a capture by any kind, this special draw rule will reset and start over. In the website this rule is shown as "TCEC draw rule" with a number indicating how many plies there are left until it kicks in. It will adjudicate as won for one side if both playing engines have an eval of at least 6.50 pawns (or -6.50 in case of a black win) for 4 consecutive moves, or 8 plies - this rule is in effect as soon as the game starts. In the website this rule is shown as "TCEC win rule" with a number indicating how many plies there are left until it kicks in. Cutechess will also adjudicate 5-men or less tablebase endgame positions automatically.

Opening Book
TCEC uses openings put together by Nelson Hernandez and Adam Hair, with assistance from Erik Kislik. All of them are 8 moves deep, except Stage 2 which does not use an opening book at all. If you click the "Opening Book" button at the top you can read in detail how they prepared for this challenge.

Engine Ratings
When you enter "Archive mode" in the File menu, you can see the official TCEC ratings in the bottom right corner - it is updated after each Stage or Superfinal and is calculated by using Ordo. The calculation is global and will always include all new and previous games since Season 4. Any games with losses on time are discarded, as is engines with only losses. If there is a new engine entering TCEC for the first time, it will get a "temporary" rating taken from the CCRL 40/40 single CPU list. If an engine isn't found here, or if it has played very few games, the CEGT 40/20 single CPU list is used instead but the rating difference between Houdini 3 64-bit in the two rating lists will be added to the rating. If an engine isn't found in either list, an approximate ELO rating will be given to that engine based on tests from the programmer. Then after this new engine has played an event, the official rating will be calculated using Ordo as explained earlier. If an engine is updated to a new version, this new version will inherit the rating of the old version.

Engine Updates
The engine programmers can provide updates only before an event starts, not during. However, there will be no extra testing meaning that this is a gamble if the engine could be unstable. The deadline for engine submission is the last game of the current Stage - the goal is to be able to start the next Stage as soon as possible without any significant delay.

Critical Engine Bugs
In the case of a serious, play-limiting bug (like crashing or interface communication problems) not discovered during the pre-Season testing, the engine can be updated once per Stage to fix this/these bug/bugs only. If this update still doesn't fix the problem(s) or if there is no update available, the engine might have the number of cores reduced, have the hash size reduced or have the tablebase access disabled - these changes will remain for the rest of the Stage.

Tiebreaks
If necessary, tiebreaks can be used to determine advancement. For all Stages (not the Superfinal), the first tiebreak criteria is the "crash" tiebreak, meaning that if an engine has crashed once or more during the Stage, it will fail qualification versus another engine that has not crashed if both of them has the same amount of points. The Sonneborn-Berger criteria is the second. If still a tie, the greatest number of black games decides. The next criterion is the greatest number of wins, then the greatest number of wins with black. In case of still being tied, then the direct encounter between the tied engines decides. If they are still tied, then the tournament director decides which engine gets the promotion.

The TCEC Season System - Season 7
As soon as a Stage starts, it will run 24/7 until all games have been played. One game is played at a time - the next one starts automatically. There will be a short break between the Stages, to make sure everything is ok with the TCEC game server and to prepare for the next Stage.

Stage 1
Stage 1 is divided into 2 groups which consist of 14 engines each. Each group format is a single round robin. The top 7 from each group will move on to Stage 2, while the rest are out of TCEC for the current Season.

Stage 2
Stage 2 consists of the 14 engines that qualified from Stage 1. It is also a single round robin. It does not use an opening book, the engines are on their own from move 1. The top 8 move on to Stage 3 while the rest are out of TCEC for the current Season.

Stage 3
Stage 3 consists of the 8 engines that qualified from Stage 2. The format for Stage 3 is a tetra round robin (x 4) so that each engine will play both sides of the same opening against each other, twice. The top 4 will move on to Stage 4 while the rest are out of TCEC for the current Season.

Stage 4
Stage 4 consists of the 4 engines that qualified from Stage 3. It is a dodeca round robin (x 12) and the openings are chosen randomly per pair so that each engine will play both sides of the same opening against each other. The top 2 will qualify to play the Superfinal, while the other engines are out of TCEC for the current Season.

Superfinal
After Stage 4 has finished, the top 2 engines will meet in a Superfinal of 64 games. This match is played with 32 different openings so that each engine plays both black and white of the same position. The match will be presented with opening 1 used in games 1 and 2, then opening 2 used in games 3 and 4 etc. If the match is theoretically won for one side before game 64, the match will still continue until all 64 games have been played. In the case of a drawn match there will be a rapid match of 16 games with a time control of 25' + 10" with random openings selected from earlier in the same Season. In case it is still tied there will be a Blitz match of 8 games with a time control of 3" + 2'. When the Superfinal is over, the current Season ends.

The TCEC Grand Champion
The winner of the Superfinal will be crowned the TCEC Grand Champion and will keep this title until there is a winner in the next Superfinal. There is no automatic qualification for the reigning Grand Champion, it will have to go all the way through the next Season for it to be able to defend the title.

Engine Specific Configuration
UCI and Xboard (Winboard) engines are supported. To identify the protocol an engine is using you can click the gears next to the engine logo during a game. This info will be saved for the archive, but does not work for Season 5 or older games.

Compiles
Many engines come with different .exe files. 64-bit .exes are always preferred over 32-bit. Also, compiles that support SSE 4.2, AVX or similar instruction sets are preferred.

Large Pages
Some engines can utilize a function in Windows called large pages, that gives a speed boost. However, after a while the memory in the computer will be fragmented, so that one engine might receive large pages and the opponent won't, which would be unfair. Therefore, this has been disabled. Large pages are often useful when you are running infinite analysis on a position.

Number of Cores / Threads
Each engine can use up to all 16 cores of the processors, if this is supported. Some engines have a prefix like "deep", but this has been omitted from the engine name to make it shorter. When watching a game you can see the number of cores that are in use for the engines currently playing by clicking the gears next to the engine logo.

Split Depth
The split depth parameter can be adjusted, with advice from each of the engine programmers. Basically it defines the minimum depth for work to be split between cores / threads. If no instructions are given from the programmer, the default value will be used.

Main Hash Size
Each engine is allowed to use up to 16384 MB of hash. Not all engines supports this much hash, so the maximum for that engine will be used in this case, typically 1024 MB or 2048 MB. When watching a game you can see the size of the hash that is in use for the engines currently playing by clicking the gears next to the engine logo.

Minor Hash Sizes
Some engines have an option to configure the size of other hash tables, often called pawn hash or evaluation hash. The combined, total limit for hash types like these is 2048 MB.

Own Opening Book
All opening books shipped with the engines are disabled.

Endgame Tablebases
For Season 7, tablebases are disabled for the engines. In previous Seasons, 6-men Syzygy, 5-men Nalimov, 5-men Gaviota (cp2), 5-men Scorpio bitbases and 5-men Robbobases (Totalbases + Triplebases) were available depending on which each specific engine could use. For some engines specifying more than one type is possible, but here only one is allowed. Robbobases also have Z pieces. They are all hosted on a very fast Samsung SSD setup. When watching a game you can see the type of the tablebases (if any) that is in use for the engines currently playing by clicking the gears next to the engine logo.

Tablebase Cache
Each engine is allowed to use up to 2048 MB of tablebase cache. Not all engines supports this amount, so the maximum for that engine will be used in that case, typically 256 MB.

Ponder / Permanent Brain
Basically this means that the engines can think during their opponents turn. It is not allowed so it has been disabled. This might change in a future Season of TCEC.

Contempt / Draw Score
Some engines have a setting that can adjust their own view of the positions throughout a game to avoid draws. This setting is not changed from the default unless it is a request from the programmer.

Other Settings
Any configurable option not described above, are not adjusted in any way, except that "keep hash tables" or similar is usually enabled.

Is this the official World Computer Chess Championship?
No, it is not, although some people regard it as such.

Who is the reigning TCEC Grand Champion?
Stockfish defeated Komodo in the Superfinal of Season 6, so Stockfish is the reigning TCEC Grand Champion.

Did the engine move instantly?
Yes, some engines can move from hash, or move instantly. However, sometimes it can seem that it moves instantly but in reality it doesn't, since there is a transmission delay from the server by 1 minute. Refer to the "move time" for each engine to see how long it thought on its move.

Is there a special plugin required to view the games?
No, to view the games it is only required that you allow Javascript to run. The TCEC Web GUI has been developed on the latest Chrome, but will also run fine on the latest Firefox. There is no support for Internet Explorer versions below 9.

What GUI are you using to play the games?
To play the games a special version of cutechess-cli is used. This is a command line tool without an actual GUI. This was made possible thanks to Jeremy Bernstein. Previously TCEC used ChessGUI by Matthias Gemuh.

What is the name of the web framework that displays the games?
It is called pgn4web and is totally free. Paolo Casaschi is the mastermind behind it and has helped a lot on certain difficult programming challenges.