Markov chains
Where danger lives
Cut the pitch into 192 cells, watch 1.5 million passes and carries flow between them, and solve for the fixed point: each cell’s probability that a possession there ends in a goal. Standing in the central goal-mouth cell is worth 0.266 — 61 times the own-half average — and every pass is worth the difference between where it starts and where it lands.
The threat surface
This is the whole model in one picture. Each cell’s shade is its expected threat: the chance that a team in possession there goes on to score in this possession — by shooting now, or by moving the ball somewhere better and continuing the chain. Hover or use the arrow keys to inspect a cell; flip on the flow field to see the single best onward move from every square of the pitch.
Expected threat, cell by cell
cell labels: chance of scoring this possession, % · own goal left, attacking right
Hover a cell, or focus the map and use arrow keys.
All 192 cell values as a table
The surface obeys football’s geometry without being told to: value rises monotonically toward the goal you are attacking, hugs the centre of the box, and collapses to almost nothing behind the halfway line. The central goal-mouth cell is worth 0.266; its neighbour one cell out is already down to 0.111, and the average own-half cell is worth 0.004.1
The flow field asks each cell a sharper question: of all the places a completed pass or carry from here actually goes, which one raises the possession’s value most? 191 of 192 cells have an answer. The exception is the central goal-mouth cell, where no onward move beats the alternative — the model’s advice there is simply shoot (players agree: 84.2% of recorded actions from that cell are shots). From the goal-line cell beside it, the best option is a low cutback into it, worth +0.187.
1 Shot probability, move-success rate, per-shot xG and action counts in the tooltip always come from the pooled grid’s auxiliary surfaces; the flow field is likewise computed on the pooled grid. Switching corpus swaps only the xT values.
Watching threat ripple backward
Value iteration starts from zero and repeatedly applies one rule: a cell is worth shoot now plus move and continue. Sweep 1 knows only about immediate shots, so just the box glows. Each further sweep lets the model see one more action into the future, and value bleeds backward from the goal — through the channels, out to the wings, over the halfway line.
Reduced motion is on — drag the slider to step through the sweeps.
The surface, sweep by sweep
cell labels: chance of scoring within n actions, % · pooled grid
Convergence is geometric
max |ΔxT| across all 192 cells per sweep · log scale · pooled grid
All recorded sweep deltas as a table
Sweep 1’s biggest update is 0.2449 — exactly the
goal-mouth cell’s shoot-now payoff (0.842 shot
probability × 0.291 xG per shot). After that the
largest per-sweep change decays geometrically at a ratio of roughly
0.86, crossing the 10⁻⁵
tolerance at sweep 36 on the pooled grid
(32 for club 2015/16, 43 for
the sparser international corpus). Because the update is affine, the same answer
drops out of one linear solve: the iterated surface matches
(I − diag(m)·T)⁻¹(s⊙g) to within
4.6×10⁻¹⁰.
2 The animation’s first frame is the exact shoot-now surface s⊙g and its last frame is the exact fixed point; the frames between interpolate each cell along the model’s recorded max-Δ decay schedule, since the 192×192 transition matrix is not shipped to the browser. The convergence chart above is the unmodified per-sweep record.
The Özil proof
Credit every completed pass and carry with the change in surface value between its start and end cell, sum by player, and the model re-runs an old verdict: Mesut Özil was the Premier League’s 2015/16 creator-in-chief with 18.37 xT over 4,119 completed moves — the same player Karun Singh’s original 2018 post crowned. Pick a competition, sort the table, and click a player to draw their three most valuable moves.
| # | Player | Team | Moves | xT added | xT net | xT /100 |
|---|
Top three moves
arrows: completed moves, labelled with ΔxT · attacking right
- Pass
- Carry
Özil wins on volume; Dimitri Payet (15.03 xT) ran him close on half a season less of the ball, at a far higher rate — 0.60 xT per 100 moves to Özil’s 0.45. In Spain the same year, Neymar (18.54) out-created Messi (14.71). And the single most valuable completed move in all 990 matches belongs to neither: Marco Asensio — a 19-year-old on loan at Espanyol — swept a cross-box ball from (79.5, 77.1) to (113.9, 43.7) against Atlético Madrid, worth +0.257 xT on its own.
The tournament tables tell the same story in miniature: at the 2022 World Cup Antoine Griezmann (3.19 xT) out-created both Messi (2.46) and Mbappé (2.05); at Euro 2024 a 16-year-old Lamine Yamal led every player at the tournament with 2.50 xT from just 399 moves (0.63 per 100).
3 Following Karun’s original, the headline “xT added” clips negative moves to zero; the “xT net” column keeps them (honest accounting for backward passes). All attribution uses the pooled surface so players are comparable across competitions. The per-100 view requires at least 200 completed moves.
One geometry, two eras
Fit the surface twice — once on 1.11 million moves of 2015/16 club football, once on 200 thousand moves of international football from 2022–24 — and you get, to a remarkable degree, the same map. The rank correlation between the two grids is Spearman 0.998. Where danger lives is a property of the game itself, not of an era or a level.
Where the two surfaces disagree
per-cell difference, international 2022–24 minus club 2015/16 · xT units · own goal left, attacking right
Hover a cell, or focus the map and use arrow keys.
All 192 cell differences as a table
| Cell (col, row) | Zone | Club xT | Intl xT | Δ |
|---|
The two corpora are not the same football: international sides in 2022–24 completed 88.8% of their moves against 84.0% in 2015/16 club play. Yet the surfaces differ by an RMSE of just 0.0023, and every one of the five most divergent cells sits on or beside the goal-line, where shot samples are thinnest. The one systematic wrinkle: the international final third runs about 2.4% hotter overall (ratio ×1.024) — tidier ball retention makes advanced territory slightly more valuable, without moving where that territory is.
Method and caveats
Corpora: Premier League 2015/16 and La Liga 2015/16 (380 matches each), World Cups 2018 and 2022 (64 each), Euros 2020 and 2024 (51 each) — 990 matches, 23,464 open-play shots. Grid indexing follows StatsBomb axes: columns run left to right toward the goal being attacked at x = 120; row 1 is the top touchline.