Methodology

This page explains how Proknoz generates its predictions. Transparency is a core principle — you should understand what the model does, what data it uses, and where it might be wrong.

Football — Dixon-Coles Model

Football predictions use a variant of the Dixon-Coles model, which extends the standard Poisson regression by correcting for the observed correlation between low-scoring outcomes (0-0, 1-0, 0-1, 1-1).

The model estimates attack and defence strength parameters for each team, along with a home advantage factor. These are fitted using historical match data with an exponential decay that weights recent matches more heavily than older ones. A regularisation term keeps these parameters anchored toward the population average, so a team only earns an extreme rating when the evidence genuinely supports it (see Calibration and Accuracy below).

At prediction time, four multiplicative adjustments are applied to the base expected goals (lambda) before computing match outcome probabilities:

From the adjusted expected goals, a Poisson score matrix is computed and used to derive probabilities for all standard markets: match result (1X2), over/under 2.5 goals, and both teams to score.

For international fixtures (World Cup, European Championship), the same model is trained on national-team results going back several years, including competitive matches and friendlies. Friendlies are kept deliberately, because cross-confederation matches are the only games that let the model compare the relative strength of teams from different continents. The home advantage factor is removed for matches played at neutral venues.

Football Tournaments — Group Stage plus Knockout Bracket

Tournament competitions such as the World Cup and European Championship are not simple league tables, so their outright predictions (who reaches the final, who wins it) use a dedicated two-stage simulator built on top of the Dixon-Coles match engine described above. Each run simulates the full path to the trophy:

Aggregating thousands of these full-tournament runs produces, for every team, the probability of advancing from the group, reaching the quarter-finals, semi-finals, and final, and winning the tournament outright. These are the columns shown on a tournament's outright page. Because each run is considerably heavier than a single league simulation, tournaments use 5,000 runs per update rather than 10,000.

Formula 1 — Plackett-Luce Model

F1 predictions use a Plackett-Luce ranking model, which estimates each driver's relative strength and converts it into probabilities for every finishing position. Unlike simple regression, Plackett-Luce naturally handles the full finishing order and produces consistent multi-outcome probabilities (winner, podium, top 6).

The model considers: qualifying position (the strongest single predictor of race outcome), recent driver form across the last several races, constructor performance trends in the current season, driver history at each specific circuit, and session data from practice and qualifying.

Predictions are generated in two windows: a pre-weekend estimate using historical data only, and an updated post-qualifying prediction that incorporates the actual qualifying result and weekend session pace.

Data is sourced from the FastF1 Python library, which provides access to the official F1 Live Timing feed including qualifying times, race results, lap times, pit stops, and tyre compound information.

WRC — Surface-Adjusted Elo

WRC predictions use a surface-adjusted Elo rating system combined with Bradley-Terry probability modelling.

Each driver maintains separate Elo ratings for overall performance, gravel rallies, asphalt rallies, and snow rallies. Ratings are updated after every event using finishing order and opponent strength, with higher K-factors for newer drivers so the model adapts faster when limited historical data exists.

Rally win and podium probabilities are derived from the Elo ratings, while reliability is modelled separately using each driver's historical finish rate. Drivers with frequent retirements due to crashes or mechanical issues receive lower effective probabilities.

Key factors include surface-specific performance, recent form, historical results at each rally, and overall reliability.

Cycling — Stage-Type Regression

Cycling predictions use a logistic regression model trained separately for each stage type: flat (sprint), mountain, time trial, and mixed/hilly. Treating stage types as distinct prediction problems reflects the reality that specialists consistently outperform generalists in their preferred terrain.

Each rider is represented by a feature vector combining specialty scores (derived from ProCyclingStats profile ratings), recent form, and race fatigue. The specialty scores measure a rider's ability in six dimensions: sprinting, climbing, time trialling, punching power, one-day racing, and GC ability. Stage-type win rate — the fraction of top-5 finishes in stages of the same type over the previous two years — is the most predictive single feature and ensures that sprinters dominate sprint stages and climbers dominate mountain stages regardless of overall prestige or UCI points.

Fatigue is modelled in two components. Intra-race fatigue accumulates kilometres and elevation within the current race and is normalised against a full Grand Tour (approximately 3,500 km and 50,000 m). Inter-race fatigue measures total kilometres raced across all events in the previous 28 days, capturing the accumulated load from a packed calendar. Both components influence both predicted performance and DNF probability.

At prediction time, raw model scores are converted to a proper probability distribution via softmax across the entire field, so probabilities sum to exactly 100% across all starters.

Models are trained on four seasons of WorldTour results (2022–2025) covering Grand Tours, monuments, and major stage races. After each stage completes, the relevant stage-type model is partially retrained with the new result, keeping predictions fresh as form evolves through the season.

Data is sourced from ProCyclingStats via FlareSolverr (Cloudflare bypass), with a rotating proxy pool to ensure reliable access. Historical stage results, rider profiles, and specialty scores are cached locally to minimise scraping frequency.

Cycling — GC and Classification Predictions

General classification (GC) predictions for stage races use Monte Carlo simulation over the remaining stages. Starting from the current live GC standings, each simulation run samples a time gain or loss for every active rider on each remaining stage, using distributions calibrated by stage type and rider specialty. GC contenders (high GC score or within five minutes of the leader) receive tighter distributions; domestiques and non-GC riders receive wider distributions reflecting their inconsistency in the mountains.

DNF probability increases with accumulated fatigue and each rider's historical retirement rate, and is applied independently on every simulated stage. Riders who abandon in a simulation run are excluded from subsequent stages in that run.

Mountains and Points classification probabilities are approximated from the GC simulation results using specialty score weighting: climber score for KOM, sprint score for Points. White jersey (best young rider) probabilities are derived by renormalising GC win probabilities over under-23 riders only.

For one-day classics, no GC simulation is needed — the stage winner model is applied directly to the full startlist.

Outright Predictions — Monte Carlo Simulation

League winner and championship predictions use Monte Carlo simulation. Remaining fixtures or events are simulated 10,000+ times using the current model parameters, producing a distribution of final standings.

In WRC, each simulated rally includes overall classification, Super Sunday, and Power Stage points. Manufacturer simulations also apply FIA scoring restrictions such as limiting points to nominated factory entries.

These probabilities are updated after every matchday, race weekend, rally, or stage so users can track how predictions evolve throughout the season.

Reasoning Explanations

Each prediction includes an automated reasoning summary. This is generated from templates — the model identifies the 3–5 most influential factors for that specific prediction, maps them to human-readable sentences, and composes a brief narrative. No large language models are involved in this step.

Depending on the sport, explanations may reference recent form, surface-specific performance, injuries and suspensions, qualifying pace, reliability, stage type suitability, accumulated fatigue, expected goals quality, confirmed lineup formations, or historical performance at a venue or rally.

Calibration and Accuracy

Raw model outputs go through calibration (Platt scaling or isotonic regression) to improve probability estimates. The Performance page shows ongoing tracking via Brier score, log-loss, and calibration curves.

The football model also applies ridge (L2) regularisation to its attack and defence parameters during fitting. This pulls every team's rating toward the population average unless the match evidence strongly justifies an extreme value. It matters most for international football, where some national teams play the majority of their qualifying matches against much weaker opposition; without regularisation, the model can mistake “rarely concedes against weak teams” for an elite defence. Regularisation reduces, but does not entirely remove, this effect (see Limitations).

Models are versioned. Each change is recorded, and accuracy is tracked separately per version so that genuine improvements can be distinguished from noise.

Data Sources

All data comes from free, publicly available sources.

For football: Football-Data.co.uk (historical CSV data for model training), Football-Data.org (fixtures and results API), the martj42 international results dataset (national-team match history for World Cup and Euro modelling), Understat (per-team season xG averages for the top five European leagues), FBref (xG for Liga Portugal and European cup competitions), and Transfermarkt (player injuries, suspensions, and confirmed lineups — scraped from public league pages).

For Formula 1: the FastF1 library, which provides qualifying times, race results, lap data, pit stops, and tyre information from the official F1 Live Timing feed.

For WRC: the official WRC.com public API, which provides structured event data including itineraries, entry lists, stage results, rally classifications, and championship standings.

For cycling: ProCyclingStats, which provides race calendars, stage profiles, startlists, results, and rider specialty profiles for all WorldTour events.

Limitations

Models are simplifications of reality. They don't fully account for tactical changes, transfer-window signings, managerial motivation, weather conditions beyond basic factors, or unpredictable events.

Football injury data from Transfermarkt reflects publicly reported absences, which may lag behind actual squad news by a day or two. Players listed as doubtful but who ultimately play are not automatically corrected before kick-off unless a confirmed lineup is available. The xG adjustment applies season-long averages and does not capture recent shooting form changes within the season.

For international football, comparing the strength of teams from different confederations is inherently difficult, because they rarely play each other outside major tournaments. The model leans on friendlies and intercontinental fixtures to calibrate this, and applies regularisation to limit over-rating, but some teams that dominate weaker regional opposition may still be rated more highly than a neutral observer would expect. Tournament outright probabilities should be read in that light, particularly in the early rounds when few matches have been played. As more matches are played and tracked on the Performance page, these estimates can be assessed against actual outcomes.

Tournament outright simulations currently treat all knockout matches as played at neutral venues and do not model travel, altitude, host-nation advantage, or squad rotation between fixtures. Extra time and penalty shoot-outs are modelled as a single tie-break rather than as separately simulated phases.

WRC predictions do not currently model road position effects on gravel, changing weather conditions during rallies, or team orders.

Cycling predictions do not model team tactics (leadout trains, domestique support, protected riders), breakaway probability, or intermediate sprint bonuses in the GC simulation. One-day race predictions treat each event independently and do not account for fatigue from earlier races in the same week (e.g. the Ardennes classics).

Probability estimates are the model's best assessment, not certainty.

The models are trained primarily on recent seasons and may perform less well for newly promoted teams, rookie riders, or competitions with limited historical data.