How Our Season Simulations Work
What is a Monte Carlo season simulation?
A Monte Carlo simulation plays out a season thousands of times, with a random result for every match, and counts how often each outcome happens. If a club wins the premiership in 600 of 10,000 simulated seasons, we show it at 6%. The randomness is what makes the odds honest: a strong team does not win every simulated match, so the spread of finishing positions reflects how much luck a real season contains.
Every simulation needs a way to price a single match. The prices come from our team ratings, described in TORP for AFL and football ratings for football. The odds change as results land. They are estimates from a model, not predictions.
How does the AFL ladder and finals simulator work?
In the offline version built by our torp package, the expected margin for each remaining fixture is the home-ground advantage (6 points), plus the difference in the two teams’ ratings, plus the difference in a team-quality adjustment the match model learns, plus a small random injury-and-form wobble for each team. The simulated result is then drawn around that expected margin with a standard deviation of 26 points plus a third of the expected margin, so lopsided games have a wider spread. Ratings are built from each club’s best 21 players, with a discount for players who are injured or at risk.
When the home-and-away season ends, the simulator runs the AFL’s real Final Ten finals system, in effect from 2026. The top ten teams qualify. Seventh plays tenth and eighth plays ninth in sudden-death Wildcard games, and the top six get a bye past that round. The bracket then runs through Qualifying and Elimination Finals, Semi Finals, Preliminary Finals and the Grand Final, which is always at the MCG. Home advantage in finals depends on venue familiarity, not on ladder position.
The result for each club is a distribution: average wins, the chance of finishing in each ladder position, and finals, Grand Final and premiership odds.
The simulator runs in your browser, so you can lock in a result and watch every club’s odds update. It starts at 10,000 simulated seasons and refines to 50,000. Each remaining home-and-away game is priced from our published match forecast, with the spread of results set by how far completed games have finished from their forecast margin. Finals have no published forecast yet, so they are priced from the gap in team ratings plus home advantage, and each simulated finals result shifts the ratings for the next week, so a team that wins well carries some of that form forward.
See the AFL ladder for the current projection and the AFL season simulator to run your own.
How are match forecasts made?
Every simulation starts from our single-match forecasts. AFL forecasts come from a chain of models (total score, how the scoring splits between the sides, the margin, then the win probability), built in the torp package from TORP ratings.
Football forecasts come from gradient-boosted models that predict each side’s goals and the home, draw and away probabilities, built from the ratings described in football ratings.
How do the football league simulations work?
For each league we simulate the rest of the season many times to produce title, European qualification and relegation odds. The Sim tab on the leagues page runs in your browser and plays out the remaining fixtures 50,000 times, with a first estimate at 10,000.
Each unplayed match is priced from our published match forecast: the probabilities of a home win, draw and away win, and the expected goals for each side. The simulator first draws the result from those probabilities, then a scoreline for that result from independent Poisson distributions (a standard model for goal counts) at the expected goals. The scoreline gives each team a goal difference for tiebreaks.
Finished matches are locked to their real scores. A match in progress keeps its current score and only the goals still to come are drawn. You can also fix any result yourself.
Ties on points are broken with each league’s own rules. The Premier League goes to goal difference, then goals scored, then head-to-head. La Liga uses a different order for two tied clubs than for three or more. Serie A and the Primeira Liga start with head-to-head. If every rule leaves clubs level, we break the tie at random, standing in for a play-off or drawing of lots.
The leagues page also has a Projected tab, which shows a table our panna pipeline builds each morning from 10,000 simulated seasons. Each remaining match’s result is drawn from its home, draw and away probabilities, and clubs level on points are separated by goal difference. Cup competitions are simulated the same way, with knockout ties played out over their legs.
See football leagues for the tables, fixtures with predictions, and the odds.
How does the World Cup simulator work?
The World Cup simulator plays the group stage and the knockouts. In the groups, each match’s result is drawn from our published home, draw and away probabilities, then a scoreline is drawn from independent Poisson distributions (a standard model for goal counts) at the match model’s expected goals, kept consistent with that result. Groups are ranked on points, then head-to-head among the tied teams, then goal difference, then goals scored, then a random draw. The best third-placed teams are slotted into the Round of 32 using FIFA’s allocation table.
Knockout ties have no draw. The win chance for each pairing comes from our full match model’s pairwise table, with a drawn match split between the teams in proportion to their expected goals (a stand-in for extra time and penalties). If a pairing is missing, we fall back to a logistic model (which turns a rating gap into a win chance) on our Tiento rating, a team’s strength in goals above the average qualified team on a neutral pitch. A team’s strength rises or falls during a simulated tournament as it beats or misses expectations.
The simulation re-runs as results come in: finished matches lock in with their real scores, and in-progress matches keep their current score and draw only the goals still to come. The simulator page shows a first estimate at 10,000 tournaments and refines to 100,000 as you lock in what-if results.
See the World Cup simulator, team strength and the pick-your-bracket page.
How does the tennis draw simulator work?
The tennis simulator takes a Grand Slam draw of 128 players and plays every match in every round, 10,000 times. The bracket is the real draw order. Each match is priced by dropshot, our tennis model, a gradient-boosted model fed with Elo ratings (overall, by surface, and by set and game), a serve and return model, form, age, fatigue, head-to-head record and the round. It publishes a win probability for every possible pairing in every round, and the simulator uses those directly.
Before those pairings are published for an event, the simulator falls back to a Bradley-Terry rating (one strength number per player, where the gap sets the win chance). That rating summarises the model on a hard court, so it cannot reflect a matchup or a different surface. A player with no rating, such as a wildcard or qualifier, takes the field’s median instead of being dropped.
Matches already played are locked to the real winner, and the rest are simulated. You can also push any player through any round, and every title and round-by-round probability updates. Before the draw is made, we publish pre-tournament title odds for each player.
See tennis, the draw simulator, the draw, upcoming events and player ratings.
What are the limits?
- A simulation inherits every weakness of the ratings that feed it. If a rating is wrong about a team, the odds will be wrong in a confident-looking way.
- The odds are conditional on our match model. Injuries and team changes the model does not know about are not in the numbers.
- Small percentages are uncertain. The difference between 1% and 2% is within what the simulation can tell you.
- Odds change in real time, so a screenshot goes stale.