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) +
historical_home_win_avg)
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) +
historical_away_win_avg)
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: