No, São Paulo have taken 42 points over 31 Campeonato Brasileiro games in 2026, within 4.45 of the 46.45 expected points (xPts) their chances were worth, so their results match their performances.
São Paulo create 1.48 expected goals (xG) per game over 31 Campeonato Brasileiro games in 2026, 45.78 in all, and have scored 36 goals from those chances, 9.78 fewer than that xG would expect.
São Paulo allow 1.21 expected goals against (xGA) per game over 31 Campeonato Brasileiro games in 2026, 37.46 in all, and have conceded 35 goals from those chances, 2.46 fewer than that xGA would expect.
Jonathan Calleri has the most expected goals (xG) for São Paulo over 31 Campeonato Brasileiro games in 2026, 9.64 xG in 26 appearances, and has scored 10 goals; Luciano is next with 8.73 xG.
São Paulo's results and their chances agree, within 4.5 points of xPts over 31 games. There is no regression case either way. What the table says is roughly what they have earned.
| Window | Games | xG | Goals | Goals minus xG | xGA | Conceded | xGA minus conceded | xPts | Points | Points minus xPts |
|---|---|---|---|---|---|---|---|---|---|---|
| 26/ | 31 | 45.78 | 36 | -9.78 | 37.46 | 35 | +2.46 | 46.45 | 42 | -4.45 |
| Last 10 | 10 | 17.62 | 10 | -7.62 | 11.36 | 10 | +1.36 | 17.94 | 16 | -1.94 |
| Last 5 | 5 | 7.27 | 5 | -2.27 | 6.24 | 5 | +1.24 | 7.85 | 9 | +1.15 |
| Home | 16 | 27.08 | 25 | -2.08 | 16.39 | 13 | +3.39 | 27.65 | 33 | +5.35 |
| Away | 15 | 18.70 | 11 | -7.70 | 21.07 | 22 | -0.93 | 18.80 | 9 | -9.80 |
| Date | Competition | Opponent | Score | xG | xGA | xPts | Points | Deserved result |
|---|---|---|---|---|---|---|---|---|
| 18 Oct | Campeonato Brasileiro | Vasco (H) | 1-0 | 1.16 | 1.13 | 1.38 | 3 | W |
| 11 Oct | Campeonato Brasileiro | Vitória (H) | 2-1 | 2.14 | 1.11 | 2.03 | 3 | W |
| 8 Oct | Campeonato Brasileiro | Cruzeiro (A) | 2-0 | 0.98 | 2.72 | 0.48 | 0 | L |
| 2 Oct | Campeonato Brasileiro | Santos (H) | 1-2 | 1.81 | 0.65 | 2.18 | 0 | W |
| 20 Sep | Campeonato Brasileiro | Internacional (H) | 1-0 | 1.18 | 0.63 | 1.78 | 3 | W |
| 12 Sep | Campeonato Brasileiro | Palmeiras (A) | 2-0 | 1.08 | 2.43 | 0.63 | 0 | L |
| 5 Sep | Campeonato Brasileiro | Atlético-MG (H) | 2-0 | 2.04 | 0.64 | 2.30 | 3 | W |
| 29 Aug | Campeonato Brasileiro | Bragantino (H) | 2-1 | 2.62 | 0.75 | 2.46 | 3 | W |
| 23 Aug | Campeonato Brasileiro | Chapecoense (A) | 1-0 | 3.22 | 0.91 | 2.55 | 0 | W |
| 16 Aug | Campeonato Brasileiro | Coritiba (H) | 1-1 | 1.39 | 0.39 | 2.15 | 1 | W |
| 8 Aug | Campeonato Brasileiro | Grêmio (A) | 2-1 | 1.98 | 1.35 | 1.78 | 0 | W |
| 26 Jul | Campeonato Brasileiro | Flamengo (A) | 1-1 | 0.42 | 2.34 | 0.30 | 1 | L |
| 23 Jul | Campeonato Brasileiro | Athletico PR (H) | 1-2 | 1.20 | 2.20 | 0.80 | 0 | L |
| 31 May | Campeonato Brasileiro | Remo (A) | 1-0 | 0.97 | 0.71 | 1.55 | 0 | W |
| 23 May | Campeonato Brasileiro | Botafogo (H) | 1-1 | 1.65 | 1.04 | 1.79 | 1 | W |
| 16 May | Campeonato Brasileiro | Fluminense (A) | 2-1 | 1.15 | 1.13 | 1.37 | 0 | W |
| 10 May | Campeonato Brasileiro | Corinthians (A) | 3-2 | 0.63 | 1.22 | 0.87 | 0 | L |
| 3 May | Campeonato Brasileiro | Bahia (H) | 2-2 | 1.45 | 2.32 | 0.90 | 1 | L |
| 26 Apr | Campeonato Brasileiro | Mirassol (H) | 1-0 | 1.50 | 1.34 | 1.48 | 3 | W |
| 18 Apr | Campeonato Brasileiro | Vasco (A) | 2-1 | 2.78 | 2.28 | 1.66 | 0 | W |
| 11 Apr | Campeonato Brasileiro | Vitória (A) | 2-0 | 0.94 | 0.97 | 1.32 | 0 | L |
| 4 Apr | Campeonato Brasileiro | Cruzeiro (H) | 4-1 | 1.74 | 1.31 | 1.66 | 3 | W |
| 1 Apr | Campeonato Brasileiro | Internacional (A) | 1-1 | 0.85 | 1.18 | 1.09 | 1 | L |
| 22 Mar | Campeonato Brasileiro | Palmeiras (H) | 0-1 | 0.05 | 0.21 | 0.89 | 0 | D |
| 18 Mar | Campeonato Brasileiro | Atlético-MG (A) | 1-0 | 0.56 | 1.07 | 0.91 | 0 | L |
| 15 Mar | Campeonato Brasileiro | Bragantino (A) | 1-2 | 0.74 | 0.68 | 1.36 | 3 | D |
| 12 Mar | Campeonato Brasileiro | Chapecoense (H) | 2-0 | 2.00 | 0.54 | 2.35 | 3 | W |
| 25 Feb | Campeonato Brasileiro | Coritiba (A) | 0-1 | 1.52 | 1.11 | 1.66 | 3 | W |
| 12 Feb | Campeonato Brasileiro | Grêmio (H) | 2-0 | 4.43 | 0.43 | 2.80 | 3 | W |
| 4 Feb | Campeonato Brasileiro | Santos (A) | 1-1 | 0.88 | 0.97 | 1.27 | 1 | L |
| Player | Position | Apps | Minutes | xG | Goals | Goals minus xG | xG per 90 |
|---|---|---|---|---|---|---|---|
| Ferreirinha | attacker | 23 | 808 | 2.02 | 4 | +1.98 | 0.23 |
| Matheus Dória | defender | 4 | 226 | 0.45 | 1 | +0.55 | 0.18 |
| Sabino | defender | 23 | 1769 | 0.48 | 1 | +0.52 | 0.02 |
| Danielzinho | midfielder | 25 | 1706 | 0.61 | 1 | +0.39 | 0.03 |
| Iago | defender | 9 | 581 | 0.63 | 1 | +0.37 | 0.10 |
| Jonathan Calleri | attacker | 26 | 2064 | 9.64 | 10 | +0.36 | 0.42 |
| Luciano | attacker | 24 | 1777 | 8.73 | 9 | +0.27 | 0.44 |
| Pablo Maia | midfielder | 21 | 1221 | 0.84 | 1 | +0.16 | 0.06 |
| Lucas Moura | attacker | 10 | 388 | 1.16 | 1 | -0.16 | 0.27 |
| Lucas Ramon | defender | 21 | 1580 | 0.50 | 0 | -0.50 | 0.03 |
| Wendell | defender | 20 | 1355 | 0.54 | 0 | -0.54 | 0.04 |
| Cauly | midfielder | 15 | 705 | 1.66 | 1 | -0.66 | 0.21 |
| Rafael Tolói | defender | 12 | 859 | 0.91 | 0 | -0.91 | 0.10 |
| Gustavo Santana | midfielder | 7 | 289 | 2.18 | 1 | -1.18 | 0.68 |
| Marcos Antônio | midfielder | 24 | 1817 | 2.19 | 1 | -1.19 | 0.11 |
| Artur | attacker | 22 | 1763 | 4.44 | 3 | -1.44 | 0.23 |
| Damián Bobadilla | midfielder | 20 | 1476 | 1.54 | 0 | -1.54 | 0.09 |
| Gonzalo Tapia | attacker | 11 | 281 | 1.78 | 0 | -1.78 | 0.57 |
| # | Team | MP | xG | Goals | xGA | Conceded | xPts | Points | Points minus xPts |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Palmeiras | 31 | 43.1 | 54 | 31.4 | 22 | 49.6 | 66 | +16.4 |
| 2 | Flamengo | 31 | 53.7 | 61 | 31.6 | 25 | 55.9 | 67 | +11.1 |
| 3 | Athletico PR | 31 | 42.3 | 49 | 36.9 | 37 | 45.8 | 53 | +7.2 |
| 4 | Fluminense | 31 | 42.3 | 49 | 40 | 39 | 44 | 51 | +7 |
| 5 | Atlético Mineiro | 31 | 42.1 | 42 | 38.9 | 35 | 44.7 | 50 | +5.3 |
| 6 | Coritiba | 31 | 32.9 | 38 | 48.5 | 49 | 33.7 | 39 | +5.3 |
| 7 | Cruzeiro | 31 | 45.2 | 50 | 41.3 | 46 | 46.1 | 51 | +4.9 |
| 8 | Bahia | 31 | 48.7 | 44 | 42.7 | 39 | 46.9 | 49 | +2.1 |
| 9 | Vitória | 30 | 30.5 | 33 | 43.6 | 44 | 34.3 | 36 | +1.7 |
| 10 | Santos | 31 | 41.1 | 48 | 38.2 | 46 | 44.2 | 45 | +0.8 |
| 11 | Grêmio | 31 | 32.4 | 34 | 51.2 | 44 | 32.1 | 31 | -1.1 |
| 12 | Botafogo | 31 | 39.2 | 44 | 42.8 | 48 | 40.8 | 39 | -1.8 |
| 13 | Mirassol | 31 | 41.2 | 36 | 47.8 | 44 | 38.9 | 36 | -2.9 |
| 14 | São Paulo | 31 | 45.8 | 36 | 37.5 | 35 | 46.4 | 42 | -4.4 |
| 15 | Bragantino | 31 | 46.3 | 39 | 41.1 | 36 | 46 | 41 | -5 |
| 16 | Corinthians | 30 | 28 | 31 | 33.3 | 38 | 37.6 | 32 | -5.6 |
| 17 | Remo | 31 | 35.1 | 34 | 45.9 | 49 | 35 | 26 | -9 |
| 18 | Internacional | 31 | 41.5 | 33 | 38.8 | 40 | 44.1 | 32 | -12.1 |
| 19 | Chapecoense | 30 | 33.7 | 30 | 52.8 | 62 | 31.4 | 18 | -13.4 |
| 20 | Vasco da Gama | 30 | 52 | 36 | 32.9 | 43 | 50.4 | 35 | -15.4 |