Barcelona have hit the woodwork 18 times this season. Their opponents have hit it twice. That post differential of +16 is the widest in European football by a margin that would be comical if it did not represent 5.49 expected goals evaporating on contact with aluminium.
Across the Premier League, La Liga, Serie A, Bundesliga, and Ligue 1, teams have collectively hit the post or crossbar 686 times in the 2025-26 season. Those 686 shots carried a combined 129.20 xG. That is roughly 129 goals that were decided by centimetres, not by skill, not by tactics, not by fitness. By geometry and the width of a metal frame.
CURSD now tracks this as a signal in the algorithm. Here is what the data says.
The Post Differential Rankings
Post differential measures how many more posts a team has hit compared to their opponents. A large positive number means the frame is working against you. A large negative number means the frame is working as an extra defender.
| Rank | Team | League | Posts Hit | Opp Posts | Differential | xG Lost |
|---|---|---|---|---|---|---|
| 1 | Barcelona | La Liga | 18 | 2 | +16 | 5.49 |
| 2 | Real Betis | La Liga | 9 | 0 | +9 | 0.61 |
| 3 | Como | Serie A | 10 | 2 | +8 | 2.34 |
| 4 | Fiorentina | Serie A | 11 | 4 | +7 | 1.74 |
| 5 | Aston Villa | Premier League | 10 | 3 | +7 | 2.62 |
| 6 | Bournemouth | Premier League | 12 | 6 | +6 | 3.15 |
| 7 | Crystal Palace | Premier League | 11 | 5 | +6 | 3.39 |
| 8 | Lille | Ligue 1 | 11 | 5 | +6 | 1.99 |
| 9 | Osasuna | La Liga | 8 | 2 | +6 | 0.95 |
| 10 | Manchester United | Premier League | 15 | 10 | +5 | 2.50 |
Barcelona's +16 differential is not just the highest in La Liga. It is the highest in European football by seven clear posts. No team in any of the five leagues comes close. Betis are second at +9, and they have hit zero posts against opponents, which is its own kind of strange.
At the other end, the teams blessed by the frame:
| Team | League | Posts Hit | Opp Posts | Differential | xG Saved |
|---|---|---|---|---|---|
| Espanyol | La Liga | 3 | 12 | -9 | 2.31 |
| Sunderland | Premier League | 1 | 10 | -9 | 2.01 |
| Udinese | Serie A | 2 | 10 | -8 | 1.05 |
| Burnley | Premier League | 2 | 10 | -8 | 1.82 |
| Angers | Ligue 1 | 1 | 9 | -8 | 1.81 |
Espanyol and Sunderland have both had the woodwork save them 9 more times than it has cost them. That is not a gameplan. It is pure variance.
The Players the Frame Hates Most
Not all post-hitters are equal. Some players have made the woodwork a recurring character in their season.
| Rank | Player | Team | League | Posts Hit | xG Lost on Posts |
|---|---|---|---|---|---|
| 1 | Riccardo Orsolini | Bologna | Serie A | 7 | 1.18 |
| 2 | Erling Haaland | Manchester City | Premier League | 6 | 1.37 |
| 3 | Ferran Torres | Barcelona | La Liga | 5 | 2.22 |
| 4 | Lamine Yamal | Barcelona | La Liga | 4 | 2.12 |
| 5 | Bruno Fernandes | Manchester United | Premier League | 4 | 0.51 |
| 6 | Marcus Tavernier | Bournemouth | Premier League | 4 | 0.88 |
| 7 | Nico Paz | Como | Serie A | 4 | 0.14 |
| 8 | Michael Olise | Bayern Munich | Bundesliga | 4 | 0.54 |
| 9 | Michael Gregoritsch | Augsburg | Bundesliga | 4 | 1.14 |
| 10 | Issa Soumare | Le Havre | Ligue 1 | 4 | 1.14 |
Orsolini's seven posts for Bologna is the highest individual total in European football. Seven times he has beaten the goalkeeper, found the right angle, generated the right contact, and been told no by a piece of metal 8cm wide. Bologna have hit 15 posts as a team. Orsolini is responsible for nearly half of them.
Haaland at six is notable because those posts carried 1.37 xG, meaning they were not speculative efforts from distance. These were high-quality chances. Haaland doing what Haaland does, except the ball came back.
Ferran Torres and Lamine Yamal between them account for 9 of Barcelona's 18 posts. Torres' 5 posts carried 2.22 xG, the highest individual xG total lost to the woodwork in any league. That is more than two expected goals that existed, were shot correctly, and then ceased to exist on contact with the frame.
The xG Lost Leaderboard
Raw post count does not tell the full story. A speculative 30-yard shot hitting the bar (0.03 xG) is not the same as a close-range header rattling the post (0.45 xG). The xG Lost on Posts metric captures the quality of what was denied.
| Team | League | Posts Hit | xG Lost on Posts | xG per Post |
|---|---|---|---|---|
| Barcelona | La Liga | 18 | 5.49 | 0.31 |
| Brentford | Premier League | 11 | 3.60 | 0.33 |
| Crystal Palace | Premier League | 11 | 3.39 | 0.31 |
| Bournemouth | Premier League | 12 | 3.15 | 0.26 |
| Bologna | Serie A | 15 | 2.97 | 0.20 |
| Chelsea | Premier League | 8 | 2.78 | 0.35 |
| Paris FC | Ligue 1 | 12 | 2.77 | 0.23 |
| Le Havre | Ligue 1 | 10 | 2.73 | 0.27 |
| Newcastle | Premier League | 11 | 2.68 | 0.24 |
| Aston Villa | Premier League | 10 | 2.62 | 0.26 |
Chelsea have only hit 8 posts but those 8 carried 2.78 xG, an average of 0.35 xG per post. That is a collection of high-quality chances denied by millimetres. Brentford are similar at 0.33 per post. These teams are not spraying hopeful shots at the frame. They are hitting good chances that happen to be 2cm too far left.
Bologna's 15 posts carried only 2.97 xG (0.20 per post), suggesting more of their woodwork hits came from lower-quality positions. The frame denied them quantity. Chelsea and Brentford were denied quality.
Does Post Luck Predict Overall Luck?
The obvious question: do teams that hit more posts tend to have lower CURSD Luck Scores? The correlation across all 96 teams in five leagues is r = 0.20. That is weak. Post luck is a real but small factor, which is exactly why CURSD weights it at 3% of the overall CLS.
The most striking example: Barcelona have the worst post differential in Europe (+16) but a CLS of +49 (Blessed tier). Their finishing luck, defensive fortune, and other factors more than compensate for the woodwork. The posts are cursing them, but everything else is blessing them. The opposite case is Crystal Palace: a post differential of +6 and a CLS of -44 (Cursed tier). For Palace, the woodwork is one part of a broader pattern of things going wrong.
This is why post luck works as a standalone signal rather than a proxy for overall luck. It captures something that the other signals miss, the quality of a miss. A shot hitting the post is 2cm from a goal, but xG models treat it the same as any other miss. The Post Luck signal corrects for that blind spot.
How It Works in the Algorithm
CURSD's Post Luck signal measures the post differential (posts hit by the team minus posts hit by opponents), z-scored across the league. When a team hits significantly more posts than opponents, the algorithm registers that as unlucky variance, because at that distance from the goal, conversion is essentially a coin flip.
The weight is 3%, deliberately small. Posts are rare events, typically 7-8 per team per season across a league. At that sample size, the signal is noisy. But when the data is available, as it now is from Understat's shot-by-shot tracking across all five leagues, it adds a dimension that Finishing Luck alone cannot capture.
The full soccer model now runs 9 signals when all data sources are available: xPTS Delta (23%), Finishing Luck (17%), Injury Burden (14%), Opponent Scheduling (14%), Defensive Luck (11%), Shot Domination (9%), Discipline (5%), Red Card Rescissions (3%), and Post Luck (3%). Weights are automatically renormalized when a signal's data is missing, so leagues without woodwork data simply redistribute the 3% across the remaining signals.
The Invisible 129 Goals
Across five leagues and 96 teams, 129.20 xG was lost to the woodwork this season. That is roughly 129 goals that were on target, beaten the goalkeeper, found the right trajectory, and then hit a surface approximately 8cm wide. Some of those goals would have changed matches. Some would have changed seasons. All of them were decided by a margin too small for the human eye to reliably distinguish in real time.
The next time a commentator says a team has been unlucky, check their post count. The frame keeps score even when the scoreboard does not.