How OddsFlow AI Works — Dixon-Coles Explained
The Problem with "AI Predictions"
Open any football forum in 2026 and you will find accounts claiming "our AI predicts Arsenal to win." Ask them what model they use and you get vague answers: "machine learning," "deep neural networks," or simply "AI." Press harder and the truth emerges — many of these services feed match data into ChatGPT or a similar large language model and repackage the output as a "prediction."
This is not prediction. This is opinion laundering.
A large language model (LLM) like GPT or Claude is designed to generate plausible-sounding text. It has read thousands of football articles and can produce a convincing paragraph about why Arsenal should beat Newcastle. But it has no internal probability model. It cannot calculate that Arsenal have a 58.3% chance of winning because it does not perform statistical inference — it performs pattern completion on text.
OddsFlow takes a fundamentally different approach. Our predictions are generated by the Dixon-Coles model, a bivariate Poisson regression published in the Journal of the Royal Statistical Society in 1997 by Mark Dixon and Stuart Coles. It is not a black box. Every number has a derivation. This article shows you exactly how it works.
PROGA 2025 compliance note: This article is educational content explaining statistical methodology. OddsFlow is a free analysis tool — no money is wagered through OddsFlow. Reading about predictive models is legal under the Prohibition of Online Gambling Act 2025, which targets platforms facilitating wagering, not educational content.
What Is the Dixon-Coles Model?
The Dixon-Coles model is a statistical method for predicting football match outcomes. It belongs to the family of Poisson regression models — models that predict how many times an event (in this case, a goal) will occur in a fixed period of time.
The original Poisson model for football, proposed by Maher (1982), assumes that goals scored by each team follow independent Poisson distributions. Dixon and Coles improved this in two critical ways:
- Low-score correction (the rho factor) — They proved that the standard Poisson model underestimates draws and 1-0 results. Their correction factor, rho, adjusts the probabilities for scorelines involving 0 and 1 goals.
- Time decay — They introduced a weighting function so that recent matches influence the model more than older ones.
These two innovations turned a decent model into an excellent one. The Dixon-Coles model has been the benchmark for academic football prediction ever since.
The Core Formula
For any match between a home team (H) and an away team (A), the model estimates two key parameters:
- lambda (attack rate for home team) = alpha_H x beta_A x gamma
Where alpha_H is the home team's attack strength, beta_A is the away team's defence weakness, and gamma is the home advantage parameter.
- mu (attack rate for away team) = alpha_A x beta_H
Where alpha_A is the away team's attack strength, and beta_H is the home team's defence weakness.
These parameters are estimated from historical match data using maximum likelihood estimation (MLE). Every team in a league gets an attack rating and a defence rating, calibrated against every other team.
The Key Concepts — Explained Simply
1. Attack Strength (alpha)
Attack strength measures how many goals a team is expected to score relative to the league average. It is not an absolute number but a multiplier.
If the league average is 1.35 goals per match for a home team, and Arsenal's attack strength is 1.42, then Arsenal are expected to score 1.42 times the league average — roughly 1.92 goals per home match before accounting for the opponent's defence.
What drives attack strength: Shots on target, expected goals (xG), conversion rate, creative passing in the final third. The model does not use these metrics directly — it infers attack strength purely from historical scorelines. But these are the real-world factors that produce the numbers.
2. Defence Strength (beta)
Defence strength measures how many goals a team concedes relative to the league average. A lower beta means a stronger defence.
If Newcastle's defence parameter is 0.85, they concede only 85% of the goals that an average team would in the same situation. If their defence parameter were 1.20, they would concede 20% more than average — a leaky defence.
What drives defence strength: Clean sheets, expected goals conceded (xGC), tackles and interceptions, set piece defence. Again, the model does not use these directly but they are the underlying factors.
3. Home Advantage (gamma)
Football has a well-documented home advantage effect. Across the top five European leagues, the home team scores approximately 37% more goals than the away team, on average. The Dixon-Coles model captures this with a single parameter, gamma, that applies a multiplier to the home team's expected goals.
In the Premier League (2023-2026 data), gamma is approximately 1.25-1.35, meaning a home team's expected goals are boosted by 25-35% compared to a neutral venue.
Why home advantage exists: Crowd support, familiarity with pitch dimensions, reduced travel fatigue, referee bias (documented in multiple studies). The model does not care why — it measures how much.
4. The Low-Score Correction (rho) — The "Coles" Innovation
This is what separates Dixon-Coles from a basic Poisson model, and it is the most important conceptual contribution of the paper.
In a standard independent Poisson model, the probability of a 0-0 draw is simply P(home scores 0) times P(away scores 0). But empirical data shows that 0-0 draws happen more often than this calculation predicts. Similarly, 1-0 and 0-1 results are slightly more common than the independent model suggests, while 1-1 draws are slightly less common.
Why? Because football teams adjust their behaviour based on the score. In a 0-0 match, both teams become cautious — fewer risks, more defensive shape, fewer clear chances. This creates a correlation between the two teams' goal counts that the independent Poisson model misses.
The rho parameter fixes this. It is a small adjustment factor (typically between -0.05 and -0.15) that:
- Increases the probability of 0-0
- Increases the probability of 1-0 and 0-1
- Decreases the probability of 1-1
- Leaves all other scorelines unchanged
This correction seems minor, but it has a measurable impact on prediction accuracy, particularly for low-scoring matches — which are common in defensive leagues and cup ties.
Step-by-Step Example: Arsenal vs Newcastle
Let us walk through a concrete example using realistic parameters from the 2025-26 Premier League season.
Step 1: Estimate Team Parameters
From historical match data (with time decay applied — more on that later), the model estimates:
| Parameter | Arsenal | Newcastle |
|---|---|---|
| Attack strength (alpha) | 1.42 | 1.15 |
| Defence strength (beta) | 0.78 | 0.85 |
League averages:
- Average home goals per match: 1.35
- Average away goals per match: 1.05
- Home advantage (gamma): 1.30
Step 2: Calculate Expected Goals
Arsenal expected goals (lambda):
- lambda = alpha_Arsenal x beta_Newcastle x gamma x league_avg_home
- lambda = 1.42 x 0.85 x 1.30 x 1.35
- lambda = 2.12 goals
Newcastle expected goals (mu):
- mu = alpha_Newcastle x beta_Arsenal x league_avg_away
- mu = 1.15 x 0.78 x 1.05
- mu = 0.94 goals
So the model expects Arsenal to score about 2.12 goals and Newcastle about 0.94 goals in this match.
Step 3: Generate the Probability Matrix
Using the Poisson distribution with the rho correction, the model calculates the probability of every possible scoreline:
| Newcastle 0 | Newcastle 1 | Newcastle 2 | Newcastle 3 | Newcastle 4 | Newcastle 5 | |
|---|---|---|---|---|---|---|
| Arsenal 0 | 4.8% | 3.9% | 1.8% | 0.6% | 0.1% | 0.0% |
| Arsenal 1 | 9.2% | 8.1% | 3.8% | 1.2% | 0.3% | 0.1% |
| Arsenal 2 | 10.5% | 9.1% | 4.3% | 1.4% | 0.3% | 0.1% |
| Arsenal 3 | 7.9% | 6.5% | 3.1% | 1.0% | 0.2% | 0.0% |
| Arsenal 4 | 4.5% | 3.5% | 1.6% | 0.5% | 0.1% | 0.0% |
| Arsenal 5 | 2.0% | 1.5% | 0.7% | 0.2% | 0.0% | 0.0% |
Each cell represents the probability of that exact scoreline. Arsenal 2-0 (10.5%) is the single most likely result, followed by Arsenal 2-1 (9.1%) and Arsenal 1-0 (9.2%).
Step 4: Derive Match Probabilities
By summing the appropriate cells:
| Outcome | Probability |
|---|---|
| Arsenal win | 58.3% |
| Draw | 18.7% |
| Newcastle win | 23.0% |
These are the 1x2 probabilities. They tell us the model's assessment of who will win.
Step 5: Derive Asian Handicap Probabilities
The probability matrix also tells us the handicap probabilities:
| Handicap Line | Arsenal Covers | Newcastle Covers |
|---|---|---|
| Arsenal -0.5 (must win) | 58.3% | 41.7% |
| Arsenal -1.0 (win by 2+, push on 1) | 40.1% win, 18.2% push | 41.7% win, 18.2% push |
| Arsenal -1.5 (win by 2+) | 40.1% | 59.9% |
| Arsenal -1.75 | 33.2% | 66.8% |
| Arsenal -2.0 (win by 3+, push on 2) | 26.3% win, 13.8% push | 59.9% win, 13.8% push |
Step 6: Derive Over/Under Probabilities
By summing all cells where the total goals exceed a threshold:
| O/U Line | Over | Under |
|---|---|---|
| Over/Under 1.5 | 78.4% | 21.6% |
| Over/Under 2.5 | 57.2% | 42.8% |
| Over/Under 3.5 | 34.8% | 65.2% |
| Over/Under 4.5 | 17.1% | 82.9% |
The model suggests this match has a high probability of producing 2-3 goals, with Over 2.5 at 57.2%.
Time Decay: Why Recent Form Matters More
One of Dixon and Coles' key innovations was introducing a time decay function. Not all historical matches are equally relevant.
The model uses an exponential decay parameter (typically denoted xi). A match played yesterday gets full weight (1.0). A match played 6 months ago might get a weight of 0.5. A match played 12 months ago might get 0.25.
The decay function looks like this:
| Time Since Match | Weight (xi = 0.005) |
|---|---|
| 1 week | 0.97 |
| 1 month | 0.86 |
| 3 months | 0.64 |
| 6 months | 0.41 |
| 12 months | 0.16 |
Why this matters: Imagine Newcastle signed a world-class striker in January 2026. Their matches from October 2025 (when they did not have this striker) are still in the dataset, but they carry lower weight. The model gradually adapts to Newcastle's improved attack strength without requiring anyone to manually adjust for the transfer.
The choice of xi (the decay rate) is calibrated by testing different values against historical data and selecting the one that produces the most accurate out-of-sample predictions. Too fast and the model overreacts to short-term form. Too slow and it fails to capture genuine changes in team quality.
From Probabilities to Predictions: Finding Value
The probability matrix is not the prediction itself — it is the raw material. The prediction comes from comparing the model's probabilities with the market's implied probabilities.
How Bookmaker Odds Imply Probabilities
Every set of odds can be converted to an implied probability. If a bookmaker offers Arsenal to win at odds of 1.70, the implied probability is:
- Implied probability = 1 / odds = 1 / 1.70 = 58.8%
But bookmakers add a margin (overround). The true implied probability, after removing the margin using the Shin method (our preferred de-vig approach), might be 56.2%.
Identifying Value: Expected Value (EV)
Value exists when the model's probability exceeds the market's implied probability. The formula:
EV = (Model Probability x Payout) - 1
Example: The model says Arsenal win at 58.3%. The market implies 56.2% (odds of 1.70 after de-vigging). Is there value?
- EV = (0.583 x 1.70) - 1 = 0.991 - 1 = -0.009
In this case, slightly negative EV — no value on Arsenal at 1.70. The market has priced it efficiently.
But suppose the model says Over 2.5 goals at 57.2%, and the market offers Over 2.5 at odds of 1.95 (implied probability of 51.3% after de-vigging):
- EV = (0.572 x 1.95) - 1 = 1.115 - 1 = +0.115 (+11.5% EV)
That is a significant edge. The model sees a 57.2% chance but the market is only pricing in 51.3%. This 5.9 percentage point gap is the kind of discrepancy OddsFlow identifies.
What Constitutes a Signal
OddsFlow does not flag every positive-EV situation. The thresholds are:
- Minimum EV: The expected value must exceed a threshold (typically 3-5%) to account for model uncertainty.
- Confidence interval: The model's probability estimate has a margin of error. A signal is only generated when the lower bound of the confidence interval still exceeds the market's implied probability.
- Line movement check: If the line has moved significantly since opening, it may indicate information the model has not captured (injuries, team news). The system accounts for this.
Closing Line Value: The Gold Standard
How do you know if a prediction model actually works? Not by checking whether individual predictions "won" — that is just variance. The real test is Closing Line Value (CLV).
What Is CLV?
The closing line is the final odds offered just before kick-off. It is the most efficient price because it incorporates the maximum amount of information — late team news, market sentiment, sharp money from professional analysts.
CLV measures whether your prediction was made at odds better than the closing line. If the model identified Arsenal Over 2.5 at 1.95 and the closing line dropped to 1.82, the prediction captured CLV:
- CLV = (1.95 / 1.82) - 1 = +7.1%
Consistently positive CLV means the model is identifying value before the market corrects. This is the single most important metric for evaluating a prediction model because:
- It is independent of short-term variance (you can have CLV but "lose" a prediction).
- It correlates strongly with long-term profitability.
- It cannot be faked — the closing line is an objective, verifiable number.
OddsFlow tracks CLV for every signal generated. A model that consistently beats the closing line is doing something right.
What Dixon-Coles Cannot Do
Intellectual honesty requires acknowledging the model's limitations. Dixon-Coles is a powerful framework, but it has blind spots:
1. Injuries and Suspensions
The model uses historical match results. If Mohamed Salah is injured and misses an upcoming match, the model still includes his contribution in Liverpool's attack strength because it was calculated from matches where he played. The model cannot "subtract" a player.
How OddsFlow handles this: We monitor the market. When a key injury is announced, the market odds shift. The model detects that the market's implied probability for Liverpool has dropped and adjusts its edge calculation accordingly. The model does not know why the odds moved — only that they moved.
2. Red Cards and In-Game Events
The pre-match model assumes 11v11 for 90 minutes. A red card in the 20th minute fundamentally changes the match, and the pre-match model cannot account for this.
How OddsFlow handles this: The live system enters a FROZEN state after a red card, suspending signal generation until the live odds stabilise. This prevents the model from generating signals based on stale assumptions.
3. Weather Conditions
Heavy rain, extreme heat, or a waterlogged pitch affects goal expectation. The model does not include weather variables.
4. Managerial Changes
When a team sacks their manager, the model still uses results from the previous manager's tenure. It takes 5-10 matches under new management for the model to fully update.
5. Cup Matches and Rotation
In league cup matches, top teams often rotate heavily. The model's parameters reflect first-team strength, not reserve squad strength. Cup matches require separate modelling.
These limitations are real, but they apply to every statistical model. The advantage of Dixon-Coles is that its limitations are well-understood and clearly defined — unlike a black-box neural network where you cannot even identify what the model does not know.
Why Statistical Models Beat LLMs for Predictions
This is worth stating explicitly because the market is flooded with LLM-based "prediction" services.
| Aspect | Dixon-Coles (Statistical) | LLM (ChatGPT/Claude) |
|---|---|---|
| Output | Precise probabilities (58.3%) | Vague assessments ("Arsenal are likely to win") |
| Calibration | Testable — 58% predictions should win ~58% of the time | Not calibrated — no way to verify |
| Reproducibility | Same inputs always produce the same output | Different outputs each time you ask |
| Edge detection | Can compare model vs market mathematically | Cannot calculate expected value |
| CLV tracking | Yes — every prediction can be verified against closing line | No — there is nothing to verify |
| Hallucination risk | Zero — only processes numerical data | High — can fabricate statistics, misremember fixtures |
| Transparency | Full formula derivation available | Black box — even OpenAI cannot explain why GPT said "Arsenal 2-1" |
LLMs are extraordinary tools for text generation, code writing, and research synthesis. But prediction is not a text generation task. It is a mathematical task. You would not ask ChatGPT to calculate your taxes — you would use a spreadsheet. Similarly, you should not ask ChatGPT for match probabilities — you should use a statistical model.
OddsFlow uses LLMs for what they are good at: generating natural-language match previews, translating content into 13 languages, and answering user questions about football analysis. But the predictions themselves come from Dixon-Coles. Always.
The Full Pipeline: From Data to Your Screen
Here is how it all fits together:
Step 1: Data Collection — OddsFlow ingests match results from the top 20 football leagues worldwide. Each match provides two data points: home goals and away goals.
Step 2: Parameter Estimation — The Dixon-Coles model runs maximum likelihood estimation across the dataset, with time decay applied. Every team receives updated attack and defence parameters.
Step 3: Probability Matrix — For each upcoming match, the model generates the full probability matrix (every scoreline from 0-0 to 6-6), adjusted by the rho correction factor.
Step 4: Market Comparison — The system collects current market odds, de-vigs them using the Shin method, and compares the model's probabilities with the market's implied probabilities.
Step 5: Signal Generation — When the EV exceeds the threshold and passes confidence checks, a signal is generated. The signal specifies: which match, which market (1x2, Asian Handicap, Over/Under), which side, the model's probability, the market odds, and the calculated EV.
Step 6: Delivery — Signals appear on the OddsFlow platform in real-time. Free users see signals with a delay. Subscribers see them immediately.
Step 7: Verification — After the match, the system records whether each signal had positive CLV and whether the predicted outcome occurred. This data feeds into the model's ongoing calibration.
Try It Yourself
You do not need to take our word for it. The Dixon-Coles model is fully transparent:
- Read the original paper: Dixon, M.J. and Coles, S.G. (1997). "Modelling Association Football Scores and Inefficiencies in the Football Betting Market." Journal of the Royal Statistical Society: Series C, 46(2), 265-280.
- Check OddsFlow's track record: Every prediction we make is logged with a timestamp, the market odds at the time of the prediction, and the closing odds. You can verify CLV independently.
- See the model in action: Visit OddsFlow's free predictions page to see live probability matrices, Asian Handicap recommendations, and Over/Under analysis for upcoming matches — including World Cup 2026 matches happening right now.
OddsFlow is a free analysis platform. Start exploring AI-powered predictions backed by real statistics — not LLM opinions.
This article is educational content about statistical methodology. OddsFlow is a free analysis tool. No money is wagered through OddsFlow at any point. References to odds and probabilities are for educational purposes only.

