clock menu more-arrow no yes

Filed under:

xGunners: Introducing Win Probability

New, comments

Measuring the probability that teams will win at different game states, and how much each player adds to that.

Crystal Palace v Arsenal FC - Premier League Photo by Alex Pantling/Getty Images

If you follow me on twitter, you might have seen me tease this new running win probability thing. I promised I would do more to explain what it is and how I created it, so here we go.

First: what it is. Let’s take the Crystal Palace vs Arsenal match as our example.

What we see here is the win, loss and draw probability per minute that the match was played.

The model takes the starting win, loss, and draw probability (this is from my own simulation model, but you could just as easily use the implied odds from betting lines or anything else that you would like), and then looks at the game state to calculate the odds for that moment in the match.

In general things are fairly stable for the opening 12 minutes, then Arsenal score and they get a big jump (scoring is good for chances to win! Someone should maybe have told Unai Emery this) in their win probability.

As time goes on, Arsenal’s win probability slightly increases (getting a second goal would have been huge, and that is something I think coaches underestimate and thus get too interested in protecting their lead vs trying to add on), while Crystal Palace’s WP declines (with the probability of a draw increasing).

The next big change is the equalizer by Crystal Palace at 54 minutes, which brings all of the win, loss, draw outcomes into about equal probability with about 40 minutes to play. Both teams chances of winning decline over the next 20 minutes, with a draw becoming ever more likely.

The next big change is the red card earned by Pierre-Emerick Aubameyang in the 67th minute. To estimate the value of a red card in goals, I went with the formula that was developed by Mark Taylor, which is:

Goal Expectancy during the Game = Initial Expectancy * (Proportion of game left)^0.85 with a value of 1.4 for the initial value of the red card.

At the moment the red card was given, there is about 28 minutes left in the match, which is 29.5% of the match remaining. If we plug these into the formula, we get:

1.4 (Red Card Value) * 0.295 (Proportion of game remaining)^0.85 = 0.5 goals

With this added to Crystal Palace’s goals, they see a big jump in their chances of winning, but it declined pretty quick the longer that they went without actually turning their man advantage into a true scoreline advantage.

One of the other cool things that comes out of this work is that you can put a value on how much goals actually mean for their teams. In this match Aubameyang’s goal added 25% to Arsenal’s chance of winning and added 0.67 expected points for Arsenal. Jordan Ayew’s goal added 23% to Crystal Palace’s chance of winning and was worth 0.86 expected points for them.

We can do something similar for the whole season:

Expected Points Added and Win Probability Added Top 50

Player Expected Points Added xPA Rank Win Probability Added WPA Rank
Player Expected Points Added xPA Rank Win Probability Added WPA Rank
Pierre-Emerick Aubameyang 12.0 1 4.1 1
Danny Ings 11.3 2 3.6 2
Marcus Rashford 8.7 3 3.3 4
Jamie Vardy 8.1 4 2.9 6
Jordan Ayew 8.0 5 3.3 3
Tammy Abraham 7.7 6 3.1 5
Ra�l Jim�nez 7.2 7 1.8 16
Sadio Man� 7.1 8 2.8 7
Neal Maupay 6.5 9 2.4 11
Harry Kane 6.4 10 2.5 9
Richarlison 6.3 11 2.5 10
Chris Wood 6.2 12 2.0 13
Roberto Firmino 6.0 13 2.7 8
Raheem Sterling 5.6 14 2.4 12
Dominic Calvert-Lewin 5.4 15 2.0 14
Sergio Ag�ero 5.3 16 1.9 15
Dele Alli 5.1 17 1.5 25
S�bastien Haller 4.8 18 1.8 17
Teemu Pukki 4.6 19 1.6 20
Mohamed Salah 4.3 20 1.6 23
James Maddison 4.2 21 1.7 18
Todd Cantwell 4.2 22 1.6 24
Gabriel Jesus 4.2 23 1.7 19
Lys Mousset 3.9 24 1.2 35
Matt Doherty 3.8 25 1.6 22
James Ward-Prowse 3.8 26 1.5 26
Alexandre Lacazette 3.8 27 0.9 55
Ashley Barnes 3.8 28 1.4 29
Patrick van Aanholt 3.7 29 1.5 27
Oliver McBurnie 3.7 30 0.9 52
Wesley 3.7 31 1.3 33
Riyad Mahrez 3.7 32 1.4 28
Kelechi Iheanacho 3.6 33 1.6 21
Anthony Martial 3.3 34 1.2 34
Christian Pulisic 3.2 35 1.3 31
Kevin De Bruyne 3.2 36 1.3 32
Nicolas Pepe 3.0 37 1.1 38
Son Heung-Min 3.0 38 1.1 39
Wilfried Zaha 3.0 39 0.7 68
James Milner 2.9 40 1.4 30
Callum Wilson 2.8 41 1.0 41
Jay Rodriguez 2.8 42 1.2 36
Adama Traor� 2.8 43 0.8 60
Adam Webster 2.8 44 1.0 44
Youri Tielemans 2.7 45 1.0 42
Lucas Moura 2.7 46 1.0 47
Abdoulaye Doucour� 2.6 47 1.0 46
Mason Mount 2.6 48 1.0 49
Jonjo Shelvey 2.5 49 0.5 85
Gerard Deulofeu 2.5 50 0.8 58

How these are calculated and created:

I based the calculations on the last 4 years of Premier League match data, using the pre-match betting odds for the odds for each team.

I then ran logit regression models for each minute, using the outcome as what I was trying to predict with pre-match odds and the current game state as the predictive variables. I then smoothed the overall things using 5 minute increments.

The equation for calculating this is:

Win Probability= econstant + starting wp(x1) + game state (x2)/1+ econstant + starting wp(x1) + game state (x2)

For the different variables it is split between home and away values with the following for each minute:

Win Probability Values

Minute Away Constant Away Starting WP Away Game State Home Constant Home Starting WP Home Game State
Minute Away Constant Away Starting WP Away Game State Home Constant Home Starting WP Home Game State
1 -2.666 5.706 -0.673 -2.259 4.669 0.873
2 -2.659 5.674 -0.707 -2.248 4.640 0.880
3 -2.651 5.641 -0.740 -2.238 4.610 0.887
4 -2.643 5.609 -0.774 -2.227 4.580 0.894
5 -2.636 5.576 -0.807 -2.217 4.551 0.901
6 -2.628 5.543 -0.841 -2.206 4.521 0.908
7 -2.621 5.511 -0.875 -2.196 4.492 0.915
8 -2.613 5.478 -0.908 -2.185 4.462 0.922
9 -2.605 5.446 -0.942 -2.175 4.433 0.929
10 -2.598 5.413 -0.975 -2.165 4.403 0.936
11 -2.587 5.377 -1.005 -2.156 4.372 0.945
12 -2.576 5.341 -1.035 -2.147 4.340 0.953
13 -2.566 5.305 -1.065 -2.138 4.309 0.962
14 -2.555 5.269 -1.095 -2.130 4.277 0.971
15 -2.544 5.232 -1.125 -2.121 4.246 0.979
16 -2.535 5.192 -1.147 -2.107 4.203 0.996
17 -2.526 5.152 -1.169 -2.093 4.160 1.013
18 -2.517 5.111 -1.190 -2.079 4.117 1.030
19 -2.507 5.071 -1.212 -2.065 4.075 1.046
20 -2.498 5.031 -1.233 -2.051 4.032 1.063
21 -2.489 4.993 -1.244 -2.040 3.995 1.083
22 -2.481 4.955 -1.254 -2.029 3.958 1.103
23 -2.472 4.918 -1.265 -2.018 3.920 1.123
24 -2.464 4.880 -1.275 -2.007 3.883 1.143
25 -2.455 4.843 -1.285 -1.995 3.846 1.164
26 -2.448 4.802 -1.297 -1.984 3.812 1.178
27 -2.440 4.762 -1.309 -1.973 3.779 1.192
28 -2.432 4.722 -1.321 -1.962 3.746 1.207
29 -2.425 4.681 -1.333 -1.951 3.712 1.221
30 -2.417 4.641 -1.345 -1.940 3.679 1.236
31 -2.419 4.612 -1.360 -1.931 3.659 1.240
32 -2.420 4.583 -1.376 -1.922 3.640 1.244
33 -2.422 4.555 -1.392 -1.913 3.620 1.249
34 -2.423 4.526 -1.408 -1.904 3.601 1.253
35 -2.425 4.497 -1.424 -1.895 3.581 1.258
36 -2.419 4.468 -1.442 -1.896 3.567 1.268
37 -2.413 4.440 -1.459 -1.896 3.552 1.278
38 -2.407 4.411 -1.477 -1.897 3.538 1.287
39 -2.402 4.382 -1.494 -1.898 3.523 1.297
40 -2.396 4.354 -1.512 -1.898 3.509 1.307
41 -2.398 4.330 -1.529 -1.893 3.487 1.321
42 -2.400 4.306 -1.546 -1.887 3.465 1.334
43 -2.402 4.282 -1.563 -1.882 3.443 1.348
44 -2.405 4.258 -1.580 -1.876 3.421 1.361
45 -2.407 4.234 -1.597 -1.871 3.399 1.375
46 -2.414 4.230 -1.614 -1.870 3.379 1.401
47 -2.421 4.226 -1.630 -1.869 3.358 1.427
48 -2.429 4.222 -1.646 -1.868 3.338 1.453
49 -2.436 4.218 -1.663 -1.868 3.317 1.479
50 -2.443 4.214 -1.679 -1.867 3.297 1.506
51 -2.458 4.211 -1.692 -1.864 3.280 1.532
52 -2.473 4.207 -1.704 -1.861 3.263 1.558
53 -2.487 4.204 -1.717 -1.858 3.246 1.585
54 -2.502 4.200 -1.730 -1.855 3.229 1.611
55 -2.517 4.197 -1.743 -1.852 3.212 1.637
56 -2.543 4.197 -1.773 -1.844 3.180 1.680
57 -2.569 4.196 -1.802 -1.836 3.147 1.722
58 -2.595 4.195 -1.832 -1.828 3.115 1.765
59 -2.621 4.195 -1.862 -1.819 3.082 1.807
60 -2.647 4.194 -1.892 -1.811 3.050 1.850
61 -2.675 4.193 -1.926 -1.812 3.020 1.896
62 -2.702 4.193 -1.961 -1.813 2.990 1.942
63 -2.729 4.192 -1.995 -1.813 2.960 1.988
64 -2.756 4.191 -2.029 -1.814 2.930 2.034
65 -2.784 4.190 -2.064 -1.815 2.900 2.080
66 -2.826 4.191 -2.134 -1.822 2.862 2.150
67 -2.868 4.192 -2.205 -1.829 2.824 2.220
68 -2.910 4.193 -2.275 -1.837 2.786 2.290
69 -2.952 4.194 -2.345 -1.844 2.748 2.361
70 -2.994 4.195 -2.416 -1.851 2.711 2.431
71 -3.069 4.268 -2.518 -1.897 2.702 2.537
72 -3.144 4.342 -2.621 -1.942 2.694 2.643
73 -3.219 4.415 -2.724 -1.987 2.686 2.750
74 -3.295 4.489 -2.826 -2.032 2.677 2.856
75 -3.370 4.562 -2.929 -2.077 2.669 2.962
76 -3.433 4.609 -3.054 -2.145 2.637 3.123
77 -3.497 4.657 -3.179 -2.213 2.606 3.283
78 -3.561 4.704 -3.305 -2.282 2.574 3.444
79 -3.625 4.751 -3.430 -2.350 2.543 3.605
80 -3.688 4.798 -3.555 -2.418 2.511 3.765
81 -3.784 4.600 -3.949 -2.750 2.778 4.718
82 -3.880 4.402 -4.344 -3.083 3.045 5.671
83 -3.977 4.204 -4.738 -3.416 3.312 6.624
84 -4.073 4.006 -5.132 -3.749 3.579 7.577
85 -4.169 3.808 -5.527 -4.082 3.846 8.530
86 -4.265 3.610 -5.921 -4.702 3.045 9.961
87 -4.361 3.412 -6.315 -5.265 2.778 12.894
88 -4.457 3.213 -6.709 -5.828 2.511 15.827
89 -4.553 3.015 -7.104 -6.390 2.244 18.759
90 -4.649 2.817 -7.498 -6.953 1.977 21.692
91 -4.745 2.619 -7.892 -7.241 1.710 23.224
92 -4.841 2.421 -8.287 -7.529 1.443 24.757
93 -4.937 2.223 -8.681 -7.817 1.176 26.289
94 -5.034 2.025 -9.075 -8.105 0.909 27.821
95 -5.130 1.827 -9.469 -8.392 0.642 29.354

For goal difference in the game state, if the home team is winning the value is positive, and if the away team is winning the value is negative.