Author: Christoph Fieberg

Date: 12:08:42 07/03/01

Description of the program I developed for simulating the result of a chess game of two rated players. The result of the game depends on the performance factor and a draw factor. 1.) Performance factor The performance factor depends on the rating difference and on the advantage playing the white pieces. In order to determine the performance factor I analyzed nearly 100.000 games of games with both players 2500+. The distribution for 1-0, Draw, 0-1 was (rounded) 31%-50%-19%. White had a success-rate of 56% (= 31 + 50/2) and Black of 44%. [I would be happy if this distribution could be validated by others. It has to be noted that this is an average distribution for players 2500+. On the top level the success-rate is lower due to a higher number of draws.] The average opponent for White and Black had the same rating and therefore the advantage playing white (if both players have the same strength) is 12%-points (56-44) what can be expressed as 42 Elo-points (see formula below). Thus, for calculation purposes White has to be added 21 Elo and Black substracted 21 Elo in order to consider the advantage playing white. The following formula (I think used by FIDE) allows to calculate the performance based on Elo-difference and vice versa. It is: Performance (%) = (1 / (1 + (10 ^ (-difference / 400)))) Example for calculating the likely performce of a 2600 player playing white against a 2550 player: Rating 2600 – 2500; Advantage White => 2621 – 2479; Difference = 142; => 69.37%. This means in 100 such games the 2600-player (who always has white) most probably will win 69.5 - 30.5. [Note that in case that it is a match of 100 games with changing colours there would be no white advantage and thus the difference is only 100 => 64.01%. For specialists: Here the white advantage is 10.72%-points instead of 12%-points. This implies that according to the formula it is as hard to get from 64.01% success rate to 69.37% as it is from 50% to 56%.] 2.) Draw factor The draw rate has to be seen in relation on the maximum number of draws depending on the success rate and not in relation on the number of games played (this is a important point which seems to be totally neglected in draw rate considerations). Example: If there is a success rate of 90%, a player will get 90 points out of 100. It is clear that the maximum number of draws can only be 20 (80 wins, 20 draws, 0 losses => 90 points). If there are really 20 draws the draw rate (here depending on the success rate of 90%) therefore is 100% and not 20%. If a 90% success rate results in 85 wins, 10 draws and 5 losses the draw rate would be 50%. The average draw rate based on the nearly 100.000 games of 2500+ players can be calculated according to the following formula: Draw rate = Percentage of draws / ((100% - success-rate) * 2) As described above there were a success-rate of 56% and a 50% were draws. => draw rate = 50% / ((100% - 56%) * 2) = 56.82% This average draw rate of 56.82% now allows to calculate the distribution for the result of a single game. Example: I will calculate the result of the game 2600 – 2500. The success-rate taken into account the white advantage is 69.37% (see above). The average draw rate is 56.82%. Therefore percentage of draws is (1 – (ABS(0.6937-0.5) * 2)) * 0.5682 = 0.3481 = 34.81% and the percentage of wins is (0.6937 – (0.3481 / 2)) = 0.5197 = 51.97% This means that we can expect in 1000 games from the 2600 player about 520 wins / 348 draws / 132 losses (distribution 52% - 34.8% - 13.2%) [Check: (520 + 348 / 2) / 1000 = 69.4% success-rate; maximum number of draws = 612 (distribution 388 – 612 – 0) => draw rate = 348 / 612 = 0.5686 = 56.86%] 3.) Calculation the result with random numbers If the distribution for the result of a single games is known it is relatively easy to simulate the outcome. In the example the distribution for a game 2600 – 2500 is 52% for a win, 34.8% for a draw and 13.2% for a loss. (The calculation depended on the average success-rate of 56%, the average advantage for the white player of 42 Elo-points and the average draw rate of 56.82% as shown above). The simulation-program creates a random number between 0 and 1 (e.g. 0.446). In case the number is >= 0.48 (likelihood 52% as for a win) the 2600 player wins. In case the number is > 0.132 and < 0.48 (likelihood 34.8% as for a draw) the game is a draw. In case the number is <= 0.132 (likelihood 13.2% as for a loss) the 2600 player looses. As example the random number is 0.446 what means that the result of the game is a draw. 4.) Simulation of tournaments and matches With the simulation of the result of a single game it is possible to calculte whole tournaments and matches (the only difficulty is to program it). In respect of matches it has to be regarded that the main factors (average success-rate, average white advantage, average draw rate) are average factors and probably have to be adjusted to the level of the opponents. Also for tournaments there schould be adjustments depending on the category of the tournament. My vision is to find out the average factors for each level (from 2200 to 2850 step Elo 50) and in another step to pre-calculate all distributions and to fill a huge table for any possible game (where for example also the distribution of 2600 – 2500 = 52.0% / 34.8% / 13.2% would be stored). The speed of the simulation would be enourmously accelerated. I look forward to your comments. Best regards, Christoph

- Re: Simulating the result of a single game by random numbers
**Andreas Herrmann***15:56:54 07/03/01* - Re: Simulating the result of a single game by random numbers
**Christophe Theron***12:45:53 07/03/01*

This page took 0.05 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.