// The goals model checked against 545,264 matches
Predicting the draw, one match at a time

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.

Home goals, average1.60
Away goals, average1.26
Matches drawn24.35%what really happened
Simple model says24.61%540,816 matches with recorded ninety-minute scores; before any correction
Step 1 · How many goals should each side score?

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.26 — 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.

Step 2 · Turn expected goals into a table of scorelines how often each score really happened

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 540,816 matches with recorded ninety-minute scores. The green diagonal shows draws with recorded scores. The overall draw rate above also includes known draws whose score was not recorded.

Home ↓ / Away → 0 1 2 3 4 5
0 7.39 7.33 4.69 2.34 1.05 0.48
1 9.84 10.74 6.26 2.75 1.11 0.41
2 7.34 8.32 4.54 1.88 0.65 0.24
3 4.26 4.21 2.41 0.92 0.31 0.10
4 1.99 1.86 0.99 0.39 0.13 0.04
5 0.91 0.78 0.35 0.14 0.05 0.01

Goal averages and scoreline percentages use only recorded ninety-minute scores. A real model builds this table per match from that match's two expected-goal figures; this one is the whole database at once.

Step 3 · Why the correction exists the simple model against reality

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.74% 11.57% +0.83
1-0 9.84% 9.22% −0.62
2-1 8.32% 9.24% +0.92
0-0 7.39% 5.77% −1.62
2-0 7.34% 7.36% +0.02
0-1 7.33% 7.25% −0.09
1-2 6.26% 7.26% +1.00
0-2 4.69% 4.55% −0.14
2-2 4.54% 5.80% +1.26
3-0 4.26% 3.92% −0.34

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.

The model, measured 545,129 matches predicted

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 Miss With odds Drew (those) Market said
5–10% 1,025 8.30% 6.54% −1.76 106 5.66% 7.48%
10–15% 7,036 13.29% 10.63% −2.65 1,104 10.42% 11.39%
15–20% 48,543 18.12% 15.67% −2.45 6,448 16.52% 16.91%
20–25% 176,849 22.97% 22.02% −0.95 44,432 23.80% 23.87%
25–30% 264,535 27.22% 26.90% −0.32 92,593 27.72% 27.68%
30–35% 45,686 31.40% 30.16% −1.24 15,648 30.62% 30.56%
35–40% 1,455 36.17% 32.92% −3.25 525 33.52% 32.91%

Compare "It predicted" with "Actually drew" to judge the model, and "Drew (those)" with "Market said" to compare it with the bookmakers — those two columns cover the same matches, while "Actually drew" covers every match in the band, priced or not. Across 160,869 matches carrying a bookmaker's closing price, the model's average error is 0.19288 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.

Two signals, blended 545,219 matches scored

The model above reads form — goals scored and conceded lately — and knows nothing about how evenly matched two sides are beyond that. Elo is the opposite: one number for the difference in strength, blind to form, and history is blunt about what it means — about a quarter of the matches inside 25 rating points end level, against half that when the two are 300 points apart. Two readings that know different things can be averaged, on the log-odds scale, into one:

blend = sigmoid( w · logit(model) + (1 − w) · logit(gap rate) )

w is not a matter of taste: every mix from 0 (the gap alone) to 100 (the model alone) is scored over the same 545,219 matches, and the lowest average error wins.

Mix It predicted Actually drew Error Error (priced) Market
Elo gap alone 24.35% 24.35% 0.183230 0.193273 0.191605
10% model · 90% gap 24.41% 24.35% 0.182974 0.193133 0.191605
20% model · 80% gap 24.47% 24.35% 0.182754 0.193013 0.191605
30% model · 70% gap 24.54% 24.35% 0.182571 0.192913 0.191605
40% model · 60% gap 24.62% 24.35% 0.182425 0.192835 0.191605
50% model · 50% gap 24.70% 24.35% 0.182316 0.192779 0.191605
60% model · 40% gap 24.79% 24.35% 0.182246 0.192747 0.191605
70% model · 30% gap 24.88% 24.35% 0.182215 0.192740 0.191605
75% model · 25% gap ← best 24.93% 24.35% 0.182214 0.192746 0.191605
80% model · 20% gap 24.98% 24.35% 0.182223 0.192758 0.191605
90% model · 10% gap 25.08% 24.35% 0.182273 0.192805 0.191605
goals model alone 25.19% 24.35% 0.182364 0.192879 0.191605

The winner is 75% goals model, 25% Elo gap, and the honest size of the win is small: 0.182214 against 0.182364 for the model on its own and 0.183230 for the gap on its own. The gap carries real information the model misses — dropping to 0% model costs far more than the blend gains — but most of what it says, the goal rates already imply. Against the market it changes nothing: 0.192746 to the bookmakers' 0.191605 on 160,869 priced matches. Still behind.

One line worth reading twice: across the whole history the goals model predicts 25.19% draws where 24.35% happened — it leans too far toward the draw outside the leagues bookmakers price, where it is calibrated almost exactly. The gap rate cannot lean, because it is the historical rate. Blending pulls the model back toward it, which is most of the improvement above.

The blend, measured 544,291 matches in bands of 500+

The same test as the table above, applied to the blended number: of the matches it gave this chance of a draw, how many drew.

Blend said Matches It predicted Actually drew Miss With odds Drew (those) Market said
10–12% 974 11.13% 6.06% −5.07 183 5.46% 8.32%
12–14% 2,319 13.14% 9.23% −3.91 520 10.96% 10.70%
14–16% 5,296 15.13% 11.56% −3.58 1,361 11.76% 13.10%
16–18% 11,796 17.14% 13.53% −3.61 2,614 14.19% 15.41%
18–20% 25,174 19.11% 15.29% −3.82 4,140 17.95% 18.06%
20–22% 47,418 21.09% 18.72% −2.37 8,062 20.23% 20.99%
22–24% 86,674 23.10% 21.42% −1.68 19,211 23.41% 23.70%
24–26% 137,118 25.07% 24.95% −0.11 43,200 26.40% 26.13%
26–28% 141,769 26.94% 27.47% +0.53 50,920 27.99% 28.02%
28–30% 67,406 28.81% 29.56% +0.75 23,985 29.92% 29.73%
30–32% 15,909 30.72% 31.32% +0.60 5,650 31.27% 31.30%
32–34% 2,438 32.69% 32.85% +0.17 847 33.06% 32.52%

"Miss" is reality minus the claim, in points: negative means the band promised more draws than it delivered. Square each miss, weight it by the matches in the band and average, and you have the calibration half of the error score the scan above ranks mixes by — the other half is how well the figure separates one match from another, which no single row can show. Green means the band came true within two points. The blended figure is the one shown beside a fixture on the Cross predictor and on a match page.

The same blend, on matches it never saw fitted to 2014-12-31, scored on everything after

Everything above is a fit on its own data. The gap rates were counted over all of history — including the match being scored — and the winning mix was chosen on the very matches it then reports on. That is how a model flatters itself, so the test was redone the hard way: the gap rates recounted on the 330,303 matches up to 2014-12-31, the mix chosen on those alone, and both applied unchanged to the 214,273 matches after — which drew 24.38% of the time.

Reading It predicted Error Error (priced)
Elo gap alone 22.15% 0.183670 0.194141
goals model alone 25.81% 0.182827 0.192409
85% model · 15% gap ← the mix the training period chose 25.21% 0.182584 0.192366
the market, same priced matches — — 0.191069

The margin survived. Out of sample the blend still beats both of its parts, by roughly the same small amount it claimed in the fit, and the win is larger than the noise around it — the per-match difference against the goals model alone is fifteen standard errors from zero. Two things the test also says that the fit could not. The error scores are all higher here than above, because the recent period draws more often (24.38% against 23.3% across all history) and a more even outcome is harder to call. And against the market nothing has changed: 0.192366 to the bookmakers' 0.191069 on 131,231 priced matches. Still behind, exactly as the fit said.

The same question, asked as a regression fitted 30 Sep 2026 20:54 · 545,219 matches

The mix above has one number to spend and must spend all of it: its two weights add to one, so it cannot say "I believe a quarter of what the goals model tells me", and it has no intercept, so a systematic lean stays leaned. A regression can do both, and can see more than two things while it is at it. This one reads five signals at once, and the table below is what it concluded — the honest explanation of the figure, rather than the figure on its own.

Signal Weight ± error z Reading
intercept 1.23510 0.02800 44.1 the level everything else is measured from
logit(goals model P(draw)) 0.31091 0.03771 8.2 more of it means more draws
logit(draw rate at this Elo gap) 0.81206 0.02281 35.6 more of it means more draws
expected total goals (λh + λa) -0.12064 0.01378 -8.8 more of it means fewer draws
logit(competition base draw rate) 0.68184 0.01743 39.1 more of it means more draws

Read it as a list of what the model trusts. The competition's own base draw rate is the strongest signal on the board — a 2.2-goal league and a cup do not draw alike, and neither the goals model nor the Elo gap fully carries that. The draw rate at this Elo gap comes next. The goals model's own probability is worth far less than the blend above is forced to give it, because the blend's weights must add to one and a regression's need not. Low-scoring fixtures draw more even after all of that, which is the negative weight on expected goals.

A sixth signal — the signed Elo gap, i.e. which side is favoured — was fitted and thrown out. It is nine standard errors from zero in training and worthless out of it: a home-advantage term learned on 1871–2014 and applied to a decade in which home advantage fell. It is not in the table because it did not earn its place, not because nobody tried it.

Where the regression said Matches It said Actually drew Miss Repaired to
8–10% 2,112 9.20% 6.53% −2.67 6.41%
10–12% 6,862 11.22% 9.88% −1.34 9.86%
12–14% 18,823 13.10% 12.54% −0.57 12.34%
14–16% 26,788 15.00% 15.21% +0.21 15.37%
16–18% 21,926 16.99% 17.19% +0.20 17.09%
18–20% 33,681 19.07% 18.95% −0.12 18.98%
20–22% 48,992 21.07% 21.05% −0.02 21.06%
22–24% 68,504 23.05% 23.37% +0.33 23.33%
24–26% 82,399 25.02% 25.31% +0.30 25.31%
26–28% 89,006 27.00% 27.56% +0.56 27.53%
28–30% 72,536 28.93% 28.82% −0.10 28.87%
30–32% 41,210 30.90% 30.16% −0.74 30.15%
32–34% 21,794 32.88% 31.90% −0.98 32.01%
34–36% 8,282 34.80% 33.80% −1.00 33.64%
36–38% 1,576 36.66% 32.93% −3.72 34.41%

A regression gets the ordering right and the level slightly wrong, so a second, simpler step follows it: an isotonic map — the best non-decreasing staircase through the training pairs, 209 steps of it, stored knot by knot every time the model is refitted. It cannot re-rank anything and so cannot invent skill; all it does is move each band onto the rate that was actually observed, which is the last column. The bands above are the raw regression on purpose: banding the repaired figure would read ±0.00 everywhere, because the map was fitted on these very matches, and a table that can only ever agree with itself is evidence of nothing.

What this table is not. The model is fitted on all of history and applied forward, so every played match above was part of its own training set and the fit flatters itself on them. Only an upcoming fixture gets a real forecast. The two signals underneath it are leak-free by construction — each was written by a chronological pass that predicted a match before adding it to the state — but this layer is not, and the honest out-of-sample figures are the ones in the held-out panel above, produced by football:report:draw-holdout and football:report:draw-logistic. Measured there, on a decade it never saw, the logistic model scored 0.181386 against 0.182584 for the blend — the largest single improvement this model has had, and still behind the market's 0.191069. Fitted 1 minute ago over matches from 1871-11-11 to 2026-09-30.

Fixtures the model likes for a draw 417 fixtures match these filters
▸ Reset
Date Country Fixture Competition Expected goals Elo gap Goals model ▾ Blend Logistic Price · implies
04 Jun 2027 UKR Livyi Bereh Kyiv v NK Veres Rivne Premier League 1.06 – 0.78 +24 33.4% 31.8% 32.0% —
07 Nov 2026 UKR Bukovyna Chernivtsi v Kolos Kovalivka Premier League 1.02 – 0.87 +35 33.2% 31.4% 30.8% —
28 Nov 2026 UKR FC Epitsentr Dunaivtsi v LNZ Cherkasy Premier League 0.91 – 0.98 -40 33.2% 31.4% 30.8% —
18 Oct 2026 ARG Estudiantes de La Plata v San Lorenzo Liga Profesional 1.12 – 0.64 +129 33.1% 31.0% 33.6% —
05 Dec 2026 UKR Bukovyna Chernivtsi v Chornomorets Odesa Premier League 1.12 – 0.66 +172 33.0% 30.5% 29.1% —
22 May 2027 UKR Bukovyna Chernivtsi v NK Veres Rivne Premier League 1.07 – 0.80 +83 33.0% 30.9% 29.8% —
08 Nov 2026 ARG Argentinos Juniors v Club Atlético Huracán Liga Profesional 1.12 – 0.70 +122 32.9% 30.9% 33.6% —
11 Oct 2026 ARG Club Atlético Platense v Argentinos Juniors Liga Profesional 0.79 – 1.09 -112 32.9% 30.9% 33.6% —
10 Apr 2027 UKR Obolon Kyiv v Chornomorets Odesa Premier League 0.90 – 1.03 +73 32.8% 30.7% 29.8% —
18 Oct 2026 ARG Estudiantes de Río Cuarto v Club Atlético Aldosivi Liga Profesional 0.89 – 1.04 +16 32.8% 31.4% 34.4% —
03 Oct 2026 ARG Defensa y Justicia v San Lorenzo Liga Profesional 1.06 – 0.86 +65 32.7% 30.7% 32.4% —
08 May 2027 UKR Chornomorets Odesa v NK Veres Rivne Premier League 0.90 – 1.03 -25 32.7% 31.4% 31.6% —
01 Nov 2026 ARG Club Atlético Platense v Central Córdoba (SdE) Liga Profesional 1.08 – 0.83 +65 32.7% 30.7% 32.4% —
24 Oct 2026 SCO Partick Thistle v Stenhousemuir Scottish Championship 1.05 – 0.90 +114 32.6% 30.7% 30.3% —
29 May 2027 UKR LNZ Cherkasy v FC Epitsentr Dunaivtsi Premier League 1.09 – 0.82 +170 32.6% 30.2% 29.0% —
01 Nov 2026 ARG Vélez Sarsfield v San Lorenzo Liga Profesional 1.16 – 0.62 +184 32.6% 30.2% 31.6% —
27 Feb 2027 UKR LNZ Cherkasy v Karpaty Lviv Premier League 0.89 – 1.06 +39 32.5% 30.9% 30.3% —
18 Oct 2026 ARG Club Atlético Platense v Club Atlético Lanús Liga Profesional 0.87 – 1.08 -62 32.5% 30.5% 32.0% —
10 Apr 2027 UKR Livyi Bereh Kyiv v FC Epitsentr Dunaivtsi Premier League 1.06 – 0.90 +23 32.4% 31.1% 31.3% —
08 Nov 2026 ARG Club Atlético Independiente v Deportivo Riestra Liga Profesional 1.15 – 0.69 +157 32.4% 30.1% 31.6% —
21 Nov 2026 UKR LNZ Cherkasy v Polissya Zhytomyr Premier League 0.81 – 1.11 -39 32.4% 30.8% 30.8% —
18 Oct 2026 ARG Atlético Tucumán v Rosario Central Liga Profesional 1.05 – 0.92 -39 32.4% 30.8% 33.6% —
01 Nov 2026 ARG Atlético Tucumán v Argentinos Juniors Liga Profesional 1.00 – 0.98 -44 32.4% 30.8% 33.6% —
25 Oct 2026 ARG Club Atlético Tigre v Atlético Tucumán Liga Profesional 1.09 – 0.86 +77 32.3% 30.5% 32.4% —
25 Oct 2026 ARG Instituto de Córdoba v Deportivo Riestra Liga Profesional 1.17 – 0.64 +145 32.3% 30.4% 33.6% —
page 2 / 17 ‹ prev next ›

Expected goals are what the model thinks each side will score; the goals-model 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.

Three readings, and the order is one of them. This table is sorted by the goals model's own chance, largest first — click any heading to sort on that column instead. Blend is the one-parameter mix the site has published since September 2026 and Logistic is the five-feature regression measured to beat it out of sample; both are shown, and neither has replaced the other. Which one the site keeps is a decision still to be made.

Step 4 · What it is worth

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 545,264 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.