Expected goals
FC Sochi expected goals (xG) 2025/2026
Russian Premier League · after 29 matches · updated 1 Oct
FC Sochi's attacking and defensive expected goals in Russian Premier League 2025/2026, compared with the results they produced and with the rest of the competition.
FC Sochi xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | Lokomotiv Moscow | 1.88 |
| #2 | FK Krasnodar | 1.88 |
| #3 | Dynamo Moscow | 1.80 |
| #4 | FC Spartak Moscow | 1.78 |
| #5 | Zenit St. Petersburg | 1.77 |
| #6 | CSKA Moscow | 1.51 |
| #7 | Baltika Kaliningrad | 1.47 |
| #8 | Orenburg | 1.38 |
| #9 | FC Rostov | 1.35 |
| #10 | Akron Togliatti | 1.32 |
| #11 | Akhmat Grozny | 1.30 |
| #12 | Rubin Kazan | 1.14 |
| #13 | Pari Nizhny Novgorod | 1.11 |
| #14 | Dinamo Makhachkala | 1.09 |
| #15 | Krylya Sovetov Samara | 1.02 |
| #16 | FC Sochi | 0.93 |
- League avg
- 1.42
- Total
- 27.04 29 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | Zenit St. Petersburg | 0.85 |
| #2 | FK Krasnodar | 1.02 |
| #3 | Baltika Kaliningrad | 1.14 |
| #4 | FC Rostov | 1.20 |
| #5 | Dinamo Makhachkala | 1.21 |
| #6 | FC Spartak Moscow | 1.22 |
| #7 | Rubin Kazan | 1.23 |
| #8 | Dynamo Moscow | 1.36 |
| #9 | Akhmat Grozny | 1.36 |
| #10 | CSKA Moscow | 1.57 |
| #11 | Lokomotiv Moscow | 1.59 |
| #12 | Orenburg | 1.60 |
| #13 | Krylya Sovetov Samara | 1.79 |
| #14 | Pari Nizhny Novgorod | 1.81 |
| #15 | Akron Togliatti | 1.82 |
| #16 | FC Sochi | 1.94 |
- League avg
- 1.42
- Total
- 56.24 29 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | Zenit St. Petersburg | +0.92 |
| #2 | FK Krasnodar | +0.86 |
| #3 | FC Spartak Moscow | +0.56 |
| #4 | Dynamo Moscow | +0.43 |
| #5 | Baltika Kaliningrad | +0.32 |
| #6 | Lokomotiv Moscow | +0.29 |
| #7 | FC Rostov | +0.16 |
| #8 | CSKA Moscow | -0.07 |
| #9 | Akhmat Grozny | -0.07 |
| #10 | Rubin Kazan | -0.09 |
| #11 | Dinamo Makhachkala | -0.12 |
| #12 | Orenburg | -0.22 |
| #13 | Akron Togliatti | -0.50 |
| #14 | Pari Nizhny Novgorod | -0.69 |
| #15 | Krylya Sovetov Samara | -0.77 |
| #16 | FC Sochi | -1.01 |
- League avg
- 0.00
- Total
- -29.20 29 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | Zenit St. Petersburg | 1.94 |
| #2 | FK Krasnodar | 1.88 |
| #3 | FC Spartak Moscow | 1.74 |
| #4 | Lokomotiv Moscow | 1.62 |
| #5 | Dynamo Moscow | 1.60 |
| #6 | Baltika Kaliningrad | 1.58 |
| #7 | FC Rostov | 1.48 |
| #8 | CSKA Moscow | 1.34 |
| #9 | Akhmat Grozny | 1.31 |
| #10 | Rubin Kazan | 1.28 |
| #11 | Dinamo Makhachkala | 1.28 |
| #12 | Orenburg | 1.28 |
| #13 | Akron Togliatti | 1.06 |
| #14 | Pari Nizhny Novgorod | 0.96 |
| #15 | Krylya Sovetov Samara | 0.93 |
| #16 | FC Sochi | 0.84 |
- League avg
- 1.38
- Total
- 24.42 vs 22 actual pts
Expected goals here are summed over 29 of 30 matches — the rest were played with no xG figure published for them, so the margins compare two different lengths of season.
What the xG says
FC Sochi's underlying numbers are among the weakest in Russian Premier League. They rank #16 for xG difference at -1.01 per match, from low shot volume and low chance quality. Their 28 goals are 0.96 above 27.04 xG, while 22 points are 2.42 below 24.42 xPts — both over the 29 matches with xG.
Actual vs expected
Select a row to chart it across the season.
Goals minus xG, match by match
FC Sochi are 0.96 goals above their xG after 29 matches. The gap was widest at +2.73, against FK Krasnodar on Sat 14/03.
- Goals
- 28
- xG
- 27.04
- Gap
- +0.96
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sat 19/07 | Lokomotiv Moscow | 0 | 0.40 | -0.40 | -0.40 |
| Sat 26/07 | Akron Togliatti | 0 | 0.58 | -0.58 | -0.98 |
| Mon 04/08 | Rubin Kazan | 1 | 0.43 | +0.57 | -0.41 |
| Sun 10/08 | Dynamo Moscow | 1 | 0.18 | +0.82 | +0.41 |
| Sun 24/08 | Baltika Kaliningrad | 0 | 0.47 | -0.47 | -0.06 |
| Sat 30/08 | FC Spartak Moscow | 1 | 0.16 | +0.84 | +0.78 |
| Sun 14/09 | Krylya Sovetov Samara | 0 | 1.42 | -1.42 | -0.64 |
| Mon 22/09 | CSKA Moscow | 1 | 0.83 | +0.17 | -0.47 |
| Sun 28/09 | Dinamo Makhachkala | 0 | 0.56 | -0.56 | -1.03 |
| Sun 05/10 | Pari Nizhny Novgorod | 2 | 2.02 | -0.02 | -1.05 |
| Sun 19/10 | Zenit St. Petersburg | 0 | 0.33 | -0.33 | -1.38 |
| Mon 27/10 | Akhmat Grozny | 4 | 1.64 | +2.36 | +0.98 |
| Sun 02/11 | Orenburg | 1 | 1.10 | -0.10 | +0.88 |
| Sat 08/11 | FC Rostov | 0 | 0.05 | -0.05 | +0.83 |
| Fri 21/11 | Akron Togliatti | 2 | 1.73 | +0.27 | +1.10 |
| Mon 01/12 | Dinamo Makhachkala | 0 | 0.50 | -0.50 | +0.60 |
| Sun 07/12 | Lokomotiv Moscow | 2 | 1.59 | +0.41 | +1.01 |
| Mon 02/03 | FC Spartak Moscow | 2 | 1.15 | +0.85 | +1.86 |
| Sat 07/03 | Pari Nizhny Novgorod | 1 | 0.92 | +0.08 | +1.94 |
| Sat 14/03 | FK Krasnodar | 1 | 0.21 | +0.79 | +2.73 |
| Sat 21/03 | Baltika Kaliningrad | 0 | 0.05 | -0.05 | +2.68 |
| Mon 06/04 | Rubin Kazan | 0 | 2.11 | -2.11 | +0.57 |
| Sun 12/04 | CSKA Moscow | 1 | 1.43 | -0.43 | +0.14 |
| Fri 17/04 | FC Rostov | 1 | 0.76 | +0.24 | +0.38 |
| Tue 21/04 | Krylya Sovetov Samara | 2 | 2.96 | -0.96 | -0.58 |
| Sun 26/04 | Dynamo Moscow | 0 | 0.98 | -0.98 | -1.56 |
| Sun 03/05 | Orenburg | 3 | 1.06 | +1.94 | +0.38 |
| Sun 10/05 | Zenit St. Petersburg | 1 | 0.27 | +0.73 | +1.11 |
| Sun 17/05 | Akhmat Grozny | 1 | 1.15 | -0.15 | +0.96 |
FC Sochi xG trend
Current form -0.27 npxGD per match
The last 6 matches with xG.
Out-created the opponent in 6 of 29 matches. The worst was against FK Krasnodar on Sat 14/03 (-4.17).
- npxG · last 6
- 1.20
- npxGA · last 6
- 1.47
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sat 19/07 | Lokomotiv Moscow | 0.40 | 2.67 | -2.27 | -2.27 |
| Sat 26/07 | Akron Togliatti | 0.58 | 2.15 | -1.57 | -1.92 |
| Mon 04/08 | Rubin Kazan | 0.43 | 1.47 | -1.04 | -1.63 |
| Sun 10/08 | Dynamo Moscow | 0.18 | 1.86 | -1.68 | -1.64 |
| Sun 24/08 | Baltika Kaliningrad | 0.47 | 1.81 | -1.34 | -1.58 |
| Sat 30/08 | FC Spartak Moscow | 0.16 | 2.19 | -2.03 | -1.66 |
| Sun 14/09 | Krylya Sovetov Samara | 1.42 | 1.03 | +0.39 | -1.36 |
| Mon 22/09 | CSKA Moscow | 0.83 | 2.52 | -1.69 | -1.40 |
| Sun 28/09 | Dinamo Makhachkala | 0.56 | 1.59 | -1.03 | -1.36 |
| Sun 05/10 | Pari Nizhny Novgorod | 2.02 | 0.81 | +1.21 | -1.11 |
| Sun 19/10 | Zenit St. Petersburg | 0.33 | 3.37 | -3.04 | -1.28 |
| Mon 27/10 | Akhmat Grozny | 1.64 | 2.35 | -0.71 | -1.23 |
| Sun 02/11 | Orenburg | 1.10 | 1.58 | -0.48 | -1.18 |
| Sat 08/11 | FC Rostov | 0.05 | 1.77 | -1.72 | -1.21 |
| Fri 21/11 | Akron Togliatti | 1.73 | 2.03 | -0.30 | -1.15 |
| Mon 01/12 | Dinamo Makhachkala | 0.50 | 0.84 | -0.34 | -1.10 |
| Sun 07/12 | Lokomotiv Moscow | 1.59 | 4.55 | -2.96 | -1.21 |
| Mon 02/03 | FC Spartak Moscow | 1.15 | 2.38 | -1.23 | -1.21 |
| Sat 07/03 | Pari Nizhny Novgorod | 0.92 | 1.42 | -0.50 | -1.18 |
| Sat 14/03 | FK Krasnodar | 0.21 | 4.38 | -4.17 | -1.33 |
| Sat 21/03 | Baltika Kaliningrad | 0.05 | 2.51 | -2.46 | -1.38 |
| Mon 06/04 | Rubin Kazan | 2.11 | 0.63 | +1.48 | -1.25 |
| Sun 12/04 | CSKA Moscow | 1.43 | 1.51 | -0.08 | -1.20 |
| Fri 17/04 | FC Rostov | 0.76 | 0.29 | +0.47 | -1.13 |
| Tue 21/04 | Krylya Sovetov Samara | 2.96 | 0.82 | +2.14 | -1.00 |
| Sun 26/04 | Dynamo Moscow | 0.98 | 1.72 | -0.74 | -0.99 |
| Sun 03/05 | Orenburg | 1.06 | 1.14 | -0.08 | -0.95 |
| Sun 10/05 | Zenit St. Petersburg | 0.27 | 3.99 | -3.72 | -1.05 |
| Sun 17/05 | Akhmat Grozny | 1.15 | 0.86 | +0.29 | -1.01 |
Each bar is one match's non-penalty xG minus the non-penalty xG against; the line is that difference averaged over the season up to each match, and it finishes on the dashed season average — 0.93 npxG and 1.94 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- number 1 hardest of 16 in Russian Premier League
- +0.05 xG vs league average
- Over 30 league matches
- Last 5
- number 5 hardest of 16 in Russian Premier League
- +0.04 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
+0.05 xG vs league average · over 30 matches · number 1 hardest of 16
- Akhmat Grozny Home −0.13
- Zenit St. Petersburg Away +0.54
- Orenburg Home +0.01
- Dynamo Moscow Away +0.19
- Krylya Sovetov Samara Home −0.42
- FC Rostov Away −0.01
- CSKA Moscow Away −0.11
- Rubin Kazan Home −0.14
- Baltika Kaliningrad Away +0.25
- FK Krasnodar Home +0.59
- Pari Nizhny Novgorod Away −0.27
- FC Spartak Moscow Home +0.54
- Lokomotiv Moscow Home +0.26
- Dinamo Makhachkala Home −0.11
- Akron Togliatti Away −0.48
- FC Rostov Home −0.01
- Orenburg Away +0.01
- Akhmat Grozny Away −0.13
- Zenit St. Petersburg Home +0.54
- Pari Nizhny Novgorod Home −0.27
- Dinamo Makhachkala Away −0.11
- CSKA Moscow Home −0.11
- Krylya Sovetov Samara Away −0.42
- FC Spartak Moscow Away +0.54
- Baltika Kaliningrad Home +0.25
- FK Krasnodar Away +0.59
- Dynamo Moscow Home +0.19
- Rubin Kazan Away −0.14
- Akron Togliatti Home −0.48
- Lokomotiv Moscow Away +0.26
Last 5
+0.04 xG vs league average · over 5 matches · number 5 hardest of 16
- Akhmat Grozny Home −0.13
- Zenit St. Petersburg Away +0.54
- Orenburg Home +0.01
- Dynamo Moscow Away +0.19
- Krylya Sovetov Samara Home −0.42
FC Sochi shots and chance quality
Low volume, low quality. FC Sochi take 9.1 shots a match (league 12.2) at 0.10 npxG a shot (league 0.12), #15 in Russian Premier League for volume and #15 for quality. 60% of their shots come from inside the box (league 64%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | FK Krasnodar | 15.8 |
| #2 | Dynamo Moscow | 15.5 |
| #3 | Lokomotiv Moscow | 14.1 |
| #4 | CSKA Moscow | 13.8 |
| #5 | FC Spartak Moscow | 13.6 |
| #6 | Zenit St. Petersburg | 13.2 |
| #7 | Baltika Kaliningrad | 12.5 |
| #8 | Orenburg | 12.3 |
| #9 | FC Rostov | 11.9 |
| #10 | Akhmat Grozny | 11.8 |
| #11 | Pari Nizhny Novgorod | 11.3 |
| #12 | Akron Togliatti | 11.3 |
| #13 | Rubin Kazan | 10.3 |
| #14 | Dinamo Makhachkala | 9.8 |
| #15 | FC Sochi | 9.1 |
| #16 | Krylya Sovetov Samara | 8.9 |
- League avg
- 12.2
- Total
- 263 shots from 29 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | Lokomotiv Moscow | 0.13 |
| #2 | Zenit St. Petersburg | 0.13 |
| #3 | FC Spartak Moscow | 0.13 |
| #4 | Akron Togliatti | 0.12 |
| #5 | FK Krasnodar | 0.12 |
| #6 | Baltika Kaliningrad | 0.12 |
| #7 | Dynamo Moscow | 0.12 |
| #8 | FC Rostov | 0.11 |
| #9 | Krylya Sovetov Samara | 0.11 |
| #10 | Orenburg | 0.11 |
| #11 | Dinamo Makhachkala | 0.11 |
| #12 | Rubin Kazan | 0.11 |
| #13 | CSKA Moscow | 0.11 |
| #14 | Akhmat Grozny | 0.11 |
| #15 | FC Sochi | 0.10 |
| #16 | Pari Nizhny Novgorod | 0.10 |
- League avg
- 0.12
- Total
- 27.04 npxG from 263 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | Zenit St. Petersburg | 9.8 |
| #2 | FK Krasnodar | 10.0 |
| #3 | FC Spartak Moscow | 10.1 |
| #4 | FC Rostov | 10.3 |
| #5 | Dinamo Makhachkala | 10.8 |
| #6 | Baltika Kaliningrad | 10.8 |
| #7 | Dynamo Moscow | 10.9 |
| #8 | Lokomotiv Moscow | 11.7 |
| #9 | Rubin Kazan | 11.7 |
| #10 | Akhmat Grozny | 12.4 |
| #11 | Orenburg | 13.2 |
| #12 | Pari Nizhny Novgorod | 13.3 |
| #13 | CSKA Moscow | 13.9 |
| #14 | FC Sochi | 15.0 |
| #15 | Krylya Sovetov Samara | 15.4 |
| #16 | Akron Togliatti | 15.7 |
- League avg
- 12.2
- Total
- 436 shots allowed from 29 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | Zenit St. Petersburg | 0.09 |
| #2 | FK Krasnodar | 0.10 |
| #3 | Baltika Kaliningrad | 0.10 |
| #4 | Rubin Kazan | 0.11 |
| #5 | Akhmat Grozny | 0.11 |
| #6 | Dinamo Makhachkala | 0.11 |
| #7 | CSKA Moscow | 0.11 |
| #8 | Krylya Sovetov Samara | 0.12 |
| #9 | Akron Togliatti | 0.12 |
| #10 | FC Rostov | 0.12 |
| #11 | FC Spartak Moscow | 0.12 |
| #12 | Orenburg | 0.12 |
| #13 | Dynamo Moscow | 0.12 |
| #14 | FC Sochi | 0.13 |
| #15 | Pari Nizhny Novgorod | 0.14 |
| #16 | Lokomotiv Moscow | 0.14 |
- League avg
- 0.12
- Total
- 56.24 npxGA from 436 shots
Shot profile
60% inside the box
League avg 64%
From 158 of 263 shots over 29 matches
64% allowed inside the box
League avg 63%
From 280 of 436 shots allowed over 29 matches
FC Sochi home and away xG
| Measure | Home | Away |
|---|---|---|
| Matches | 15 | 15 14 with xG |
| xG / match | 1.01 | 0.85 |
| xGA / match | 1.99 | 1.88 |
| xGD / match | -0.98 | -1.04 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 0.90 | 0.78 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every FC Sochi match by xG
This season
- Matches
- 30 29 with xG
- xG / match
- 0.93
- xGA / match
- 1.94
- xGD / match
- -1.01
- Points
- 22 of 90
- Sun 17/05 Akhmat Grozny H xG 1.15 xGA 0.86 xGD +0.29 xPts 1.60
- Sun 10/05 Zenit St. Petersburg A xG 0.27 xGA 3.99 xGD -3.72 xPts 0.02
- Sun 03/05 Orenburg H xG 1.06 xGA 1.14 xGD -0.08 xPts 1.26
- Sun 26/04 Dynamo Moscow A xG 0.98 xGA 1.72 xGD -0.74 xPts 0.78
- Tue 21/04 Krylya Sovetov Samara H Best underlying xG 2.96 xGA 0.82 xGD +2.14 xPts 2.67
- Fri 17/04 FC Rostov A xG 0.76 xGA 0.29 xGD +0.47 xPts 1.85
- Sun 12/04 CSKA Moscow A xG 1.43 xGA 1.51 xGD -0.08 xPts 1.31
- Mon 06/04 Rubin Kazan H Against the chances xG 2.11 xGA 0.63 xGD +1.48 xPts 2.47
- Sat 21/03 Baltika Kaliningrad A xG 0.05 xGA 2.51 xGD -2.46 xPts 0.06
- Sat 14/03 FK Krasnodar H Weakest underlying xG 0.21 xGA 4.38 xGD -4.17 xPts 0.01
- Sat 07/03 Pari Nizhny Novgorod A xG 0.92 xGA 1.42 xGD -0.50 xPts 0.92
- Mon 02/03 FC Spartak Moscow H xG 1.15 xGA 2.38 xGD -1.23 xPts 0.58
- Sun 07/12 Lokomotiv Moscow H xG 1.59 xGA 4.55 xGD -2.96 xPts 0.19
- Mon 01/12 Dinamo Makhachkala H xG 0.50 xGA 0.84 xGD -0.34 xPts 0.96
- Fri 21/11 Akron Togliatti A xG 1.73 xGA 2.03 xGD -0.30 xPts 1.16
- Sat 08/11 FC Rostov H xG 0.05 xGA 1.77 xGD -1.72 xPts 0.14
- Sun 02/11 Orenburg A xG 1.10 xGA 1.58 xGD -0.48 xPts 0.98
- Mon 27/10 Akhmat Grozny A xG 1.64 xGA 2.35 xGD -0.71 xPts 0.91
- Sun 19/10 Zenit St. Petersburg H xG 0.33 xGA 3.37 xGD -3.04 xPts 0.05
- Sun 05/10 Pari Nizhny Novgorod H xG 2.02 xGA 0.81 xGD +1.21 xPts 2.29
- Sun 28/09 Dinamo Makhachkala A xG 0.56 xGA 1.59 xGD -1.03 xPts 0.53
- Mon 22/09 CSKA Moscow H xG 0.83 xGA 2.52 xGD -1.69 xPts 0.36
- Sun 14/09 Krylya Sovetov Samara A xG 1.42 xGA 1.03 xGD +0.39 xPts 1.69
- Sat 30/08 FC Spartak Moscow A xG 0.16 xGA 2.19 xGD -2.03 xPts 0.13
- Sun 24/08 Baltika Kaliningrad H xG 0.47 xGA 1.81 xGD -1.34 xPts 0.37
- Sun 17/08 FK Krasnodar A
- Sun 10/08 Dynamo Moscow H xG 0.18 xGA 1.86 xGD -1.68 xPts 0.20
- Mon 04/08 Rubin Kazan A xG 0.43 xGA 1.47 xGD -1.04 xPts 0.46
- Sat 26/07 Akron Togliatti H xG 0.58 xGA 2.15 xGD -1.57 xPts 0.34
- Sat 19/07 Lokomotiv Moscow A xG 0.40 xGA 2.67 xGD -2.27 xPts 0.13
Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 4.55. Best and weakest underlying mark the highest and lowest xGD once 5 matches have xG. Against the chances marks a win with xGD of −1.00 or lower, or a loss with +1.00 or higher. P marks a side with at least 0.50 xG from penalties.
FC Sochi in Russian Premier League
Attack
- xG / match #16 of 16
- Shots / match #15 of 16
- Chance quality #15 of 16
- Home xG #16 of 18
- Away xG #15 of 18
Defence
- xGA / match #16 of 16
- Shots allowed #14 of 16
- Chance quality allowed #14 of 16
About the data
- xG data
- Provided by TheStatsAPI, and stored as published.
- Derived metrics
- xGD, per-match rates, rankings and rolling averages are calculated from the match data.
- Model metrics
- xPts is produced by our probability model.