The Inner Workings of Footstock Virtuals

April 14, 2020
Oliver Renner


The Inner Workings of Footstock Virtuals

With the Footstock Virtuals being a huge success, we want to share some insight into how our match engine works. Virtual tournaments have been on our roadmap since day one of the Indiegogo campaign, and with the Covid-19 situation, we decided to accelerate the introduction and haven’t looked back since!

As we approach our first paid contests, we want to shed some light on the inner workings of our match engine, so that everyone has the same level of insight.

Fixtures and Lineups

The first 10 fixtures and lineups were scheduled by the Footstock Team. It was our goal to provide exciting fixtures with pre-established lineups. Going forward, all lineups will be generated automatically. This means lineups will be chosen by internal systems, with no human interference. Matches will follow a predefined schedule, which will be published next week. Creating automated lineups is a complicated matter, and we will provide some insight on this towards next week.

As soon as the tournaments are visible in our App, the lineups will also be available via the “show lineup” button on each tournament.


It’s still early days for our engine, so subs only have a small role at the moment. Our system randomly decides to sub 1-3 players per game. Going forward, we will also see injuries, which will put more focus on benched players.


Once a lineup is formed, our system is able to compute a relative strength for each team based on the individual player PPG. The match engine will pick a winner according to that strength. If two teams are similarly strong, there is a chance of a tie.

Be aware that the strength of a team only increases its chances of winning: it doesn’t guarantee victory. For example, if Manchester City face Norwich in a virtual tie, Man City’s superior PPG will give them a higher chance of winning. That doesn’t mean, however, that Norwich are incapable of causing an upset. If they can do it in real life, they can do it on Footstock!

Goals and Assists

Goals and assists are determined in accordance with every player’s PPG. Once our engine computes a goal, it looks at all the on-field players and picks a goalscorer based on their data. If a player has a high goals-per-game compared to the other on-field players, he is likely (but not guaranteed) to score that goal. The same applies to the Assists.

Fouls, Bookings and other stats

The above pattern repeats. Each stat is drawn in accordance to a player’s PPG for the relevant stat. On top of that, we include a small amount of variance to acknowledge the “daily form” of a player – i.e. the mood, fitness levels and attitude of a player on any given match day. This variable may slightly increase or decrease their chances of performing an in-game action.

On a final note, we want to state that all* aspects of Footstock’s virtual tournaments are generated by our match engine, with no human intervention at any point. So far this has yielded realistic matches, but occasionally might result in some statistical outliers which may be unexpected or surprising. Just like in real football.

We will continually improve our match engine, and keep you posted on further developments. If you have ideas or any problems, you will always find an open ear in our Official Slack chat.

*with the only exception being this week’s lineups as stated above.

Oliver Renner

Oliver is the co-founder of Footstock.