Home

NextGoal: live goal forecasting

Model v3 · measured on thousands of matches · widget on every match page · Русская версия

To quote. NextGoal v3 (Rolgi): two competing inhomogeneous Poisson processes with per-league profiles for 557 leagues. Next-goal side 49%, minute MAE 13.3 min, no-more-goals flag 68%. Match pace is frozen (1.0): modelling it hurt the flag.
49%next-goal side
13.3 minminute MAE (mean; median worse at 14.3)
68%no-more flag accuracy
557leagues with timing profiles

The idea in five minutes

Goals are rare, so the next-goal minute is modelled as two competing Poisson processes: the hosts tick with intensity lambda_home(t), the visitors with lambda_away(t). Whichever fires first scores; if neither fires before minute 90, no more goals. The base rate is team attacking strength (Poisson lambda per 90), multiplied by four adjustments, each measured on data rather than assumed.

First, the per-league minute profile: each of 557 leagues distributes goals across minutes differently. Second, the scoreline: the trailing side counter-intuitively attacks worse (x0.60 — the leader is usually stronger), the leading side slows the game (x0.70). Third, red cards: power play x1.10, short-handed x0.41 (measured on 3,000 matches with dismissals). Fourth, squad threat: combined threat11 of players on the pitch adjusts intensity within [0.85, 1.15].

Factors at a glance

FactorValueSource
League profile557 leagues, per-minutegoal-timing dump, 2-year window
Trailingx0.60measured: leader is stronger
Leadingx0.70measured: game management
Power play / short-handedx1.10 / x0.413,000 matches with reds
Squad threat[0.85, 1.15]g90 to threat11, 24k players
Match pace1.0 (frozen)modelling it broke no-more

What the widget shows

The match-page card shows next-goal probabilities (home / none / away), the minute-by-minute curve, the expected minute (mean first, median and IQR for spread), threat and scorer contributions, and dismissals. In scout mode the same engine expands inline: first-goal forecast from t=0, last-goal forecast from the latest goal, plus an actual_after check of what really happened afterwards.

Reading guide: «Home 45% / None 25% / Away 30%, mean minute 67» means the home process is hotter, but every fourth such match ends goalless. IQR 55–78 shows the spread: betting on an exact minute is pointless; MAE of 13 minutes is the model norm, not a bug.

Honest limits

Median minute is worse than the mean (MAE 14.3 vs 13.3) — hence mean leads the widget. Match pace (shots, possession) is tempting, but measurements show pace breaks the no-more flag, so it stays frozen at 1.0. A missing star striker barely matters (x1.04, within noise, not shipped). VAR cancellations and duplicate goals are cleaned via valid-goals: a goal counts only after reconciling with the scoreline. Endpoints: /api/db/games/:id/next-goal and /api/scout/events/:id/goal-forecast. Outcome-ensemble methodology: v5.3; outcome accuracy: accuracy (EN).