Dixon-Coles + bilinear style layer · 1,667 matches · K=4 style dimensions · Monte Carlo simulation
| Layer | 🇫🇷 λ | Δ | 🇦🇷 λ | Δ | 🇫🇷 win | Draw | 🇦🇷 win |
|---|---|---|---|---|---|---|---|
| Base (DC) | 0.840 | — | 1.034 | — | 28.2% | 33.1% | 38.6% |
| + Style | 2.980 | +254.6% | 1.320 | +27.7% | 70.7% | 15.4% | 13.8% |
| + Attr | 3.157 | +5.9% | 1.400 | +6.0% | 71.7% | 14.6% | 13.5% |
λ = expected goals (A scores) · Δ = multiplicative shift from previous layer · win% excludes extra time/penalties
Each column shows the log contribution to expected goals when playing an average tournament opponent. Sorted by net attack − defense strength (full model).
| Team | Atk base | +Style | +Attr | Def base | Style Δ | Attr Δ | xG scored | xG conceded |
|---|---|---|---|---|---|---|---|---|
| 🇧🇷Brazil | 0.597 | +0.135 | +0.124 | -0.632 | +0.142 | -0.061 | 2.353 | 0.577 |
| 🇦🇷Argentina | 0.489 | +0.111 | +0.129 | -0.631 | +0.079 | -0.041 | 2.074 | 0.553 |
| 🇪🇸Spain | 0.593 | +0.130 | +0.166 | -0.532 | +0.189 | -0.068 | 2.431 | 0.663 |
| 🏴England | 0.413 | +0.093 | +0.174 | -0.497 | +0.090 | -0.059 | 1.972 | 0.627 |
| 🇳🇱Netherlands | 0.451 | +0.201 | +0.132 | -0.190 | -0.029 | -0.041 | 2.191 | 0.771 |
| 🇫🇷France | 0.457 | +0.009 | +0.131 | -0.456 | +0.059 | -0.039 | 1.816 | 0.647 |
| 🇵🇹Portugal | 0.439 | +0.117 | +0.122 | -0.341 | +0.058 | -0.057 | 1.971 | 0.712 |
| 🇧🇪Belgium | 0.508 | +0.022 | +0.107 | -0.327 | +0.025 | -0.046 | 1.890 | 0.706 |
| 🇩🇪Germany | 0.589 | +0.092 | +0.130 | -0.175 | +0.160 | -0.062 | 2.250 | 0.926 |
| 🇨🇴Colombia | 0.335 | +0.085 | +0.048 | -0.486 | +0.144 | -0.024 | 1.598 | 0.693 |
| 🇺🇾Uruguay | 0.257 | +0.144 | +0.087 | -0.307 | +0.132 | -0.018 | 1.629 | 0.825 |
| 🇨🇭Switzerland | 0.242 | +0.166 | +0.113 | -0.118 | +0.020 | -0.013 | 1.684 | 0.895 |
| 🇲🇦Morocco | 0.004 | +0.143 | +0.039 | -0.316 | -0.056 | -0.011 | 1.205 | 0.682 |
| 🇭🇷Croatia | 0.248 | +0.109 | +0.108 | -0.218 | +0.151 | -0.014 | 1.593 | 0.922 |
| 🇪🇨Ecuador | 0.155 | +0.062 | -0.004 | -0.238 | +0.055 | +0.025 | 1.238 | 0.853 |
| 🇦🇹Austria | 0.117 | +0.190 | +0.070 | -0.005 | +0.026 | -0.000 | 1.459 | 1.021 |
| 🇸🇪Sweden | 0.142 | +0.194 | +0.073 | -0.019 | +0.122 | +0.007 | 1.505 | 1.116 |
| 🇯🇵Japan | 0.080 | +0.220 | +0.080 | 0.003 | +0.096 | +0.015 | 1.463 | 1.121 |
| 🇨🇮Ivory Coast | 0.009 | +0.228 | +0.021 | -0.012 | +0.025 | +0.051 | 1.294 | 1.065 |
| 🇲🇽Mexico | -0.001 | +0.150 | +0.050 | -0.076 | +0.086 | +0.016 | 1.220 | 1.027 |
| 🏴Scotland | -0.024 | +0.157 | +0.096 | 0.076 | -0.015 | +0.028 | 1.259 | 1.093 |
| 🇮🇷Iran | -0.056 | +0.006 | -0.029 | -0.113 | -0.046 | +0.057 | 0.925 | 0.903 |
| 🇺🇸United States | -0.006 | +0.036 | +0.021 | 0.041 | -0.010 | +0.051 | 1.053 | 1.085 |
| 🇩🇿Algeria | 0.171 | +0.036 | +0.093 | 0.194 | +0.075 | +0.075 | 1.350 | 1.410 |
| 🇹🇷Turkey | 0.110 | +0.082 | +0.021 | 0.102 | +0.122 | +0.051 | 1.237 | 1.317 |
| 🇳🇴Norway | 0.062 | +0.043 | +0.057 | 0.100 | +0.104 | +0.038 | 1.176 | 1.274 |
| 🇵🇾Paraguay | -0.097 | +0.074 | +0.031 | -0.055 | +0.116 | +0.053 | 1.009 | 1.121 |
| 🇨🇿Czech Republic | -0.015 | -0.051 | +0.021 | 0.092 | -0.006 | +0.051 | 0.956 | 1.146 |
| 🇸🇳Senegal | -0.037 | -0.007 | +0.033 | -0.074 | +0.241 | +0.007 | 0.988 | 1.189 |
| 🇰🇷South Korea | -0.138 | +0.131 | +0.030 | 0.031 | +0.098 | +0.085 | 1.024 | 1.239 |
| 🇬🇭Ghana | -0.118 | +0.131 | +0.041 | 0.158 | +0.073 | +0.028 | 1.055 | 1.296 |
| 🇦🇺Australia | -0.024 | +0.021 | -0.003 | 0.120 | +0.111 | +0.075 | 0.994 | 1.359 |
| 🇧🇦Bosnia and Herzegovina | -0.040 | -0.076 | -0.001 | 0.259 | +0.004 | +0.022 | 0.890 | 1.330 |
| 🇹🇳Tunisia | -0.139 | -0.017 | -0.034 | 0.020 | +0.108 | +0.096 | 0.827 | 1.251 |
| 🇪🇬Egypt | -0.144 | -0.086 | -0.051 | 0.026 | +0.054 | +0.077 | 0.755 | 1.171 |
| 🇨🇦Canada | -0.167 | +0.025 | -0.053 | 0.160 | +0.079 | +0.072 | 0.823 | 1.364 |
| 🇨🇩DR Congo | -0.288 | +0.142 | -0.058 | 0.185 | +0.105 | +0.074 | 0.815 | 1.438 |
| 🇿🇦South Africa | -0.349 | -0.083 | -0.086 | 0.154 | -0.099 | +0.091 | 0.595 | 1.158 |
| 🇸🇦Saudi Arabia | -0.435 | +0.078 | -0.015 | 0.311 | -0.088 | +0.088 | 0.690 | 1.365 |
| 🇶🇦Qatar | -0.327 | +0.151 | -0.051 | 0.499 | -0.093 | +0.085 | 0.797 | 1.634 |
| 🇺🇿Uzbekistan | -0.341 | -0.050 | -0.040 | 0.119 | +0.157 | +0.055 | 0.650 | 1.393 |
| 🇨🇻Cape Verde | -0.410 | -0.137 | +0.021 | 0.321 | -0.070 | +0.051 | 0.591 | 1.352 |
| 🇵🇦Panama | -0.369 | -0.134 | -0.044 | 0.325 | +0.095 | +0.082 | 0.579 | 1.652 |
| 🇮🇶Iraq | -0.473 | -0.041 | -0.111 | 0.325 | +0.099 | +0.107 | 0.535 | 1.701 |
| 🇯🇴Jordan | -0.441 | -0.040 | -0.075 | 0.434 | +0.167 | +0.122 | 0.574 | 2.060 |
| 🇳🇿New Zealand | -0.784 | +0.100 | -0.025 | 0.492 | +0.068 | +0.134 | 0.492 | 2.002 |
| 🇭🇹Haiti | -0.506 | +0.042 | -0.085 | 0.607 | +0.218 | +0.079 | 0.578 | 2.469 |
| 🇨🇼Curacao | -0.737 | +0.132 | -0.056 | 0.664 | +0.025 | +0.155 | 0.517 | 2.326 |
Defense column: lower xG conceded = better defense. Style/Attr Δ in defense column shows how much opponents' style boosts their scoring against you (red = they score more on you).
Stage 1 — base layer: Dixon-Coles bivariate Poisson. Attack (α) and defence (β) per team fitted by competition-weighted MLE (competition-tier weights only — no calendar decay or manager discount, both found RPS-inert under forward cross-validation) on 6,377 matches (≥1 WC team) since 2012. ρ = -0.061.
Stage 2 — style layer: K=4 bilinear interaction vectors ui, vj per team, trained as a residual correction on top of the frozen DC base. log(μij) = log(αi) + log(βj) + ui·vj. ρ re-estimated jointly = -0.048.
Stage 3 — attribute correction: Position-stratified FC 26 squad embeddings (GK/DEF/MID/FWD) fed into a ridge-regression linear model (R²=0.097) predicting log goals. Centered residuals γij applied at λ=0.31to log expected goals. Fitted 6/13/2026.
Bracket: Top 2 per group + 8 best 3rd-place teams → R32. Knockout draws resolved as 50/50 (extra time + penalties).
DC fitted 6/13/2026 · style vectors fitted 6/13/2026.