Blog/πŸ† Cross-League

The Woodwork Curse: 686 Posts Hit, 129 xG Lost, and the Players the Frame Hates Most

Barcelona lost 5.49 xG to the woodwork this season. Riccardo Orsolini hit the post 7 times. Across five leagues, the frame is an invisible luck factor we now measure.

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.

RankTeamLeaguePosts HitOpp PostsDifferentialxG Lost
1BarcelonaLa Liga182+165.49
2Real BetisLa Liga90+90.61
3ComoSerie A102+82.34
4FiorentinaSerie A114+71.74
5Aston VillaPremier League103+72.62
6BournemouthPremier League126+63.15
7Crystal PalacePremier League115+63.39
8LilleLigue 1115+61.99
9OsasunaLa Liga82+60.95
10Manchester UnitedPremier League1510+52.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:

TeamLeaguePosts HitOpp PostsDifferentialxG Saved
EspanyolLa Liga312-92.31
SunderlandPremier League110-92.01
UdineseSerie A210-81.05
BurnleyPremier League210-81.82
AngersLigue 119-81.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.

RankPlayerTeamLeaguePosts HitxG Lost on Posts
1Riccardo OrsoliniBolognaSerie A71.18
2Erling HaalandManchester CityPremier League61.37
3Ferran TorresBarcelonaLa Liga52.22
4Lamine YamalBarcelonaLa Liga42.12
5Bruno FernandesManchester UnitedPremier League40.51
6Marcus TavernierBournemouthPremier League40.88
7Nico PazComoSerie A40.14
8Michael OliseBayern MunichBundesliga40.54
9Michael GregoritschAugsburgBundesliga41.14
10Issa SoumareLe HavreLigue 141.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.

TeamLeaguePosts HitxG Lost on PostsxG per Post
BarcelonaLa Liga185.490.31
BrentfordPremier League113.600.33
Crystal PalacePremier League113.390.31
BournemouthPremier League123.150.26
BolognaSerie A152.970.20
ChelseaPremier League82.780.35
Paris FCLigue 1122.770.23
Le HavreLigue 1102.730.27
NewcastlePremier League112.680.24
Aston VillaPremier League102.620.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.

Free

Liked this? Get more.

Weekly analysis like this one, in your inbox every Monday. 5 picks the CURSD way: cursed teams ripe for regression, blessed teams due to cool off.

No spam. One email per week. Unsubscribe anytime.

Share

Read next