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.

Tennis — Elo Ratings for ATP Singles

Tennis predictions use a head-to-head Elo rating system. Every player carries a single overall rating; the probability that one beats the other is the standard logistic function of the difference between their ratings, on the conventional 400-point scale. A 100-point gap means roughly a 64% chance for the higher-rated player, a 200-point gap roughly 76%.

Ratings move after every completed match by an amount that depends on how surprising the result was and on how much the model already knows about each player. The K-factor — the size of that adjustment — starts at 32 for a newcomer and decays toward 20 over roughly the first 80 rated matches. A qualifier arriving from the Challenger circuit therefore moves quickly on his first results, while an established player's rating barely shifts on a single match.

Ratings are continuous across seasons. A player arrives in January carrying what he built over previous years rather than starting level with a debutant. Between seasons his match count is halved, which raises his K-factor again: the model treats an established player returning from a winter break as temporarily more uncertain, so his first few results of the year move his rating faster than they would mid-season.

Everything is rebuilt from scratch on every run rather than accumulated. The entire stored match history is replayed in chronological order each night, so a day the data collection missed leaves no permanent distortion — the backfilled match simply takes its place in the sequence.

Walkovers and defaults are excluded from both the ratings and the accuracy scoring: they are administrative outcomes, not sporting ones, and rating them would credit a player for an opponent's illness. Retirements are treated as genuine results and count normally.

Only the match winner market is published. Tournament outright predictions are not offered, because the data source publishes results but no draw structure — there is no way to know who would meet whom in a later round.

Tennis — Surface ratings, and why they are shown but not used

Each player also carries separate ratings for hard, clay and grass courts, updated alongside the overall rating and displayed on player and match pages. Indoor hard courts are treated as hard courts.

These surface ratings do not currently influence any prediction, and that is a deliberate decision based on measurement rather than an oversight. Two separate studies, on two different datasets, found that blending the surface rating into the prediction produced no improvement at all.

The second study also found the reason. A surface rating only begins to exist when a player first plays on that surface, and it then accumulates roughly a third as many matches as his overall rating — so it permanently lags behind. In the sample measured, around 74% of hard-court ratings and half of clay ratings sat below the player's own overall rating. Because a weaker player's rating already sits near the average, that lag pulled the stronger player down further than the weaker one, and the net effect was to compress the gap between them rather than adjust for surface. On clay it was destroying about a fifth of the signal while appearing to refine it.

Turning the blend off removed a systematic under-confidence in the published probabilities: before the change, the favourite won more often than the model said in every band of the rating scale. The surface ratings are still maintained and still shown, because they are informative to a reader and because a corrected version of the blend may earn its place in future.

Tennis — What the model does not know

A new player starts at the tour average of 1500 regardless of his ATP ranking. This was measured before being accepted: matches involving players with fewer than three rated results are about 9% of the sample, and even a perfect starting estimate for them could improve overall accuracy by roughly 0.001 — smaller than the measurement noise. The fix would cost data-collection budget that is better spent elsewhere.

The model also has no knowledge of the tournament's importance beyond the players involved. Weighting ATP 250 results as less informative than Grand Slam results was tested across several schemes and produced no reliable improvement. Head-to-head history, recent form and opponent quality are shown on match pages as context, but none of them feeds the prediction — the rating already reflects who a player has beaten.

Predictions cover ATP singles only. Doubles, WTA, Challenger and ITF events are not modelled, although Challenger results would be a natural way to give newcomers a realistic starting rating.

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.

For tennis, the explanation describes the size of the rating gap between the two players, and may reference their head-to-head record, recent results, and form on the match surface. The wording of the gap is calibrated against what actually happens: across the matches measured, a gap the model calls decisive was won by the favourite about 81% of the time, one called clear about 69%, and one called slight about 59%. Below that the match is described as close, and the favourite won about 56%. Head-to-head and surface form appear in the explanation as context for the reader — they are not inputs to the probability.

Calibration and Accuracy

The Performance page shows ongoing tracking via Brier score, log-loss, and calibration curves for every sport.

Some models apply a calibration step (Platt scaling or isotonic regression) to their raw outputs. This is not automatic, and is only used where it was measured to help. The tennis model deliberately skips it: the maximum improvement available was measured at 0.0005 of Brier score, which does not justify an additional stage between the model and the published number. Tennis probabilities are the direct output of the rating difference, and after the surface blend was removed they track observed outcomes closely without further adjustment.

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).

Model parameters are chosen by measurement rather than by convention. Candidate settings are tested by replaying the full match history in order and scoring each prediction against what the model knew before that match was played, with confidence intervals estimated by resampling whole tournaments rather than individual matches. A setting is only changed when the measured improvement is larger than the uncertainty around it — which frequently means leaving a parameter alone, and occasionally means removing a feature that turned out to be decoration.

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.

For tennis: the tennis-api (Matchstat) service, which provides the ATP calendar, tournament results, and match details. Head-to-head records are not requested from the source — they are derived from the matches already stored, which covers every meeting Proknoz has recorded.

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.

Tennis predictions know nothing about injuries, fitness, travel, altitude, court speed, weather, or a player's motivation for a particular event — all of which matter in a sport decided by one athlete against another. A rating summarises results and nothing else. The model also has no draw data, so it cannot say who is likely to win a tournament, only who is likely to win each individual match once the pairing is known. Ratings for players new to the tour are unreliable until they have accumulated a season or so of results.

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.