FIFA World Cup 2026 · through the semifinals · 102 matches

Poisson Power Ratings, all 48 teams

Attack–defense Poisson model fit on every completed match, with expected goals from ESPN’s match data. The blended rating (70% xG / 30% goals) and its shrinkage were chosen by 10-fold cross-validation, not by hand.

How to use these numbers

Everything is in log-goals. To get a scoreline: λA = μ · exp(attA − defB) is A’s expected goals per 90′ against B, where μ = 1.17 is the league-average rate (an average attack against an average defense). Feed both λs into independent Poissons for full score probabilities.

Example — Argentina v Japan: λARG = 1.17·e(+0.46 − 0.19) ≈ 1.54, λJPN = 1.17·e(−0.04 − 0.53) ≈ 0.66. Rules of thumb: +0.69 of total rating ≈ outscores an average side 2:1; a 0.10 gap ≈ 55/45 on any single goal.

Attack is goals created above average; defense is goals prevented (higher = better for both). Total = attack + defense. The goals-only and xG-only columns are separate fits with their own CV-tuned shrinkage (τ=0.5 vs τ=1.0 — held-out data trusts raw scorelines less, so it shrinks them harder).

TeamGPBlend ratingTotalAttDefGoals-onlyxG-only
1Spain ESP7
+1.54+0.49+1.05+1.21 #1+1.61 #1
2France FRA7
+1.08+0.57+0.51+0.95 #2+1.08 #3
3Argentina ARG7
+0.99+0.46+0.53+0.78 #3+1.10 #2
4Brazil BRA5
+0.84+0.54+0.30+0.57 #7+0.94 #4
5England ENG7
+0.66+0.38+0.28+0.57 #6+0.67 #8
6Colombia COLcold5
+0.64+0.05+0.59+0.42 #11+0.72 #6
7Mexico MEXhot5
+0.59+0.26+0.33+0.65 #4+0.56 #10
8Senegal SENcold4
+0.55+0.54+0.01+0.25 #17+0.70 #7
9Belgium BELhot6
+0.54+0.37+0.17+0.63 #5+0.41 #14
10Canada CANcold5
+0.50+0.32+0.18+0.16 #19+0.75 #5
11Norway NOR6
+0.47+0.42+0.05+0.31 #14+0.54 #11
12Switzerland SUI6
+0.45+0.19+0.26+0.32 #13+0.53 #12
13Morocco MARhot6
+0.44+0.19+0.25+0.47 #9+0.40 #15
14Germany GER4
+0.42+0.42-0.00+0.36 #12+0.52 #13
15Portugal PORhot5
+0.40+0.20+0.20+0.51 #8+0.33 #17
16Uruguay URUcold3
+0.39+0.20+0.18+0.00 #26+0.60 #9
17Netherlands NEDhot4
+0.29+0.15+0.14+0.46 #10+0.12 #21
18Türkiye TURcold3
+0.16+0.41-0.24-0.21 #32+0.31 #19
19Japan JPNhot4
+0.15-0.04+0.19+0.25 #16+0.06 #23
20Ecuador ECUcold4
+0.14-0.09+0.23-0.21 #33+0.37 #16
21Congo DR COD4
+0.13-0.03+0.16+0.01 #24+0.21 #20
22South Korea KORcold3
+0.13-0.02+0.15-0.13 #29+0.32 #18
23United States USAhot5
+0.10+0.25-0.15+0.25 #15-0.02 #24
24Ivory Coast CIV4
+0.06-0.01+0.07+0.08 #21+0.10 #22
25Iran IRN3
-0.03-0.11+0.08+0.03 #23-0.12 #26
26Cape Verde CPVhot4
-0.05-0.07+0.03+0.13 #20-0.17 #27
27Egypt EGYhot5
-0.05+0.08-0.13+0.21 #18-0.26 #30
28Australia AUShot4
-0.15-0.44+0.29+0.04 #22-0.28 #31
29Austria AUT4
-0.15+0.09-0.24-0.13 #28-0.17 #28
30Algeria ALGcold4
-0.17+0.01-0.18-0.31 #35-0.06 #25
31Croatia CROhot4
-0.21+0.09-0.30+0.00 #25-0.36 #32
32South Africa RSAcold4
-0.26-0.37+0.12-0.21 #34-0.20 #29
33Ghana GHAhot4
-0.28-0.42+0.14-0.06 #27-0.41 #33
34Sweden SWEhot4
-0.38-0.01-0.37-0.19 #31-0.53 #36
35Paraguay PARhot5
-0.49-0.67+0.18-0.14 #30-0.72 #43
36Bosnia-Herzegovina BIH4
-0.50-0.43-0.07-0.33 #36-0.60 #38
37Czechia CZEcold3
-0.52-0.15-0.37-0.45 #39-0.47 #34
38Saudi Arabia KSA3
-0.52-0.38-0.13-0.37 #38-0.59 #37
39Scotland SCO3
-0.52-0.30-0.21-0.36 #37-0.52 #35
40Panama PAN3
-0.59-0.49-0.10-0.49 #41-0.61 #39
41Jordan JOR3
-0.61-0.30-0.31-0.49 #42-0.66 #41
42New Zealand NZLhot3
-0.62-0.06-0.56-0.46 #40-0.77 #45
43Haiti HAI3
-0.69-0.29-0.40-0.60 #43-0.70 #42
44Iraq IRQcold3
-0.79-0.39-0.40-0.91 #47-0.65 #40
45Uzbekistan UZB3
-0.82-0.23-0.59-0.88 #45-0.73 #44
46Qatar QAT3
-1.06-0.34-0.72-0.87 #44-1.07 #46
47Curaçao CUW3
-1.09-0.46-0.63-0.89 #46-1.08 #47
48Tunisia TUN3
-1.12-0.55-0.57-0.94 #48-1.21 #48
above tournament averagebelow averagehot finished well above xGcold finished well below xG (≥5 rank gap)