Imagine we are pitting two automated players (bots) against each other, but instead of thoughtful moves made by the players, they make completely random choices. I realize that this is not really the point of playing chess, but it sets the groundwork for a theoretical chess question.
Is there an inherent advantage to the player who goes first, or the player who goes second?
'Inherent advantage' here means that the probability of one player winning is higher than the other, and that these randomized conditions don't account for how actual players would play. If such an advantage exists, it may be entirely wiped away by how humans play chess with each other. I want to emphasize that this question is not meant to generalize to either human or algorithmic play.
Update
I got the results back of 1000000 randomly-played games thanks to a small adjustment to itub's code. I've whipped up a basic plot to show the results.
But if you prefer the specific numbers, here's the printout:
Counter({'is_insufficient_material': 474230,
'can_claim_fifty_moves': 169123,
'can_claim_threefold_repetition': 149398,
'1-0': 75868,
'0-1': 75239,
'is_stalemate': 56142})
As promised in the comments on one of the answers, I was going to calculate a Wilson score interval with continuity correction. I wrote the following function in Python to accomplish that.
import numpy as np
from scipy import stats
def wilson_cont(n1, n2, alpha=0.05):
'''
Wilson score interval with continuity correction.
Two-tail interval is assumed.
Parameters:
n1 (int): Count of outcome 1.
n2 (int): Count of outcome 2.
alpha (float):
Source:
https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval
'''
assert type(n1) == int and type(n2) == int
assert 0 < alpha < 1
z = stats.norm.ppf(1 - alpha / 2)
n = n1 + n2
phat = n1 / n
num1 = 2 * n * phat + z**2
num2 = z * np.sqrt(z**2 - 1 / n + 4 * n * phat * (1 - phat) + 4 * phat - 2) + 1
num3 = z * np.sqrt(z**2 + 1 / n + 4 * n * phat * (1 - phat) - 4 * phat - 2) + 1
denom = 2 * (n + z **2)
return max(0, (num1 - num2) / denom), min(1, (num1 + num3) / denom)
And calling this function on the outcome counts where either white or black win, we have:
>>> print(wilson_cont(75868, 75239))
(0.4995569815292355, 0.5046054923932771)
This result, confirming some of the comments and answers below, is not significantly different from 50 %. As MaxW has pointed out in their answer, a similar calculation has been done on an even bigger sample that concluded that there was a statistically significant difference. One concern I have with all these calculations, mine and others, is that they become more sensitive to deviations as the sample size becomes larger. This means it is difficult to determine whether there's truly a difference using standard null hypothesis testing when our sample size becomes extremely large, but if we don't sample enough then our sample won't be representative enough. What this has illuminated to me is a form of conditional reasoning that if there is a difference, then it is extremely small in terms of effect size.
My thanks to everyone who has shown interest in this post, and contributed their reasoning, research, or code into it.