What is this Match Simulator?


I have always been a great fan of simulating matches and competitions. Combined with my love for football betting, I decided to create a tool that would simply simulate football matches. Prior to this version, I had already create a much simpler version for another website I hosted at the time. Because I wanted to add in information such as goalscorers as well as provide a 'live' experience, I decided to start working on this version of the match simulator.

How it works

The basic idea was to use the FIFA 19 player data to get an overall strength of each team; the ten best outfield players and the best goalkeeper would be selected and their average rating would determine the team's strength. By getting the average strength of the opponent, a percentual strength could be assigned. For example, a team with an 80 overall rating versus a team with an overall rating of 75, would mean a percentual strength of 80/(80+75) = 52% for the team with a rating of 80. Of course, these variables were tweaked to more accurately represent the strengths of the teams.

Getting these percentages was crucial to the functionality of the match simulator. For each 'minute', a real-life second, the algorithm would randomly generate a number and select the event that belonged to that number. All the possible events were given a certain range between 0 and 1000 that represented their real-life frequency: Suppose that a match has on average 20 shots in total, this would mean that the chance of a shot in any minute would be 20/90 = 22%. Therefore, the event 'shot' would have a range of 0 to 220. Now, if the randomly generated number would be between 0 and 220, the system would thus generate a shot for either of the teams. To decide what team would shoot, the previously determined percentual strength would come in handy: a newly generated number between 0 and 100 decides what team gets the shot, which means that a value between 0 and 52 would indicate a shot for the home team and 53 to 100 would indicate a shot for the away team.

Now, for each of these events, several other numbers were generated to more accurately determine the event, e.g. a shot on target/woodwork/off target (and within shot on target, it could then either be a blocked shot/save/goal). This describes the general functionality behind the Match Simulator; basically, the algorithm is an implementation of the Poisson-distribution.

Why use it?

Let me start by saying that the simulations are just that: simulations. It is not a fortune teller, and has a prediction accuracy of around 40%-50%. So, why use it then? First of all, it can simply be fun to see how certain matches would play out, or who wins your custom cup or league. Secondly, you can use it as an addition to your own football related projects and scenarios, where you need results for non-user controlled teams. Finally, contrary to what I said, you can of course use it as a predictor, for example in football predicition poules with your friends. In fact, I use it for some of those (for example the last European Championship), and have seen quite some good results! However, you need to keep in mind that the results are just simulations and no rights can be derived from using these for your predictions.

Version history

As stated before, the first prototype relied on the FIFA 19-dataset and was rather basic. The following image shows what the first version looked like:

After this worked, I added some more functionality such as certain leagues (Dutch Eredivisie, English Premier League) and cups (Dutch KNVB Beker). Furthermore, I updated the look of the application and created a logo. This version was online for quite a time when at some point I discovered that it ranked rather high on Google, resulting in a lot of visitors. At this point, I started adding in the player data for previous seasons and the newer seasons and make some small updates to the website. After adding a 'Contact' page to the website, I came into contact with the users of the application and found out what functions they would like to see. On February 12 I released a big update that addressed many issues, added more features and functionality as well as a complete overhaul of the look of the website (which you are currently looking at). Since then, I have slowly been adding small features to the website. On the Trello-board, I keep track of all the suggestions and ideas.