Hello Mike:
I think I bring good news to you: I suddenly remembered that the author of Gaviota chess engine coded a Round-Robin simulator a while ago:
Round Robin simulations program
The site is gone, but there is an archived copy with working download links!
bleeding edge - gaviota chess engine
The programme is called
rrsim-v0.5-win and works on Windows. The direct download link is
here.
There was some discussion about draw models in that TalkChess thread, but I think they are not related to average rating.
------------
There are more threads about draw models, which can be dense:
1 draw=1 win + 1 loss (always!)
Re: H4 or S5 !?
And probably without relation between draw rate versus average rating.
------------
mbabigian wrote: ↑Wed Jan 08, 2025 10:17 pm[...]
[...] Since I'm doing round robin first (easiest pairing scheme), I'll worry about tournaments that use Armageddon to break ties, if and when, I code the knockout pairings. Armageddon is another noodle twister. I suspect the best I'll be able to do is take the Elo calc, assume draws are not possible, and roll the dice, but that topic requires more thought at a future date.
[...]
I see that you write about Armageddon, so my link with time odds can be useful after all! The difference of allocated times creates an artificial additional rating difference, which was modeled as
(t_B)/(t_A) = 2^[(Rating_A - Rating_B)/120];
Rating_A - Rating_B = 120*log2[(t_B)/(t_A)] in that source, and I propose that can be added to the real rating difference. Since typical time odds for Armageddon are 6 minutes (white) versus 5 minutes (black), or 5 minutes (white) versus 4 minutes (black), you get 120*log2(6/5) ~ 31.56 Elo or 120*log2(5/4) ~ 38.63 Elo of additional rating difference in favour of the white side. Since your original parameter R.Diff >= 0 as I understand it (an absolute value could be helpful in the formula, to do not mess things, such as -|R.Diff|/32.49), you must be careful in who plays white (the stronger player or the weakest).
I would go in this way: if you have W playing white with a rating of 2700 Elo and B playing black with a rating of 2685 Elo (ordinary R.Diff = 15 Elo), with a supposed artificial additional rating difference of 35 Elo in Armageddon, then R.Diff = 2700 - 2685 + 35 = 50 Elo in favour of W. OTOH, playing reverse sides (the weakest player with a little help from the time odds), R.Diff = 2700 - 2685 + (-35) = -20 Elo in favour of W, so go with 20 Elo in favour of B (the importance of absolute value once again). Furthermore, you can keep Av.Rating since you split this new artificial additional rating difference by half to each player, in a try to do not complicate the problem more. In other words, with players W and B as before, you feed the formula with R.Diff = 15 Elo and Av.Rating = 2692.5 Elo in a normal game; but, when playing Armageddon, you can set:
Code: Select all
W vs. B: Rating_W = 2700 + 35/2 = 2717.5 Elo; Rating_B = 2685 - 35/2 = 2667.5 Elo; R.Diff = |2717.5 - 2667.5| = 50 Elo; Av.Rating = (2717.5 + 2667.5)/2 = 2692.5 Elo.
B vs. W: Rating_B = 2685 + 35/2 = 2702.5 Elo; Rating_W = 2700 - 35/2 = 2682.5 Elo; R.Diff = |2702.5 - 2682.5| = 20 Elo; Av.Rating = (2702.5 + 2682.5)/2 = 2692.5 Elo.
Once you have computed the draw rate Prob.D with the input parameters, then winning white (Prob.W) and winning black (Prob.B) must add 1 (Prob.W + Prob.D + Prob.B = 1), this is, 100%. Since Prob.W + Prob.B = 1 - Prob.D in virtue of the former equation, you can set up the other equation Prob.W - Prob.B:
Code: Select all
Prob.W + Prob.B = 1 - Prob.D // (Eq. 1)
------------
From white's POV:
R.Diff = 400*log10{[½ + ½·(Prob.W - Prob.B)]/[½ - ½·(Prob.W - Prob.B)]}
10^[(R.Diff)/400] = [1 + (Prob.W - Prob.B)]/[1 - (Prob.W - Prob.B)]
[...] // Doing the math...
Prob.W - Prob.B = {10^[(R.Diff)/400] - 1}/{10^[(R.Diff)/400] + 1} // (Eq. 2)
------------
(Eq. 1) + (Eq. 2)
2*Prob.W = 1 - Prob.D + {10^[(R.Diff)/400] - 1}/{10^[(R.Diff)/400] + 1}
######
Prob.W = ½·(1 - Prob.D + {10^[(R.Diff)/400] - 1}/{10^[(R.Diff)/400] + 1})
######
------------
(Eq. 1) - (Eq. 2)
2*Prob.B = 1 - Prob.D - {10^[(R.Diff)/400] - 1}/{10^[(R.Diff)/400] + 1}
######
Prob.B = ½·(1 - Prob.D - {10^[(R.Diff)/400] - 1}/{10^[(R.Diff)/400] + 1})
######
Finally, the player that plays with the white pieces wins the Armageddon tie-break with probability Prob.W and loses with probability P.Draw + P.Black, which you can do with a proper PRNG ('rolling the dice' in your own words).
Checking the original post formula of draw rate plus my own math with real numbers:
Code: Select all
W(2700), B(2685)
B(2685), W(2700)
NORMAL GAME (regardless of W-B or B-W because first move advantage is not part of the model):
W wins ~ 36.37%
Draw ~ 31.57%
B wins ~ 32.06%
----------------
SUM = 100.00%
############
W(2717.5), B(2667.5)
ARMAGEDDON W-B:
W wins ~ 41.90%
Draw ~ 30.50%
B wins ~ 27.60%
----------------
SUM = 100.00%
W wins Armageddon ~ 41.90%
B wins Armageddon ~ 58.10%
############
B(2702.5), W(2682.5)
ARMAGEDDON B-W:
B wins ~ 37.17%
Draw ~ 31.42%
W wins ~ 31.41%
----------------
SUM = 100.00%
B wins Armageddon ~ 37.17%
W wins Armageddon ~ 62.83%
I hope no typos.
Regards from Spain.
Ajedrecista.