Liga F 2023/24 · 240 matches · 6,166 shots

More, better and underrated.

What a full season of event data says about how Liga F teams create chances: why the best teams don't play differently, why the standard xG model undersells the league, and which players create chances that assist numbers miss.

01 58% more shots, 33% better ones

The top four out-created everyone, but through the same kinds of chances as everyone else.

02 +89 goals above xG

Not luck (z = 4.2). StatsBomb's model ranks chances well but sets their level too low for this league.

03 25th for threat, 173rd for assists

Martina Fernández leads a group of players whose creativity happens before the final pass.

1 · How the best teams attack

The best teams don't create differently. They create more, and better.

Over the season, Liga F's top four took 58% more non-penalty shots per match than the other twelve teams, and each of those shots was worth 33% more expected goals (xG). Yet their mix of chances (set pieces, crosses, cutbacks, through balls, counter-attacks) was almost the same as everyone else's: no category differed by more than 4.5 percentage points.

Each crest is a team. Up means better chances and right means more of them; the dotted lines are the league average.

The pattern holds well beyond the top four. Combining seven measures of attack, progression and defence in a principal component analysis, a single axis explains 89.6% of the differences between teams, and it tracks points per match almost perfectly (r = 0.95). Take out Barcelona's dominant season and that axis still explains 86.5%.

Liga F doesn't have competing styles so much as a ladder of control. Teams differ in how much they dominate, not in how.

Explore the team-style map →

2 · Finishing and expected goals

Liga F outscores its xG, and it isn't luck.

Expected goals is the standard yardstick for chance quality, and StatsBomb's model is among the best available. Yet across the season, Liga F scored 701 non-penalty goals from 612.2 xG. That's +89 goals, or 15% more than expected. If the xG values were right, a gap that large would happen by chance less than once in ten thousand seasons (z = 4.2).

The gap isn't spread evenly. StatsBomb's freeze frames record where every player stood at the moment of each shot, and they show that almost all of it comes from shots with a clear sight of goal: +86 goals when no defender stood between ball and goal, against just +3 when one did.

Goals scored per unit of StatsBomb xG. A value of 1 means exactly as expected, and dark bars are gaps too large to be chance.

So is the model wrong? To find out, I trained an xG model on Liga F's own shots, using shot location, body part, technique, assist type and the freeze-frame features, and I scored every model only on matches it hadn't seen. The answer is more interesting than "my model wins". StatsBomb's model still ranks chances better (AUC 0.816 against 0.810). What it gets wrong is the level: it expects 612 goals where 701 were scored. Re-fitting just its level and slope to Liga F predicts 701 and gives the best-scoring model of the four I tested.

Predicted chance of scoring against how often shots were actually scored. Raw StatsBomb xG (red) sits above the dotted line across most of its range, meaning shots went in more often than it predicted. Recalibrated (blue) sits on the line.

This matters for anyone judging finishing. Against raw StatsBomb xG, Barcelona outscored expectations by +26 goals, which looks like elite finishing. Against the Liga F model, the edge is +6, and the apparent over- or under-performance shrinks for 13 of 16 teams. Much of what looks like great finishing in this league is the league itself. Players who still stand out after calibration are worth a closer look: Salma Paralluelo scored 20 non-penalty goals from 13.2 Liga F xG.

Why does the gap exist? This data can't say for certain. Concentrated as it is on shots where only the goalkeeper stands in the way, it is consistent with differences in goalkeeping, finishing, or both, compared with the mix of football the model was calibrated on. Telling those apart needs post-shot data that isn't in the open release.

See the full model comparison →

3 · Chance creation beyond the assist

The creators assists can't see.

Assists and xA only reward the last pass before a shot. But much of the work of creating a chance happens earlier: the pass that breaks a line, or the carry that pulls a defence out of shape. Expected threat (xT) values every area of the pitch by how likely possession there is to become a goal, then credits each completed pass and carry with the threat it adds.

Across 255 outfield players with at least 600 minutes, xT and xA per 90 correlate at r = 0.78: related, but not the same thing. 8 players rank in the top 25 for xT but outside the top 40 for xA. The most striking is Martina Fernández (Barcelona), a defender who ranks 25th in the league for xT but 173rd for xA. Away from Barcelona, Ane Elexpuru Añorga (Athletic Club Bilbao, defender) is 24th for xT and 94th for xA.

Each dot is a player with 600+ minutes. Gold players rank in the top 25 for threat but outside the top 40 for assists:

    Some of them create almost entirely with the ball at their feet: Linda Caicedo earned 71% of her xT from carries, which no passing metric can see. One caution: xT rewards having the ball, so players on dominant teams get more chances to earn it. It is best used to compare players within similar teams.

    Find players with a similar profile to anyone in the league →

    4 · So what?

    What this means

    • For analysts: calibrate xG to the league before judging finishing. In Liga F 2023/24, raw xG understated scoring by 15%, enough to make most teams look like good finishers.
    • For recruitment: pair final-pass metrics with xT. A shortlist built on assists alone misses the defenders and midfielders who progress the ball.
    • For tactics: at the top of Liga F, the edge was the volume and quality of chances, not a distinctive route to goal.

    About this analysis

    Built from StatsBomb's open event data for all 240 matches of Liga F 2023/24, using Python (pandas, scikit-learn) and Plotly. The pipeline reconciles goals, shots and player minutes with official match records and stops if they don't match. Every definition, including the chance categories, the xG model, expected threat and player similarity, is documented in the methodology, and all the code is on GitHub.