HeXaGoal

  • Major League Soccer86 matches
  • Eliteserien54 matches
  • Brasileirão Série A40 matches
  • LaLiganone yet
  • Premier Leaguenone yet
  • Bundesliganone yet
  • Serie Anone yet

A cell strengthens as it holds more scored matches, and the palest step means none at all — we would rather show the gap than leave it out. Nothing here is outlined: an outline means data we are holding back, and we hold none of this back.

Every outcome carries a number, and so does every mistake we make.

These are calibrated probabilities for upcoming matches, built from shot-by-shot expected goals and simulated forward. Scroll to the record and you will find how often our numbers have actually held up, including where they have not.

Flamengo  Mirassol

Brasileirão Série A  Wed 2 Sept, 22:30 UTC

A cell is one scoreline, and this is the shape football actually makes.

This particular field is modelled, not counted: a bivariate-Poisson fit at league-average scoring rates, standing in until the results endpoint is wired. A stronger step means more often, and a cell prints two numbers, the scoreline and its share, once that share reaches 0.4%. The 12 palest cells print no figure: their shares are under 0.4% rather than zero, and they hold 2.0% of the field between them.

007.11010.6207.8303.9401.4500.6018.31112.3219.1314.5411.7510.6024.8127.1225.3322.6421.0031.9132.7232.0331.0040.5140.8240.6
Home goals →Away goals ↓
  • under 0.4%
  • 0.4 – 1.2%
  • 1.2 – 2.6%
  • 2.6 – 4.8%
  • 4.8 – 8.0%
  • 8.0 – 12.4%
  • over 12.4%

Seven named steps, not a gradient: each step is a band we publish, and the steps separate by lightness so the ranking survives without colour. The first step is the only one whose cells print no figure: a share under 0.4% is one this field does not print, not one the season never produced. On the field beside this key that step holds 12 cells and 2.0% of the mass.

The same field for Saturday, and this one we hold back.

Every cell outlined, none filled. Signing in fills them in with this match’s numbers.

  • Aalesunds FK  IK Start

    Eliteserien  Fri 17:00
  • Fredrikstad FK  Bodø/Glimt

    Eliteserien  Fri 17:00

Signed out, you see 3 matches and the three regions of each field. The scoreline lattice above is drawn for every one of them; signing in fills it in. We show you the shape of what is withheld rather than the size of what is left.

A probability you cannot check is just a number.

0%25%50%75%100%0%25%50%75%100%n=29n=289n=468n=150n=15what we said would happen
The dashed line is perfect calibration. Each marker is one bin of predictions scored against what actually happened; its area is how many, and that number is printed beside it, because a thin bin says far less than a thick one. Every scored prediction in this window (every match we have scored) falls between 10% and 60%; the bins outside that range hold none of them. The axis is not cropped and the ends are not missing - that is a property of this window's corpus, not a limit on what the model can issue.

0.650

Brier score over 188 completed matches, scoring the probabilities we published before kick-off against what happened. Measured on 25 August 2026 from the production database that serves these predictions, and fixed at that reading rather than counting up as you watch. Zero would be perfect.

A sample this size does not distinguish that score from any baseline we have measured against: each of those differences carries an interval that covers zero, so this corpus does not establish which way any of them runs.

On the two largest bins - 757 of 951 scored predictions, 80% of the sample - what happened sits within 0.015 of what we said, and the bins at either end rest on 29 and 15 predictions.

Shots, not results

We start from every shot and how good a chance it was. A three-goal win built on one lucky effort is a different team from one built on twenty attempts.

The score changes the game

A team a goal up plays differently from a team a goal down, so shot quality is measured separately for each of six match situations.

Only the past, ever

To simulate round eleven we use rounds one to ten and nothing else. No result from after kick-off touches the number you are shown.

Many simulated matches

The match is played out repeatedly and each scoreline counted. That count, divided by the number of runs, is the number a cell prints.

Ten rounds is a thin base, injuries and transfers are not in the model, and 188 scored matches is too few to settle much — which is why the count behind every point on the curve above is printed beside it rather than tucked into a footnote.