Predicting a World Cup winner with TabPFN using a Monte Carlo simulation

Eliott Kalfon
-
-

Can a model that predicts one match at a time tell us who will win an entire World Cup? We combined TabPFN with Monte Carlo simulation to find out.

If you participated in our World Cup prediction competition, you may have seen these more professional looking charts on our website:

TabPFN Predicted outcomes

Origin story

World Cup prediction competitions are a staple in many European offices. One day, my partner asked whether we could use TabPFN to predict football matches and help her beat her colleagues. Why not? This is exactly the kind of problem tabular foundation models can tackle.

I found this amazing dataset of historical matches and quickly built a model that predicted win, draw, and loss probabilities for each game (repo).

Then our co-founder asked: Could we predict the winner of the entire tournament?

I said no. Wrong answer.

“What if we just ran a Monte Carlo simulation?”

And that is how the adventure started.

Monte Carlo simulations

Some probabilities are very difficult to estimate directly. For instance, how would you estimate the probability that France will win the World Cup?

One option is to simulate hundreds or thousands of tournaments. You can then count how often France wins and divide that number by the total number of simulations. The result is the team’s empirical win frequency.

As the number of simulations increases, assuming they are based on a well-specified, validated predictor, the empirical frequency should stabilise around the model’s estimated probability.

This is the essence of the Monte Carlo method, which was pioneered by Stan Ulam and others (source).

Simulating the World Cup

But how can we simulate a football tournament? We first need a reliable match-outcome predictor, which we can use to estimate the result of each match.

This is where TabPFN comes in. TabPFN can predict the probability of Win/Draw/Loss of a game. To do so, we use a historical games dataset as context for TabPFN, with some feature engineering to account for Elo rating, team form, head-to-head ratio and momentum.

To run a simulation, you could simply sample from these probabilities to select a single outcome per game. You then append this result to the games history, and feed this history to TabPFN to predict the next games. Like this, you could play the entire tournament out.

Sampling from probabilities

What do we mean by sampling these probabilities? Suppose TabPFN predicts the following outcome probabilities for Norway vs. England:

Norway win: 1/6, draw: 2/6, England win: 3/6

To sample one possible outcome, we could roll a six-sided die:

  • If the result is 1, Norway wins.
  • If it is 2 or 3, the match ends in a draw.
  • If it is 4, 5, or 6, England wins.

This is a simplified example of sampling from a predicted distribution. England is the most likely winner, but it will not win in every simulation.

Across many simulations, some statistically surprising outcomes can emerge—such as Turkey or Uruguay winning the championship.

Running a virtual tournament

Our simulation reproduces the tournament fixtures including group and knock-out stage. After we sample group stage outcomes, we apply the official qualification rules to build the knock-out brackets.

As the knock-out stage only has Win/Loss as outcomes, we renormalised the probabilities generated by TabPFN.

Using the example above:

Norway win: 1/6, draw: 2/6, England win: 3/6

We only use Norway win and England win probabilities, and make sure that they sum up to one.

Norway win: 1/6 * 6/4 = 1/4

England win: 3/6 * 6/4 = 3/4

The algorithm

To summarise, the algorithm works as follows:

  • Give historical matches as context for TabPFN.
  • Predict win, draw, and loss probabilities for the next match.
  • Sample one result from that distribution.
  • Advance the tournament and repeat.
  • Run thousands of tournaments and count the winners.

From frequency to probability

By running many simulations and recording the winning team each time, we can calculate each team’s championship win frequency as follows:

Frequency = Number of simulated tournament wins / Total number of simulations

With enough simulations, this frequency should converge to the probability implied by the model and simulation assumptions.

The quality of the estimate depends heavily on the quality and calibration of the underlying match predictor. If TabPFN’s probabilities are inaccurate, the tournament-level estimates will also be unreliable. Validating the match-level predictor is therefore essential before interpreting the simulation results. We did so by backtesting the model on historical games.

Beyond football

This is a toy example based on a public dataset, but the same pattern applies to many complex real-world systems, including logistics networks and financial markets. Monte Carlo simulations offer a principled way to explore possible outcomes and support better decisions.

The usefulness of these simulations ultimately depends on the accuracy of the underlying predictor. In this experiment, TabPFN made it possible to build the simulation pipeline quickly and produce promising initial results on tabular data.

What do you want to predict next?

PS: Update

We did it, we predicted the winner!