Skip to content
GoalPulz
LiveMatchesAnalysisCommunityLeaguesStats
Back to matches

Methodology

Last updated: 18 July 2026

This page describes how GoalPulz produces the numbers you see on a match, team, league or player page. It is written so that a reader can check our work: every figure on the site comes from the inputs described here, and nothing on the site is generated by a model we cannot explain.

The prediction model

Match probabilities come from a transparent Poisson model with a Dixon-Coles correction for low-scoring outcomes. There is no machine learning and no training set. The model is a pure function: the same inputs always produce the same output, and every output can be traced back to the inputs that caused it.

A pre-match prior is built from venue-aware form and head-to-head record. That prior is then updated in play using the current score, minutes elapsed, live expected goals, red cards and share of attacking pressure. We chose this approach over a black-box model deliberately: a probability you cannot interrogate is not much use for understanding a football match.

Form windows and how they are weighted

“Form” on GoalPulz is not the last five results. It is a blend of three windows, weighted by how much each one tells you about the next match:

  • Venue window (weight 0.5) — the home side is measured on its home record, the away side on its away record. Home and away performance differ enough that mixing them hides the signal.
  • Last five matches (weight 0.2) — recency, kept deliberately small because five matches is a very noisy sample.
  • Season to date (weight 0.3) — stability, so one unusual run does not dominate.

Small samples are shrunk toward the league average rather than taken at face value. A side with three matches played does not get treated as though its numbers are as trustworthy as a side with thirty.

Expected goals

Expected goals (xG) are supplied per shot by our data provider, not modelled by us. We aggregate them per match, team and season, and we use them in two ways: as a live input to the prediction model, and as a descriptive read on whether results have run ahead of or behind performance.

xG describes chance quality. It does not measure how well a team played in every sense, it says nothing about the specific finish that produced a goal, and over a handful of matches the gap between goals and xG is usually noise rather than a finding. We try to phrase it that way on the site rather than presenting xG as a verdict.

Probability is not prediction

A 65% win probability means that, given the inputs, we expect that side to win roughly two times in three across many similar matches. It does not mean the match is decided. The one-in-three is the point, not a rounding error, and a model that never sees upsets would be a broken model.

GoalPulz publishes probabilities and analysis for understanding football. It is not betting advice, we do not tell you what to stake, and no output here should be read as a tip.

What we do not have

Data coverage is uneven across competitions. Detailed per-match player statistics, lineups and positional data exist for major leagues and are thinner or absent in smaller ones. Where a number is missing we leave the module out rather than filling it with a placeholder, and pages without enough verified data are excluded from search indexing rather than published as thin pages.

Where our figures disagree with an official source, the official source is right and we want to know. See corrections.

Related

Data sources — where the underlying data comes from and how often it refreshes. Editorial principles — how written analysis is produced and reviewed.

MatchesLiveLeaguesStats
© 2026 GoalPulz
Methodology·Data sources·Editorial principles·Corrections
Privacy·Cookies·Terms·Contact·Support