My Fixture Picker

As is well known, I am an avid soccer fan. I love watching it and watch games from around the world. On average, I will watch 20+ hours of soccer a week. Admittedly, that time is not focused solely on soccer. I am usually having it on in the background while I do other things.

For example, this morning I watched Arsenal vs. Chelsea, two teams I am not a big fan of, face off. While watching them, hoping for a meteor to strike the stadium, I did a major revamp to a little tool I built that helps me identify games to watch.

Simply titled, “Fixture Picker”, it looks at upcoming matches in a number of leagues and identifies ones which I will likely enjoy watching. It does this in a few ways:

First, I’ve built a database of the teams in each of the leagues and assigned each team two values: My interest in the team and their relative place in the league’s standings. The latter of these is one I hope to automate in the near future, but I haven’t found a data source I can pull this from. So, for the time being, every few weeks I go in and spend 15 minutes updating the various league standings.

The system first combines the ratings of the two teams, and then combines that with looking at the difference between the teams. The idea being I want games featuring higher ranked teams and ones which are closer ranked.

Secondly I have assigned various leagues a modifier. There are certain leagues I am more eager to watch than others.

Next, it looks at if I’m interested the teams (are they my chosen teams in various leagues or do they feature players I am keen on?)

And then out of that there are four classifications which it comes back with:

  • Must Watch – Two top teams in a league where I’m interested in at least one of them.
  • Should Watch – Involves at least one team I’m interested in, or is two evenly matched teams in the top half of the league
  • Can Watch – The vast majority of games
  • Should Avoid – The system sees no reason for me to watch this game

Prior to today, I had imported the calendars of various leagues, and relied on the database of games for looking at the schedule. But this was a manual process and required me to review schedule changes or accept a certain amount of misscheduled games.

This morning’s update was to begin making use of a data source where I could abandon the manually built match database and instead pull from the data source. Needless to say, this is a very exciting update to the system.

Future updates I want to make to my fixture picker:

  • Automate pulling the team’s place in the standings
  • Refine the algorithm for identifying matches
    • Use data from previous meetings
    • Betting data?
    • Flag teams with notable injuries, etc.
  • Improve the looks, it’s very ugly right now
  • Expand the tool to cover more leagues (Mexico, NWSL being the primary two)
  • Add email updates to make sure I don’t miss must watch games

But why?

This isn’t a critical tool. I could easily look at the matches for a day and pick them on my own. This was just a fun side project to give me something to fiddle with and work on.

In many ways I see programming as a hobby and like a carpenter or artist, I just want something to work on and play with. If it ends up being something I can use, then all the better.