Site icon R-bloggers

Get the Odds of Euro 2020 Games based on FIFA World Ranking

[This article was first published on R – Predictive Hacks, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

We will provide an example of how you can estimate the outcome of a Euro 2020 Game based on FIFA World Ranking. The current calculation method applied on 10 June 2018 and is based on the Elo rating system and after each game points will be added to or subtracted from a team’s rating according to the formula:

The Expected Result of a Game

The expected result of a Game is given by the following formula:

where \(dr\) is the difference between two teams’ ratings before the game. Let’s see the function of the Winning Probability versus the Ranking Difference:

diffs<-seq(-1000,1000)
probs<-1/(1+10^(-(diffs)/600))

plot(diffs, probs, main="Winning Probability vs Ranking Difference", xlab = "Ranking Differences", ylab = "Winning Probability")

A Walk-Through Example

Let’s consider the Final-16 Game of England vs Germany with the following Odds from Bet365.

Probability to Qualify

Note that according to FIFA Ranking, England has 1687 points and Germany has 1609, so the difference is 81 points. This implies that the probability of England to qualify is 57.7%:

> 1/(1+10^(-(81)/600))
[1] 0.5770925

This means that the odds are 1/0.577092=1.732825 which is very close to what Bet365 pays-off, a little bit less due to the margin. Let’s do the same exercise for Germany (note that the difference is -81 this time).

> 1/(1/(1+10^(-(-81)/600)))
[1] 2.364583

As we can see here the fair Odds appear to be 2.36 but Bet365 pays off 2.00. Now, you may understand why you will never make money from betting as we have explained in Bookmaker’s Margin.

Outcome Probability

The formula above gives the probability of each team to win, but it does not take into consideration the “Draw”. So we can claim that the Draw Probability is the product of the win probability of each team. So in our game, the draw probability is \(P(A \cap B) = P(A) \times P(B)\):

> 0.5770925*(1-0.5770925)
[1] 0.2440567

But now the probability of England to Win is \(P(A)-P(A \cap B)\):

> 0.5770925-0.5770925*(1-0.5770925)
[1] 0.3330358

And for Germany is:

> (1-0.5770925)-0.5770925*(1-0.5770925)
[1] 0.1788508

Finally, we need to normalize the probabilities as follows:

> probs<-c(0.3330358, 0.2440567, 0.1788508)
> probs/sum(probs)
[1] 0.4405566 0.3228505 0.2365929

So finally we have:

And if we want to get the odds:

> 1/(probs/sum(probs))
[1] 2.269856 3.097409 4.226670

We see that the estimated odds are 2.27, 3.1 and 4.22 where Bet365 pays 2.52, 3.38 and 2.97. Thus, according to this model, there is mispricing in the odds.

To leave a comment for the author, please follow the link and comment on their blog: R – Predictive Hacks.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.