Where does each team actually finish? Every remaining match simulated 10,000 times, weighted by season form and a small home-field edge. Probabilities, not certainties.
For each team, we compute a skill rating that is 60% regressed season win % (the long-run signal) and 40% regressed rolling last-five-game form (the short-run signal). We then pit the home and away skills against each other in a logistic with a small home-ground bonus: P(home wins) = sigmoid(4 × (skill_home − skill_away) + 0.25). Apply that to every remaining fixture, simulate the season 10,000 times, and tally where each team finishes.
"Regressed" matters. After 10 games a 9-1 record is noisy evidence — it could just as easily come from a 75% true-skill team on a hot run as from a genuine 90% team. We pretend each team has eight extra "ghost games" at 50% on top of their actual record, which pulls extreme records back toward the middle. So 9-1 is treated as ~72% true skill, and 0-9 as ~24% (not 0%). This stops the model from being absurdly confident about teams whose sample size is only 10 games.
"Rolling" matters too. The form component isn't frozen at today's last-five — it updates after every simulated match. A team that wins their next five sim-games gets hotter mid-sim; a team that drops five gets colder. This bakes in realistic momentum swings: a 9-1 team can still hit a slump and a 0-9 team can still catch fire, and those streaks bend their odds in real time.
Tie-breakers in the simulated end-of-season ladder use each team's current points differential (we don't simulate score margins). Probabilities are reported to one decimal place; confidence intervals are 10th–90th percentile across the 10,000 runs.
Treat as entertainment. The model sees no injuries, no suspensions, no weather, no Origin disruption, no refereeing variance, no roster changes, no coaching changes mid-season. A team's skill rating is frozen at today's value across all 10,000 simulated rounds. The point isn't to be right — it's to make the shape of the run home legible.