Monday, 13 February 2012

Compiling Match Odds (Part I)

As mentioned previously, I was slightly reluctant to embark on this subject as it's such a well-trodden road. However, due to a few people saying they would be interested, here I go. Please feel free to attack and mock at will; I promise to not get offended.

Before I dive in, it should be borne in mind that there is nothing new here (I just ain't that clever), so effectively this posting, and the ones that follow, will simply be a review of common methods for deriving match odds that are already out there. Some of these are used to good effect, whilst others are, shall we say, less successful. Some that I will probably be covering are:

  • Goal Supremacy
  • Rate Form (more commonly known as Elo)
  • Poisson (already largely covered in a previous post)
  • Dyads and Triads
  • Power Rating
  • Game Form
  • Score Ability

There may be others that I will cover, but that will depend on how bored I (and you) get with all this. Compiling match odds is undoubtedly a dry subject, so I've decided to break it down in to small(ish), easily-digestible, chunks. I’ll do one (or a few) at a time,depending how involved each one is:

Goal Supremacy
I'll start with goal supremacy because it is generally effective (and by that I mean it will immediately take you above random guessing), and it's very quick and easy to calculate. It does, however, also provide a graphic example of how easy it is, despite the relative simplicity of the algorithms themselves, to get caught-up in the finer detail of tweaking and weighting. And this is one of the reasons I've chosen to start with it.

I should also point out that when drawing-up this post, I have taken as my starting point material from the excellent "Fixed Odds Sports Betting" by Joe Buchdahl. If you don't have a copy of this book then I would strongly recommend it. Personally I found it one of the best books on betting and statistical analysis when I first started out, and it opened-up all sorts of new thinking when I first read it. So go out and grab yourself a copy.

Goal supremacy is achieved by simply totting-up the goals scored minus the goals conceded for each team over the course of the last six matches played. There have been quite a few tests run to determine the optimum number of matches to go back over, and it is now widely recognised that six matches is the most accurate guide to the eventual outcome of a match.

So let's take an example. We have the North London derby coming up between Arsenal and Spurs, so let's use that. Arsenal have scored 15 goals and conceded 9 goals over the last six matches. Spurs have scored 12 goals and conceded five goals over the last six matches. This equates to:

   Arsenal_diff    = 15 - 9 = +6
   Spurs_diff      = 12 - 5 = +7

Now we could go rushing off and try to derive match odds based simply on this, but due to what is termed "noise" in the overall figures, we could end-up with some anomalous results. To overcome this, a "best-fit" relationship is identified with the given match ratings. Happily, I don't need to bother you with all that, as this has already been done for us by some nice intelligent people and all we need to do is plug in a given  "noise-reduction" figure alongside our two "diff" figures. The value I’ll be using for home win is 0.0156. These figures are then used in conjuction with the average home win percentage and the average away win percentage values for the league in question.

Okay, so before we construct our algorithm, let's look at these average home/away win values for the Premier League. This year in the EPL, we have a surprisingly low home win percentage up to today:

   Home Wins   = 42.0%
   Draws       = 24.8%
   Away Wins   = 33.2%

Wow. as you can see, the home win percentage for the season is markedly low. At this point, you may feel like shrugging your shoulders, assuming that this figure will slowly rise up during the last part of the season (in which case that could be an opportunity in it's own right), or you may decide to stick with that for your calculation of Goal Supremacy match odds. Before you decide however, I'll just point out the averages for the previous three seasons:

   2010/2011:  Home Wins=47.1%, Draws=29.2%, Away Wins=23.7%
   2009/2010:  Home Wins=50.8%, Draws=25.3%, Away Wins=23.9%
   2008/2009:  Home Wins=45.5%, Draws=25.5%, Away Wins=28.9%

Hmm, what should we do here? Use the current season’s very low figure? Use last season? Or perhaps take an average over several seasons? This is where some of the tweaking and weighting can come in. Indeed if you start getting into these kind of algorithms in any serious way then, if you're like me, you'll end-up crawling up your own arsehole in the endless pursuit of the perfect values for each league. It's a never-ending source of inspiration and frustration, but I'll leave the full discovery of that particular joy up to you.

For now, it's recommended that you stick with an historical average of 46.47% for home wins and 29.48% for away wins. If you get further into this, you'll see that some leagues perform better than others using historical averages, in which case you may want to add-in extra "weighting" on a per-league basis... But as I say, I'll leave that delight up to you.

Okay, so I may have stretched your patience too thin already with this diversion into averages. I did promise that calculating goal supremacy was not difficult, and really it's not. Below, I’ll start throwing out some calculations, but the only figures you’ll need to provide are the ones in green. Home win odds are calculated like this:

   Home Win Odds = (home_noise_reduction_figure *
                   (Arsenal_diff - Spurs_diff)  +

So let's plug in the actual values that we've worked-out so far:

   Home Win Odds = (0.0156 * (6 - 7) + 0.4647)

This gives us a percentage chance of Arsenal winning on Sunday equal to 44.91%. If we divide 1 by this (1 / 0.4491) we see that Goal Supremacy is estimating Arsenal's odds at 2.22.

Right, onto Spurs odds. This looks on the surface slightly more difficult as we have two noise reduction figures to throw in here. The first is 0.0003 and the second is 0.0127. Really you don’t need to concern yourself with them.

   Away Win Odds = ((noise_reduction_fig1 * (Arsenal_diff -
                    Spurs_diff)) 2) - (noise_reduction_fig2 *
                    (Arsenal_diff - Spurs_diff) +

Yuk. This looks a bit daunting but probably because it's spread over several lines. Again, you really only need to worry about the goal diff values that we’ve already calculated and the league away win average. The rest is all boiler-platestuff. Plugging in the actual values for this, we get:

   Away Win Odds = (0.0003*(6 - 7)2 - ((0.0127*(6 - 7)) + 0.2948)

If you were going to do this in Excel (recommended), then this would simply be:

   =(POWER((0.0003*(6 - 7)), 2)-SUM(0.0127*(6 - 7)) + 0.2948)

So the only items here you would need to replace would be the “6” and the “7”, which would be the goal_diff figures for the two teams you’re interested in, and the league average away win percentage. Not that hard, is it? Running this calculation, gives us an away win percentage chance of 30.75%, which is match odds of 3.25.

Alright, so we only have the draw calculation now, and this is the easiest of the lot. Because we have no overround to incorporate, we can provide a 100% book. Therefore the draw percentage chance is simply 1 minus the percentage chance of Arsenal winning and Spurs winning:

   Draw Odds = 1 – (0.4491 + 0.3075)

This means Goal Supremacy has calculated a 24.34% chance of a draw, which equates to 4.10 match odds. So, we now have:

   Arsenal  = 2.22
   Spurs    = 3.25
   Draw     = 4.10

Looking around the bookies, the best odds I have seen for this match are:

   Arsenal  = 2.30
   Spurs    = 3.25
   Draw     = 3.40

Taking the overround into consideration, this is not a million miles away from our Goal Supremacy calculation.

Okay, if you haven’t fallen off your chair with the stultifying boredom of it all, then you’ll be pleased to know that we’re all finished. As mentioned, part of the fun/nightmare of this technique comes when you start playing around with any additional weighting factors you may decide to add-in for a particular league, and also what league average figures you want to use.

I’ll finish here because this has taken a bit longer than I expected. I’ll pick this up again shortly with other ways to compile match odds.


Update: You can find the other posts on this subject here:


  1. Top post, thanks, I'm going to crawl up my own arsehole now, damn you, I'm a tweaker.

  2. Nice post Eddie - I've been looking for something like this for a while and am looking forward to the other methods hinted at. But... I'll be damned if I can see the home calculation - I'm getting 46.54 indicating odds of 2.15....

  3. Surely your goal differential numbers need to account for the strength of the opposition? Last six games versus Wolves, Bolton, QPR etc. is a lot different to playing the Manchesters, Arsenal, Chelsea etc.

  4. Great post. So you just look at the last 6 games regardless of the competition? Should you be looking at league games only if you're focusing on a league match?

  5. Dave, looks like you may be getting your decimal places wrong.

    Remember that the 46.47 is a percentage and therefore in any calculation you would need to have it as 0.4647. Either that or you are adding a couple of extra zeros in the noise reduction figure. If you use 0.000156 instead of 0.0156 (which I used) then I get the same figures as you. That's not right though.

    For everyone who's commented, I'll address all of them in my next post.


  6. Are those "noise reduction" figure always the same for the home and away team?

  7. Hi Rob

    I'll answer this question in my post tonight

  8. Just stumbles across this blog - great read

  9. Hi. I'm trying to do a test of the Goal Supremacy system. I have the data of the PL 2011/12 matches in an excel document and now I need a good COPYABLE function to calculate the goal differences.

    Thanks for your help.

  10. Hi jking7

    I'll answer this in tonight's post, after the England match.

  11. Hello, really really really enjoyed your match odds series and the posts which relate to them. ive vowed to change my betting patterns this season and am spending a few months educating myself in relation to stats, probabilities and theories. Your writing has been a fantastic help so a massive thank you!

    cant wait for the next instalments, i prey before the season starts!

    thanks again

    1. Thanks for your comment, and I'm glad the posts have been helpful.

      I may do one more match odds post, but we will have to wait and see :-)

  12. Dear Soccer Dude, love your stuff, especially odds calculation, is there any chance you could post something on accounting for defensive strength/ opposition quality?

    also youve said in a few posts about there being plenty of stuff available on the web in relation to odds compiling but its all really vague and yours is probably the best ive come across, is there any chance you could post a bibliography in reference to good material available online?

    thanks very much, keep up the good work


  13. Hi mate, I have a question about this post (long time ago!)

    If you were to act like a bookmaker on betfair, offering odds, obviously you would want an overround. So, for the odds you compiled for the Arsenal v Tottenham match, what would your final odds be with overround? Say a 110% book, would you spread the overround evenly across all outcomes (3.33%-3.33%-3.33%) or proportionate to the chances of each outcome occuring?


  14. Many Thanks for the post. I hope you read me a year later, I would ask how the variables are obtained

    noise_reduction_fig1 and noise_reduction_fig2

    Thank you again.

  15. Hi anon.

    I didn't mention how the figures were derived at the time, as I wanted to take it all slowly, but those figures are calculated using regression analysis. If you want to know more, look at my third post on Compiling Match Odds here:


    1. Good afternoon,

      I'm trying to create a system like yours for the Spanish leagues. Although your posts are great, I wonder if you have any tool designed, albeit in excel, apart from the one in Compiling Match Odds Part ii.

      Thank you for the lessons.

  16. Good morning SoccerDude,

    Thanks, this post had not seen yet

    THANKS and Good Work

  17. I'm sorry but it's pretty clear this isn't accurate. Your random match just so happened to fall around the odds.

  18. How exactly do you calculate the noise reduction?

  19. Have been in my ass for 6 month, have made a complete analyses of all European matches 215.000 since 2000. 74000 was eligible for analyse gave me a very good ranking system win between 56% and 70 every week


Note: only a member of this blog may post a comment.