Every published number is a probability produced by a frozen model from information available before kickoff, then measured against what actually happened.
A 65% forecast does not say the favourite will win. It says that across many similar matches, teams in that position win about 65 times in 100. A single result never proves a forecast right or wrong; a long run of them shows whether the stated confidence was honest.
Each team carries a single rating. After each match the rating moves by a fixed factor multiplied by the difference between the result and what the model expected, so beating a strong opponent moves a rating further than beating a weak one. Ratings are carried across seasons at half weight, because past form fades.
M0 compares the two ratings, adds a fixed home advantage, divides by a scale factor, and converts that to a probability with a logistic function. Nothing else enters it. Its parameters are frozen: changing any of them creates a new model version rather than quietly altering this one.
M5 adjusts M0 using verified pre-match team selections: how experienced the named starting side is in those positions. Unknown players, debutants and new signings are treated neutrally — never penalised. When trustworthy pre-match selections are not available, the baseline M0 forecast is shown and labelled as such.
A forecast is locked before kickoff and then cannot change: not its probabilities, its inputs, its model version, nor its data cutoff. This is enforced in the database, not only in the interface. Corrections never overwrite a locked record; they create a new versioned record and the original stays visible.
Brier score is the squared difference between the forecast probability and the outcome, and log loss penalises confident mistakes heavily. For both, lower is better. They measure whether the stated confidence was justified, not merely whether the favourite won.
Picking winners is easy in a competition where favourites often win; a model that says 51% for every home side can look accurate while carrying no information. Accuracy is reported as a secondary figure only, always with the number of matches behind it.
A result is never used to build the forecast for its own match. State updates run strictly in chronological order. Training data, model-selection data, held-out data and prospective live forecasts are kept distinct, and backtested results are always labelled separately from forecasts published before kickoff.
Elo-style team strength rating with fixed home advantage. Frozen specification.
M0 specification applied to Super League without competition-specific validation.
Player experience weighting experiment.
Availability-loss experiment.
Lineup continuity experiment.
Not deployed for Super League.
M0 probability adjusted by a standardised team-selection depth-stress feature. Requires verified pre-match team selections.
Short turnaround and travel workload experiment.
Penalty and discipline experiment.
Preseason squad strength experiment.