Archive for August, 2013

How Guessing Football Works

Wednesday, August 28th, 2013

Guessing Football

A quick post to explain a bit about how guessingfootball.com works.

The site was built for myself as a fun project to see how accurate I could get a machine to pick football games.
This after years of failing to successfully do so myself.

It was conceived many years ago and half-built in different forms on different technologies but abandoned each time before completion.

This year, in time for the NFL season, I managed to build it out using Python and Django, taking advantage of HTML5’s localstorage to store user picks.

This is how it predicts games:

  1. Grab a random score from a list of all the scores in the last two years with the frequency it occurs. 21, 17, 10 etc. are very common so they get picked more often. Do the same for the opponent.
  2. Are they the same? If so, throw one of the scores away and get a new one. Ties happen but are rare.
  3. Look at the scores and check their variance to the team’s computed mean. Basically, if the score fits within an acceptable range, keep it, if not throw it away and pick another. The computed mean is a weighted average of points-for and points-against. Meaning a teams recent scores influence the process more than a score a long time ago.
  4. Finally, a check is performed to see that the probability of these scores happening isn’t too far fetched. 5-2 for instance.
  5. Once the week is complete, look back and reflect. See where the biggest mistakes happened and lightly factor that into the next round of picks. All final scores are then added into the pool and the oldest week removed. Repeat.

That’s it. No rumour mill. No injuries or QB controversies. I know what you’re thinking… “Surely I could do better”. Well I say give it a try! (and don’t call me Shirley.)