Match Odds and Expected Points (xP)

(Follow @Row-Z Report)

In my previous post, I had explained the derivation of my xG model and finished by listing some potential application areas. This time, I focus on assessing how xG relate to team performance in winning matches, points and subsequently cups/titles. Let’s go!


To recap what I had shown previously, let’s take a look at team xG’s from last season in Eredivisie. Feyenoord – the champions – had a phenomenal offensive season in 16-17: scoring 19 goals more than what the model suggests. PSV on the other hand were only on par with expectations. In defense, the Big 3 were good enough, conceding less than essentially what an average team would have conceded. Go Ahead Eagles, at the other end, not only conceded a lot of goals (73), but also underperformed since they ‘should’ have conceded around 7 goals less (66), according to my model.

xG v. Goals

xGoals to Match Odds

How to utilize the xG numbers and move one step ahead? Graphs above show aggregations over 34 matches and they surely help understanding the big picture for the whole season. But they cease to tell us what happened in matches. In particular, when did Luuk de Jong’s bad finishing actually hurt PSV? And how much?

For this, we turn to match odds and expected points (xP).

First, let us note that all xG numbers come at the most granular level: goal attempt. Those per attempt numbers are then aggregated over a match. For example, let’s look at the below match map between PSV and Heracles last season.

Match map for PSV vs. Heracles

Talk about inefficieny! PSV had 24 chances but only managed to score one, where Heracles were able to score out of only three. The ‘fair’ score line for this match should have been 2.19-0.23, which basically means an easy win for PSV.

Given these xG numbers, it is possible to derive all potential outcomes for the match. As it's most commonly used in football analytics context, I use Poisson distribution to calculate the probability for each and every possible score (1-0, 1-2,1-1,… 4-3, … etc.). Then, by summing up these probabilities accordingly, I derive the probability of a PSV win (or a draw, or Heracles win).

For example, an xG score line of 2.19 vs. 0.23 yields 83% win probability for PSV and a 14% for a draw. To put it differently, given the chances both teams had during the match, we would expect PSV to win around 8 in 10 times. Apparently, it was not PSV’s best of days that day in terms of scoring skill (or luck, or opponent goalkeeper performance - you name it), so that both sides shared points with a 1-1 draw.

These probabilities themselves are very powerful and used in many cases. First and foremost, all betting companies publish their odds for a given match with respect to their own probability calculations. To be sure, whatever the math involved, it is all done before the match (or during, in case of in-play betting). In contrast, my numbers in the above bar chart are after the fact! (i.e. match).

Match Odds to Expected Points (xP) One other use case for the match odds is to assess the fair number of points a team deserves . PSV’s expected points for this match, for example, would be;

xP = (83% * 3) (win) + (14% * 1) (draw) + (4% * 0) (lose) = 2.63 points

... while in reality they received only 1 point, due to draw.

An xP of 2.63 for a single match surely doesn’t really fit with how the point structure works in leagues. However, when aggregated over a period - say over a whole season – it may give powerful insights on team performance and the final league table. I will get to that in my next post, hopefully very very soon.

Until next time!

This article was written with the aid of StrataData, which is property of Stratagem Technologies. StrataData powers the StrataBet Sports Trading Platform, in addition to StrataBet Premium Recommendations.

Follow Row-Z Report on Twitter.

Tag Cloud
Follow Us
  • @rowzreport
  • @rowzreport