A draw is just every level scoreline added up
You cannot predict "a draw" directly. What you can predict is how many goals each side is likely to score. Turn that into the chance of every possible scoreline — 0-0, 1-0, 1-1, 2-1 and so on — and the chance of a draw is simply the level ones added together. The Dixon-Coles model is that idea, plus a fix for the one place it goes wrong: low-scoring matches, which is exactly where draws live.
Every team gets two numbers from its past results: an attack strength (how many it scores against a typical opponent) and a defence strength (how many it lets in). Multiply one side's attack by the other's defence and you get that team's expected goals for the match.
Home advantage is a third number applied to the home side. Across this database the home team averages 1.60 goals and the away team 1.27 — that difference is home advantage, measured.
Recent matches count for more than old ones, so the strengths follow a team as it improves or declines, and a prediction is only ever built from matches played before the one being predicted.
Expected goals give the chance of each side scoring 0, 1, 2 … goals, and combining them gives every scoreline. Here is the real thing: how often each score happened in 544,567 matches. The green diagonal is the draw — add it up and you get 23.29%.
| Home ↓ / Away → | 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|---|
| 0 | 7.09 | 7.35 | 4.67 | 2.33 | 1.04 | 0.47 |
| 1 | 9.85 | 10.65 | 6.36 | 2.79 | 1.12 | 0.41 |
| 2 | 7.31 | 8.40 | 4.50 | 1.95 | 0.68 | 0.24 |
| 3 | 4.23 | 4.23 | 2.48 | 0.92 | 0.33 | 0.10 |
| 4 | 1.98 | 1.86 | 1.01 | 0.41 | 0.13 | 0.04 |
| 5 | 0.90 | 0.77 | 0.36 | 0.15 | 0.05 | 0.01 |
Percentages of all matches. A real model builds this table per match from that match's two expected-goal figures; this one is the whole database at once.
The simple version assumes the two teams score independently of each other. It is close, but it is reliably wrong on the lowest scores — and those decide draws. Below, each scoreline's real frequency against what the simple model predicts from the same two averages.
| Score | Really happened | Simple model | Model is off by |
|---|---|---|---|
| 1-1 | 10.65% | 11.51% | +0.86 |
| 1-0 | 9.85% | 9.09% | −0.75 |
| 2-1 | 8.40% | 9.24% | +0.83 |
| 0-1 | 7.35% | 7.18% | −0.18 |
| 2-0 | 7.31% | 7.30% | −0.02 |
| 0-0 | 7.09% | 5.67% | −1.42 |
| 1-2 | 6.36% | 7.29% | +0.93 |
| 0-2 | 4.67% | 4.54% | −0.13 |
| 2-2 | 4.50% | 5.84% | +1.34 |
| 3-0 | 4.23% | 3.90% | −0.33 |
Look at 0-0: it really happens more often than the simple model expects, while
1-1 happens less. That is the pattern Dixon and Coles found in 1997 and fixed with a small
adjustment to exactly four scorelines — 0-0, 1-0, 0-1 and 1-1 — nudging them to match reality. Everything
else in the model is left alone. Two teams at 0-0 late in a match stop playing like the simple model
assumes, and the correction is what puts that back.
Honest caveat: this table uses one pair of averages for every match, while a real model fits a pair per
match. Part of the gap you see is that simplification rather than the effect itself — which is why the fit
has to be judged per match, not in aggregate.
This database runs the model over every match it holds, always from what was known before each one. A probability is only worth anything if it comes true at the rate it claims: of the matches it gave a 27% chance of a draw, about 27% should have drawn.
| Model said | Matches | It predicted | Actually drew | With odds | Market said |
|---|---|---|---|---|---|
| 5–10% | 1,011 | 8.32% | 5.84% | 110 | 7.47% |
| 10–15% | 6,867 | 13.29% | 9.29% | 1,108 | 11.42% |
| 15–20% | 49,391 | 18.14% | 12.92% | 6,539 | 16.98% |
| 20–25% | 179,499 | 22.96% | 20.50% | 45,453 | 23.93% |
| 25–30% | 261,526 | 27.21% | 26.43% | 92,083 | 27.71% |
| 30–35% | 44,728 | 31.40% | 29.93% | 15,063 | 30.60% |
| 35–40% | 1,409 | 36.15% | 32.58% | 499 | 32.87% |
Across 160,869 matches carrying a bookmaker's closing price, the model's average error is 0.19289 against the market's 0.19160 (lower is better, and both are "how far off, squared, on average"). So the model is close, honest about its own confidence — and still behind the people setting the prices. That is the expected outcome of a first model, and it is reported here rather than hidden: a draw tool is only worth betting when it beats the price, and this one does not yet.
| Date | Fixture | Competition | Expected goals | Draw chance | Price · implies |
|---|---|---|---|---|---|
| 24 Oct 2026 | Livyi Bereh Kyiv v LNZ Cherkasy | Premier League | 0.69 – 0.87 | 37.0% | — |
| 01 May 2027 | LNZ Cherkasy v Livyi Bereh Kyiv | Premier League | 0.96 – 0.62 | 36.0% | — |
| 12 Dec 2026 | LNZ Cherkasy v Bukovyna Chernivtsi | Premier League | 0.94 – 0.74 | 35.4% | — |
| 31 Oct 2026 | Livyi Bereh Kyiv v Bukovyna Chernivtsi | Premier League | 0.81 – 0.90 | 35.2% | — |
| 16 Sep 2026 | Bukovyna Chernivtsi v LNZ Cherkasy | Ukrainian Cup | 0.67 – 1.00 | 34.9% | — |
| 04 Jun 2027 | Kolos Kovalivka v LNZ Cherkasy | Premier League | 0.77 – 0.96 | 34.8% | — |
| 28 Nov 2026 | Livyi Bereh Kyiv v Kolos Kovalivka | Premier League | 0.92 – 0.84 | 34.6% | — |
| 29 May 2027 | Kolos Kovalivka v Livyi Bereh Kyiv | Premier League | 0.93 – 0.83 | 34.6% | — |
| 08 May 2027 | Bukovyna Chernivtsi v Livyi Bereh Kyiv | Premier League | 1.00 – 0.73 | 34.6% | — |
| 01 Oct 2026 | Club Atlético Platense v Estudiantes de La Plata | Copa Argentina | 0.84 – 0.96 | 34.1% | — |
| 20 Mar 2027 | Livyi Bereh Kyiv v Chornomorets Odesa | Premier League | 1.06 – 0.67 | 34.1% | — |
| 05 Dec 2026 | LNZ Cherkasy v Kolos Kovalivka | Premier League | 1.07 – 0.69 | 33.7% | — |
| 05 Dec 2026 | NK Veres Rivne v Livyi Bereh Kyiv | Premier League | 0.92 – 0.94 | 33.7% | — |
| 06 Mar 2027 | Chornomorets Odesa v LNZ Cherkasy | Premier League | 0.61 – 1.10 | 33.6% | — |
| 04 Jun 2027 | Livyi Bereh Kyiv v NK Veres Rivne | Premier League | 1.04 – 0.82 | 33.3% | — |
| 13 Mar 2027 | NK Veres Rivne v LNZ Cherkasy | Premier League | 0.76 – 1.09 | 33.1% | — |
| 15 May 2027 | Kolos Kovalivka v Bukovyna Chernivtsi | Premier League | 0.91 – 1.00 | 33.1% | — |
| 28 Nov 2026 | FC Epitsentr Dunaivtsi v LNZ Cherkasy | Premier League | 0.90 – 1.02 | 32.9% | — |
| 10 Apr 2027 | Obolon Kyiv v Chornomorets Odesa | Premier League | 0.90 – 1.03 | 32.7% | — |
| 10 Apr 2027 | Livyi Bereh Kyiv v FC Epitsentr Dunaivtsi | Premier League | 0.98 – 0.98 | 32.6% | — |
Expected goals are what the model thinks each side will score; the draw chance is every level scoreline added up. A high number here means an even, low-scoring fixture — not that the draw is good value. Where a price is shown, remember it still contains the bookmaker's margin (see the odds explainer), and on the evidence above the market prices these better than the model does.
Out of this comes a draw probability for one specific match — not a general rule about teams "being due". That matters, because the alternative approaches do not survive contact with the data: a long run without a draw is already reflected in bookmakers' prices, and no staking plan turns a losing bet into a winning one.
A probability is only useful once it is calibrated: of all the matches where the model says 30%, close to 30% must actually finish level. Then it can be compared with the price a bookmaker offers — and it is only worth betting when the model's probability beats the price by a clear margin.
Building this needs nothing but final scores, which this database has for 544,567 matches.
A goals model predicts draws the only way a draw can honestly be predicted: by working out how many goals each side is likely to score, turning that into the probability of every scoreline, and adding up the level ones. FDB4 sets the idea against its own record of more than half a million matches — the real frequency of every score from 0-0 upwards, what a plain independent-Poisson model predicts from the same average goal rates, and where the two disagree. The gap sits on the lowest scores, which is precisely what the Dixon-Coles correction of 1997 adjusts, and precisely where draws are decided.