Six Runs and a Blind Spot: Off-Ball Movement Through xMark

What a marking model shows about off-ball runs, and what it misses

6 October 2026

Six scenes · 49 World Cup matches · PFF FC open tracking data

TL;DR - xMark can’t grade an off-ball run, but it can show how one works: which defender moved, and who that freed. I use the model from an earlier post to follow who is marking whom, frame by frame. - Two patterns show up clearly: a run that pulls a defender off a teammate, and a run that shakes off a marker. - One kind of run doesn’t: an attacker who is clearly free but still has a defender chasing a couple of metres behind. Pitch control misses it too.

1. What I’m looking at

Off-ball runs are one of the hardest things to measure. A run can be excellent and never touch the ball, or create space that a teammate uses.

In an earlier post I built a model from tracking data. In brief, for every attacker \(j\) and defender \(i\) in every frame:

\[T_{ij} = \tau_r + \frac{\lVert (\mathbf r_j + \mathbf v_j \Delta) - (\mathbf r_i + \mathbf v_i \tau_r) \rVert}{v_{\max}}, \qquad p_{ij} = \frac{1}{1 + \exp\!\left( -\dfrac{\pi}{\sqrt{3}\,\sigma}\,(T - T_{ij}) \right)}\]

\(T_{ij}\) is the time defender \(i\) needs to reach where attacker \(j\) will be in \(\Delta = 1\) s (reaction time \(\tau_r = 0.7\) s, then running at \(v_{\max} = 5\) m/s), and \(p_{ij}\) turns it into the probability that he gets there within \(T = 1.5\) s (\(\sigma = 0.45\) s). These steps follow Joris Bekkers’ Pressing Intensity (2025); what the earlier post added is the breakdown by defender and a check against human labels. From these come the two quantities used here:

\[P_j = 1 - \prod_i (1 - p_{ij}), \qquad m_{ij} = P_j - P_j^{(-i)}\]

That post found xMark to be a poor predictor of danger. Here I use it for something else: describing what happens during a run.

2. How to read the clips

3. Pattern one: pulling a defender off a teammate

In these three scenes, one attacker’s run draws a defender away, and a teammate’s xMark drops as a result.

Case 1: Two runners, one defender (France v Poland, 28:08)

Giroud and Rabiot both run into the area Kamil Glik is defending. Just before the reference point, Glik’s contribution to the two of them is almost equal (about 0.7 each): he is effectively responsible for both at once. The dashed lines cross 0.1 s before the reference point. From there he goes with Rabiot (contribution 0.11 at 1.9 s before the reference point → 0.84 at 1.2 s after) and lets Giroud go (0.82 at 0.7 s before → 0.38 at 1.1 s after). Giroud’s xMark halves, from 0.80 to 0.40. Dembélé’s cross finds Giroud, whose shot goes wide.

Whether the two runs were planned together, the data can’t say, but the result is a 2-v-1 on a centre-back, who has to choose one of the two.

Case 2: A diagonal run opens the space (Portugal v Switzerland, 34:55)

Guerreiro makes a diagonal run across the box. Granit Xhaka drifts towards it and stops covering Gonçalo Ramos (contribution 0.45 → 0.02). Ramos runs into the space, and his xMark falls from 0.94 to 0.08: the largest drop, weighted by how dangerous his position was, of any candidate I found. Félix’s cross reaches him, but he is challenged and the ball goes out.

Xhaka never fully picks up Guerreiro (his contribution to him only reaches 0.21), yet his movement is enough to free Ramos.

Case 3: Attacking the box to free the striker (Croatia v Canada, 71:02)

Kramarić runs into the box, and Steven Vitória switches from Petković to him (contribution to Kramarić 0 → 0.67, to Petković 0.49 → 0.18). Petković’s xMark falls from 0.69 to 0.30. Here the ball goes to the runner: Kramarić shoots, wide.

4. Pattern two: shaking off a marker

The simpler version: an attacker loses the defender who was marking him.

Case 4: Núñez in the box (Ghana v Uruguay, 08:10)

Darwin Núñez’s xMark falls from 0.70 to 0.16 in 0.8 seconds, as Daniel Amartey’s contribution drops by the same amount. Núñez is free in the box, but the cut-back doesn’t reach him.

Case 5: A late run from midfield (Cameroon v Brazil, 90+7)

Fabinho arrives from the second line. Collins Fai follows him at first, then loses him (contribution 0.58 → 0.11), and Fabinho’s xMark drops from 0.67 to 0.19. The chance goes to Martinelli, who shoots wide.

5. What the model can’t see

Case 6: Weah (USA v Wales, 35:10)

On video, this is a clean run in behind: Weah gets goal-side of Neco Williams, Pulisic plays him through, and Weah scores first time.

The model misses this run: Weah’s xMark is still 0.57 when he receives the ball, because a beaten defender two metres behind still counts as able to reach him. His xMark falls from 0.96 to 0.58 by the time the pass is played. When the pass is played, Williams is level with Weah; Weah is faster (7.5 against 6.7 m/s) and gets goal-side while the ball is rolling, so by the time he receives it Williams is about two metres behind, still chasing. The model asks only whether a defender can reach the attacker, not whether he is goal-side of him. (For this clip I keep computing Weah’s xMark after he receives the ball; normally it stops.)

Pitch control doesn’t spot it either. Around Weah the background is actually blue: attacking pitch control at his position is 0.24 when the pass is played and 0.25 when he receives it. It also asks who can get there first, and by that measure Williams can.

This is a limit of the whole family of “who can reach it first” models, not just mine. Fixing it would need something that knows which way the defender is facing and which side of the attacker he is on.

6. How xMark relates to pitch control

The two are built from the same pieces. Both estimate how long each player needs to reach a point (reaction time plus running at top speed) and turn that into a probability. The differences:

  Pitch control xMark
Where Every point on the pitch Only where each attacker is heading
Who Attack against defence Defence only
Breaks down into Who controls each point Who is marking each attacker

To see how closely they agree, I took 50,000 random frames of attackers without the ball from all 49 matches and compared an attacker’s freedom (\(1 - P_j\)) with attacking pitch control at his position.

Where the attacker is Frames Rank correlation [95% CI]
Everywhere 50,000 0.76 [0.74, 0.77]
Middle third 27,589 0.76 [0.75, 0.77]
Final third, outside the box 18,880 0.67 [0.65, 0.68]
Inside the penalty area 2,691 0.51 [0.47, 0.55]

The closer to goal, the less xMark and pitch control agree: rank correlation 0.76 overall, but 0.51 inside the penalty area. Inside the box, the average attacker is mostly covered (freedom 0.25) while pitch control at his position is roughly even (0.53).

The disagreements also go one way. Here “free” means an xMark of 0.2 or less, and “covered” more than 0.8. An attacker xMark calls free almost always stands in space his team controls: only 1.3% of all frames are “free but in the defence’s space”. The reverse is common: more than half of the attackers it calls covered are standing where pitch control favours the attack (9.6% of all frames). That is what you’d expect in crowded areas: a defender is close enough to one attacker to cover him, but other attackers are close enough to the same spot to win a ball played there.

So the two are not interchangeable, especially in the box, where most of these scenes happen. xMark is not a better pitch control. Its use is the last row of the table: it says who is marking whom, which a pitch control map doesn’t show directly.

7. How these scenes were chosen

I didn’t pick these by hand from memory. I searched all 49 matches for two patterns during open play in the opponent’s half, with the attacker moving towards goal:

Pattern Per match Shot within 5 s
A defender switches from one attacker to another, and the first attacker’s xMark drops by 0.3 or more within 2 s¹ 8.5 9.1%
An attacker’s xMark drops from above 0.5 to below 0.2 within 2 s, at a position worth at least 0.05 xG 1.1 (52 in total) 15.4% (8 of 52)
Any moment under the same conditions — 5.0%

¹ Excluding switches that happen in the same frame as a change of ball carrier (which reshuffles the model’s assignments mechanically), and switches where the defender’s contribution is below 0.05 before or after.

Both patterns are followed by shots more often than a random moment, though this is an association, not proof that the run caused the shot. From the top candidates I watched the footage and kept the scenes where the run was clear on video and the numbers told the same story. I dropped scenes where the defender’s contribution was too small (below about 0.2) to say that his movement freed anyone.

8. Summary

Limits. These are six selected scenes, not a measurement of how good anyone’s movement is. xMark has no body orientation. The pitch control model uses standard published parameters and was not tuned to this data.

Data

PFF FC open 2022 World Cup data (tracking for 49 matches). xMark as in the earlier post, without the turn penalty. Pitch control: Spearman (2017), with the default parameters of Laurie Shaw’s implementation for the Friends of Tracking series.