# Calculating the probability of winning a game of Rainbow Six Siege

I'm currently developing an application in Python that calculates the probability of winning a game of Rainbow Six Siege based on the skill level of the players in the game.

Siege is a 5 vs. 5 competitive first person shooter played in rounds. Let $A$ denote the number of rounds won by Blue team and $B$ be the number of rounds won by Orange team. If Blue team wins the game, it can be in the form of one of the following outcomes:

$$(A, B) = (4, 0), (4, 1), (4, 2), (5, 3) \text{ or } (5, 4)$$

i.e., there is a tie break if the number of rounds played reaches (3, 3). The reverse is also true for Orange team winning a game.

Now for the data: the Python script reads the names of the players in each team from the scoreboard, sends an API request to Ubisoft (the game's developer) and obtains the following statistics for each player in the game:

total number of games won
total number of games lost
total number of games played
total number of kills
total number of deaths
total time played (in seconds)


Note that some players can leave the game, making it a 4 vs. 5 game for example.

Now I would like to be able to calculate (an estimate of) the probability of winning the current round and the probability of winning the entire game, at any given stage in the game.

Here is what I am thinking to do so far:

• Calculate the average W/L (win-loss) ratio for each team:

for example, the Blue team average W/L ratio ratio is given by

$$\text{average W/L} = \frac{1}{n}\sum_{i=1}^n \frac{\text{total number of games won by player } i}{\text{total number of games played by player } i}$$

where n denotes the number of players on Blue team.

• If we have for example, Blue team average W/L ratio = 0.9 and Orange team average W/L ratio = 1.2, the probability of Blue team winning the game should be given by:

$$\frac{0.9}{1.2+0.9} \approx 43\text{%}$$

Is there anything wrong with this method? Additionally, I would like to incorporate the K/D ratio as well as the total time played in the calculation. Also, if a certain number of players leave each team, how could we take this into account?

Thank you in advance.

P.S. I plan to release all of the code on GitHub when the project is (mostly) complete.

• Why are you adding $1$ in the denominator? Should it be $.9$ instead? What do you compute as the probability that the Orange team wins? – saulspatz Jul 13 '18 at 20:50
• @saulspatz yep, thanks for spotting that – aL_eX Jul 13 '18 at 20:51
• You have described an algorithm for the computation. It is not obvious that your result matches the results on the field. One would normally create a formula (or more than one) with adjustable constants, maybe including player ratios of deaths to kills, for example, which constants to weight games won vs kills/deaths, then use past results to come up with the weightings. – Ross Millikan Jul 13 '18 at 20:51
• I am considering writing an answer on this, but I don't think the average W/L is a very good model for team games like this. One way to try to formalize the game is to replace it with "Geiger racing": each player is a radioactive isotope with its own half life and whichever team generates more decays after a certain amount of time wins. In this scenario, you would expect an extremely good player (large decay rate) to be able to win even with poor team mates, but averaging the W/L rates will make an unbalanced team like this look worse than it is. – Mario Carneiro Jul 13 '18 at 20:57
• There isn't enough information to know the answer. You have to make predictions and see how well they match up with reality. For example, in some games, one really good player can compensate for poor teammates, so you should give more weight to stars. In other games, one bad player will bring the best team down, and you should be penalize the team when there's a bad player. Your own experience with the game may guide you in setting up an initial formula, but you should make it adjustable, as Ross Millikan suggests in his comment. – saulspatz Jul 13 '18 at 20:57