Stefan Pohl Computer Chess

private website for chessengine-tests

The Unbalanced Human Openings XXL Project


Download the UHO XXL openings here


The UHO XXL openings were made for the Stockfish Framework. There, the tests, using classical openings, have reached draw-rates around 90%, which is a lot, lot too much for statistically valid results, especially, because in the Framework, where SF devs, which are close in strength, are tested versus the current SF master.
In my AntiDraw openings-collection (
Anti Draw Openings), some very good working UHO openings-sets are included, but the problem is: They are all too small for the SF Framework, where  some tests can easily have 200000 games or more. So, UHO openings are needed, with at least 100000, better more, different opening-lines. So, I decided to develop such UHO XXL openings. What have I done?

Step 1: Build a database out of all games since 1945 of the Megabase 2021 (around 8 million human games) and 2 million human games (2019-2020) out of the LiChess Elite-Database (filtered all (standard) games from  lichess to only keep games by players rated 2400+ against players rated 2200+, excluding bullet games.).

Step 2: Delete all games out of this 10 million human games database, which were starting from a FEN (Chess960). Delete all comments out of the games. Delete all games with less than 15 moves.

Step 3: Delete all played moves beyond 8 moves / 16 plies. Delete all games, where not both queens are still on the board in the endposition.

Step 4: Remove all games with an endposition, that already is in the file (remove all doubles). Result: 2.7 million opening-lines with different endpositions, all 8 moves/16 plies deep.

Step 5: Delete all Tags, replace them with 7 empty standard Tags. Add the ECO-Code Tag. Setting all game results to 1/2-1/2.

Step 6: Evaluated all endpositions with KomodoDragon 1.0 (3 sec/move on Quadcore, average search depth=20), then deleted all lines with endposition-eval out of the interval [-1.99;+1.99]

2.5 million opening-lines remaining. Saved in the rawdata.7z archive.


Filtered 7 Unbalanced Human Opening files with increasing evals and made additional EPD-files out of these rawdata-file:


UHO_XXL_+0.80_+1.09 = 261043 lines
UHO_XXL_+0.90_+1.19 = 223081 lines
UHO_XXL_+1.00_+1.29 = 186106 lines 
UHO_XXL_+1.10_+1.39 = 155058 lines
UHO_XXL_+1.20_+1.49 = 129823 lines 
UHO_XXL_+1.30_+1.59 = 111314 lines
UHO_XXL_+1.40_+1.69 = 96173 lines


Why so many different openings-sets? At the moment, the first interval of [+0.80;+1.09] should work best in the Stockfish Framework, but if Stockfish gains more strength and the hardware gets faster in the future, the draw-rates will raise again. Then an openings-set with a higher eval-interval can be chosen, to lower the draw-rates again into a valid range of 45%-65%. This concept of different sets with increasing eval-intervals was developed by me (and already used in my AntiDraw openings collections) and it makes it possible to make the draw-rate controllable and keep it in a valid range of 45%-65%. So, these openings will work in the present and in the future (faster hardware and stronger engines raise the draw-rate!) and with different test-setups (longer thinking-times or more used threads raise the draw-rate, too). How cool is that?


Important information: Because pgn-extract always keeps the first appearance of one opening-endposition and removes all following doubles, the most common human openings are at the beginning of the openings-files with higher probability and the more "exotic" human opening-lines are at the end of the openings-files with higher probability. Because of this and the fact, that my UHO XXL-files are really huge, it could make sense to cut the files at the end off, if not so many opening-lines are needed.
Example: If the SF-developers think, that perhaps 200000 different openings are enough for valid tests in the Framework, I recommend to cut the bigger files (UHO_XXL_+0.80_+1.09 = 261043 lines) off and keep just the first 200000 openings of these files. But that is not my decision, so I decided to make the files as huge as possible.



Huge 10% time odds test (60sec+600ms vs 66sec+660ms), using Stockfish 210827 (selfplay). 60000 games each testrun, played in the Stockfish-Framework (=180000 games total(!)). noob_3moves and 8moves_v3 are classical openings-sets, which were used in the Stockfish-Framework before my UHO_XXL set (8moves_v3 is still in use for the regression-testruns).

Name                  Draw-rate   Elo     Normalized Elo  Win-Draw-Loss
UHO_XXL_+0.90_+1.19   50%         10.94   24.05           [16069,29751,14180]
noob_3moves           95%          3.39   15.46           [1825, 56936,1239]
8moves_v3             91%          3.94   14.97           [3144, 54393,2463]

Really impressive, how much better the results (draw-rate, Elo-spreading, normalized Elo) are, when using my UHO_XXL openings !!! The draw-rate is lowered from more than 90% to 50%, the Elo-spreading is more than 2.7x bigger and the normalized Elo value is clearly better (more than 1.5x bigger), too. Just awesome!


Idea for UHO XXL openings and all work done by Stefan Pohl. The using of the UHO XXL openings is recommended only for the Stockfish Framework or for other tests-setups, where huge head-to-head tests of engines with 50000 ore more games are done. For all other testers, I strongly recommend to use the UHO openings in my Anti Draw openings collection, which can be found here: Anti Draw Openings

(C) 2021 Stefan Pohl (SPCC)