Pinned Tweet
Football, measured. Player cards, head-to-heads and match reports from Opta data, built in Python. Big five leagues.
Want a card for your player? Name him below. New cards every Sunday.
Olise or Saka? The two right wingers meet in the Champions League tonight.
So far this season, Olise leads all six per-90 categories, ranked against 271 wide and attacking midfielders across the big five leagues:
Shots: 4.60 vs 2.38
Chances created: 3.41 vs 1.40
Take-ons won: 2.56 vs 1.12
Carries into the box: 2.73 vs 0.98
He is in the 99th percentile for shots and chances created, and has 5 goals and 2.8 xA in 528 minutes.
Saka's best number is touches in the box, 84th percentile, and his shots carry the higher xGOT (4.4 vs 3.7).
Two caveats: six or seven matches is a small sample, and the ranks are not adjusted for league or opponent. Tonight is a direct test.
Inter and Lazio are level on 19 points at the top of Serie A. Only one of them is creating like a leader.
Inter have 19 points from 16.4 expected, the best underlying numbers in the league. Lazio have 19 from 11.6, seventh on expected points. Their +7.4 is the biggest gap in Serie A.
Cagliari (+5.0) and Frosinone (+5.6) tell the same story further down: 13 points each, from chances worth around 8. On xPts alone they would be 13th and 14th, not joint 6th. Cagliari may already be feeling it: four non-penalty goals conceded last weekend, from 2.3 npxG.
The other end is just as striking. Juventus (15.7) and Napoli (14.3) rate second and fourth on expected points, but have 11 and 10. Bologna have 5 points from 10.4.
Seven games into the Premier League season, the table and the chances disagree most at both ends.
Nottingham Forest have created enough to expect 12.6 points. They have 5. Only Manchester City, Brighton and Arsenal rate higher on expected points, yet Forest are in the relegation zone.
Bournemouth tell the same story: 12.3 expected, 6 actual. That is the second-largest shortfall in the league.
At the other end, Manchester City have 21 points from 14.5 expected. They are still the best side on the numbers, but only just: Brighton (13.8) and Arsenal (13.5) are within a point of them on xPts. In the real table City are three clear of Arsenal and five clear of Brighton.
Arsenal (+4.5) and Chelsea (+3.6) complete the overachievers.
Seven games is a small sample. Read this as where the chances point, not as a verdict.
PSG 4-2 Barcelona, the full report.
Barça moved the ball better: 53 progressive passes to 32, and more entries into the final third (48 to 41). But they lost it in the wrong places. 12 of their open-play losses led to a PSG shot within 15 seconds, worth 2.23 xG.
The gap was in the finishing too. PSG put 15 of 22 shots on target, worth 4.07 xGOT. Barça managed 5 of 18, worth 0.92.
PSG did it after losing Dembélé, Kvaratskhelia and Marquinhos to injury, and it ended Barça’s 13-game winning run. The first home win in this fixture since La Remontada.
Bayern and Arsenal meet in the Champions League this week. Here is where both teams create their danger.
Bayern are in a league of their own: 3.00 expected threat per 90 from passes and carries, almost 0.9 clear of Leverkusen in second. No other Bundesliga side gets above 2.11.
Arsenal sit fourth in the Premier League at 1.75, behind Man City, Man United and Fulham.
Both build through the middle. The centre of the attacking third is the top zone for both: 13% of Bayern's threat comes from there, 12% of Arsenal's.
Shading shows where a team creates, the number shows how much.
PSG vs Barcelona tonight, ranked against all 96 clubs of the big five leagues. Two teams built on the same blueprint:
Possession: 68% vs 70%
Expected threat: 2.40 vs 2.41 per 90
Box touches: 36.7 vs 41.0 per match
Both sit in the top 7% of Europe on every attacking measure.
Where they differ:
Barcelona concede less: 1.01 xG per match vs 1.20
PSG lean more on set pieces: 31% of their xG vs 22%
PSG win the ball higher: 15% of their ball wins come in the final third
Barcelona are 9 from 9 in LaLiga with 39 goals. League matches only, not adjusted for league strength.
Premier League matchday 7 in xG.
Bournemouth 2-0 Sunderland was the most one-sided game of the round: 4.3 xG to 0.1, 29 shots to 3. Two goals barely covers it.
Brighton were ruthless: 5-0 against Palace from 2.3 xG, 9 of 17 shots on target. Spurs did something similar, 3-1 against Coventry from 0.9 xG.
Arsenal won 1-0 at Forest with one shot on target all game. Newcastle had 16 shots against Villa and hit the target once. They lost 0-1.
City beat Ipswich 3-2, but needed it: 3.5 xG to 1.7, and Ipswich scored again in stoppage time.
Bundesliga matchday 6 in xG.
Bayern 6-1 Leipzig was as one-sided as it sounds: 3.9 xG to 0.8, 17 shots on target from 29.
Elversberg 4-3 Augsburg was the wildest game of the round, 4.3 xG to 3.9. Augsburg took 29 shots and still lost.
Hamburg beat Stuttgart 1-0 despite being outshot 24 to 14 (1.5 xG to 2.3). Gladbach lost 1-2 to Hoffenheim with 0.5 xG, and Schalke managed only 0.4 at home to Mainz.
Union 0-0 Dortmund: two shots on target across 90 minutes and a combined xGOT of 0.08.
The Bundesliga after matchday 6, simulated 10,000 times.
Bayern and Dortmund are level on 14 points, yet the title split is 82% to 9%. The model rates the strength behind the points, and Bayern's xG numbers are on another level. The 6-1 over Leipzig pushed them up from 76%, Dortmund's 0-0 at Union took them down from 12%.
The biggest move came at the bottom. Schalke lost 0-1 at home to Mainz, creating just 0.4 xG, and their relegation risk jumped from 23% to 38%. Hamburger SV went the other way: a 1-0 win over Stuttgart cut theirs from 24% to 15%. Gladbach are still without a point and go down in 47% of the simulations, Paderborn in 42%.
The top four looks like Bayern, Dortmund (80%) and Leverkusen (72%) plus one: Leipzig 41%, Freiburg 28%, Stuttgart 26%.
Bayern 6-1 RB Leipzig. Leipzig arrived after a 6-0 win over Frankfurt, Bayern after two straight draws. The numbers were as one-sided as the score.
Bayern: 29 shots, 3.94 xG, 8 big chances. Leipzig: 12 shots, 0.84 xG, not a single big chance.
Luis DÃaz scored a hat-trick from 0.52 xG, two of the goals past Lukas Klostermann, who was making his first start since April. The three goals were worth 0.29 xG combined (0.23, 0.04, 0.02), the finishing did the rest: 1.57 xGOT on those three shots.
Joshua Kimmich ran the game: 117 touches, 16 passes into the final third, 13 progressive passes and 7 ball wins in Leipzig's half, the most on the pitch in all four.
Bayern barely dribbled, winning 3 of 11 take-ons. They passed through Leipzig instead: 57 progressive passes allowed by Leipzig, 16 the other way.
Wednesday brings the next test for both: Bayern host Arsenal, Leipzig go to the Bernabéu.
Ligue 1 2025/26: who created the threat? Three views on expected threat (xT), the value of moving the ball into more dangerous areas.
Overall, Florian Thauvin led the league with 0.33 xT per 90 from passes and carries combined. Bradley Barcola came next, and he was the best carrier of all at 0.13 per 90.
Lens are all over these charts. Besides Thauvin there is Matthieu Udol, who created more threat by passing than anyone (0.25 per 90) from left back, and Ruben Aguilar, the top creator in three zones down the right flank.
Getting the ball into the box: Mason Greenwood managed 3.60 per 90, 108 in total, just ahead of Thauvin (102) and Barcola.
And Vitinha owns the middle: the best creator in three zones around the centre circle.
Bukayo Saka's 2026/27 so far, as a scouting report: six league matches, scored against 778 attacking midfielder and winger seasons across the big five.
The profile has moved towards goal. Shooting at the 96th percentile, carry progression 94th, press resistance 99th. His 0.47 npxG per 90 sits at the 98th, and he draws 2.97 fouls per 90, also 98th.
What's missing is the passing. Pass progression is at the 5th percentile, xT from passes at the 6th, and he hasn't created a single big chance yet. For a player whose game has long been built on creating, that's the line to watch.
Best role fit: Inside Forward, 95th percentile. Closest comparable seasons: Mattia Zaccagni, Dan Ndoye and Ayoze Pérez, all 2023/24.
FotMob rates him Arsenal's best player so far (7.94). Only 546 minutes, so a snapshot, not a verdict.
Nottingham Forest vs Arsenal tomorrow.
Bundesliga 2025/26: who took players on, and who put the ball into the box?
Dribbling: Yan Diomande attempted 7.2 dribbles per 90, the most of any regular, and still beat his man 60% of the time, the best rate on the list. Leipzig had the top two, with Antonio Nusa next at 5.7.
Crossing: Julian Ryerson sent in 9.8 crosses per 90, 248 over the season. David Raum was close behind at 8.9 and found a team-mate more often, 34.5% against 27%.
Two names appear on both lists: Michael Olise and Bazoumana Touré. Touré's crosses found a team-mate 33.6% of the time, second only to Raum in the top 20.
Where did LaLiga's chances come from in 2025/26? Every club's xG, split by the situation the shot came from.
Across the league: 59% regular play, then corners, fast breaks and penalties at roughly 10-11% each.
Real Betis were the counter-attacking side. 24% of their xG came from fast breaks, 13.6 xG in total and more than double the league share. Villarreal were next at 20%.
Barcelona created the most overall, 87.7 xG, two thirds of it from regular play.
Real Madrid leaned on the spot more than most: 11.0 xG from penalties, 14% of their total. Only Valencia had a higher share.
Osasuna were the only side under 50% from regular play, with the league's highest free-kick share (10.7%). Real Oviedo took 17% of their xG from corners, the most in Spain.
Betis vs Barcelona on Saturday: the league's best counter-attacking side against its biggest chance creator.
Who were Serie A's naughtiest players in 2025/26? Fouls per 90 against how often those fouls ended in a booking.
Top right is where it gets expensive. Jean-Daniel Akpa Akpro fouled 2.33 times per 90 and was booked for almost one in four of them (9 cards). Juan Jesus collected 10 cards from 39 fouls.
Far right is a different type. Luca Ranieri committed only 0.8 fouls per 90 but was booked for 9 of his 22, the highest rate in the league. When he fouls, it counts.
Top left is the opposite. Gennaro Borrelli fouled more often than anyone, 3.11 per 90, and saw just 4 cards from 44 fouls. Mateo Pellegrino committed 87 fouls all season and was booked 5 times.
Verona had three of the labelled players: Akpa Akpro, Nicolás Valentini and Kieron Bowie, who got away with 34 fouls and a single booking.
Erling Haaland, 2026/27 so far: 6 goals in 6 Premier League starts.
21 of his 22 shots came from inside the box. Together they were worth 4.82 xG, 0.22 per shot: not just volume, but shots from where goals happen.
Then the finish. 6 goals from 4.82 xG, and his efforts on target were worth 5.41 xGOT, so the placement added value on top. Four of the six went into the corners.
Against 243 attackers across the big five: 95th percentile for goals and xG per 90, 96th for xGOT per 90.
The one soft spot: only 59% of his shots hit the target, 36th percentile.
Man City vs PSG tonight.
Kylian Mbappé's 2025/26 LaLiga season, ranked against 460 striker seasons across the big five since 2023/24.
He is a striker who also does a creator's job. 99th percentile for shots and touches in the box, but also 97th for chances created, 96th for passes into the box and 99th for pass completion.
His 3 assists undersell that: the chances he made were worth 6.2 xA.
He gets himself into the box, too: 98th for carries into it, 97th for take-ons attempted.
Two things the wheel doesn't flatter. His shooting is volume more than precision, 0.12 npxG per shot, 44th percentile. And out of possession there is almost nothing: 1st percentile for tackles won, 9th for ball recoveries.
25 league goals (8 penalties) in 2,869 minutes. Roma vs Real Madrid tonight in the Champions League.
Who saved their team the most goals in the 2025/26 Premier League?
Goals prevented = the xGOT of the shots a keeper faced minus the goals he let in, own goals excluded. xGOT rates each shot by where it was actually placed, so it separates shot-stopping from a busy or quiet defence.
Senne Lammens topped the league at +6.4, just ahead of Bart Verbruggen (+6.1) and Gianluigi Donnarumma (+5.8).
The steepest fall belongs to Guglielmo Vicario. He was around +5 after ten matches and finished at -5.2, the worst in the league.
Two big names below zero: Alisson (-2.7) and Nick Pope (-3.5).
And David Raya? He faced just 24.9 xGOT all season, the fewest of any keeper on the chart. Arsenal's defence did the work, and he finished level at -0.1.































