Signature stats
Sequence xG: expected goals adjusted for rebound flurries
A goalie makes a save, the puck drops in the crease and three players whack at it. Plain xG adds all three chances together. But the play can only produce one goal: if the first shot had gone in, the second and third would never have happened. Sequence xG fixes that double counting.
Updated · Method version sequences v1
How it's calculated
sxG_i = xG_i × (1 − xG_1) × (1 − xG_2) × … × (1 − xG_(i−1))
- xG_j
- raw xG of each earlier unblocked attempt by the same team in the same play (between whistles)
- Σ sxG
- the probability that the play produced at least one goal
This is the approach MoneyPuck popularised as flurry adjustment. The first shot in a play keeps its full xG. Each later shot is discounted by the chance that the play was still alive when it was taken.
- A play is everything between two whistles. A turnover to the other team ends the sequence for the attacking team.
- Blocked attempts carry no xG, so they neither add to nor discount the sequence.
- A scramble is three or more same-team attempts within 6 s. We flag them separately: about 1.9 per game, and 10.4% end in a goal.
Raw xG vs sequence xG in one flurry
Example data: invented for illustration
Three shots in one play: raw xG totals 0.75, sequence xG totals 0.58.
- Raw xG
- Sequence xG
Worked example
A three-shot flurry
Includes example dataA point shot (xG 0.25) is saved, the rebound (0.30) hits the post, and a second rebound (0.20) is covered by the goalie. All in one play.
- Raw xG: 0.25 + 0.30 + 0.20 = 0.75.
- Shot 1 keeps its xG: 0.25.
- Shot 2: 0.30 × (1 − 0.25) = 0.225.
- Shot 3: 0.20 × (1 − 0.25) × (1 − 0.30) = 0.105.
- Sequence total: 0.25 + 0.225 + 0.105 = 0.58, which equals 1 − (0.75 × 0.70 × 0.80), the chance at least one of the three went in.
The flurry is worth 0.58 goals, not 0.75. The xG values are illustrative; the arithmetic is exactly what the site runs.
Reliability
Sequence xG is a correction to a measurement, not a new trait, so it inherits xG's reliability. What we tested was whether a related player skill exists: it does not.
| Measure | Split-half r | Sample | Verdict |
|---|---|---|---|
| League total effect−5.5% of xG. | — | 200 games, 2025-26 | Stable |
| Shooter "rebound creation"Not published. | ≈ 0 | Split-half, 200 games | Noise |
| Scramble goal rate10.4% become goals. | — | About 1.9 scrambles per game | Not measured yet |
Split-half r: we split each sample in two (for example odd and even games) and correlate the two halves across players or teams. Near 0 means the stat is mostly noise; near 1 means it is a stable trait.
Limitations
- The formula assumes shots within a play are independent chances. Real flurries are correlated (a goalie out of position stays out of position), so the adjustment may be slightly too strong or too weak.
- Play boundaries come from whistles in the feed. A long offensive-zone shift with several separate chances counts as one play if nothing stops it.
- Players don't get sequence xG as individual shooters: a player shouldn't lose credit for a good rebound chance because a teammate shot first.
FAQ
What is flurry-adjusted xG?
An adjustment that stops rebound sequences from counting as more than one goal. Each shot's xG is multiplied by the chance that the earlier shots in the same play did not score.
Why not just use raw xG?
Raw xG overrates teams that generate scrambles: three rebounds worth 0.75 xG can only produce one goal. In our 2025-26 sample the adjustment lowered league xG by 5.5% and moved single-game differentials by up to 0.72.
Do player ixG totals use sequence xG?
No. Individual shooting stays on raw xG, because a shooter should get full credit for the chance he had. Sequence xG is used for team and game views.
Is creating rebounds a skill?
Not one we can measure. A shooter's rate of generating rebounds had a split-half correlation of about zero in our sample, so we don't publish it.