Fahd Moufi
Fahd Moufi, 30, from Morocco ➤ Baltika Kaliningrad, since 2026 ➤ Right-Back ➤ Market value: €900k ➤ * 05/05/1996 in Mulhouse, France

Info
Biographical card, current club and contract facts. Empty fields mean the source did not publish that value.
- Club
- Baltika
- League
- Premier Liga (Russia)
- Position
- Defender - Right-Back
- Shirt
- #18
- Age
- 30
- Date of birth
- 05/05/1996
- Height
- 1,77m
- Foot
- right
- Citizenship
- Morocco, France
- Joined
- 01/07/2026
- Contract until
- 30/06/2028
- Market value
- €900k
- Career fees
- €600k
- Youth clubs
- FC Riedisheim (2004-)
Statistics
Career totals from Transfermarkt: this season, then by competition and by club. Minutes and cards appear when the source recorded them.
This season
| Season | Competition | Apps | Min | G | A | YC | RC |
|---|---|---|---|---|---|---|---|
| 26/27 | Premier Liga | 5 | 148 | 0 | 0 | 0 | 0 |
| 26/27 | Russian Cup | 2 | 149 | 0 | 0 | 1 | 0 |
By competition
| Competition | Apps | G | A |
|---|---|---|---|
| Liga Portugal | 129 | 3 | 9 |
| SuperSport HNL | 33 | 0 | 2 |
| National 1 - Grp. B | 30 | 0 | 0 |
| Premier Liga | 29 | 1 | 1 |
| National 1 - Grp. C | 25 | 1 | 0 |
| Ligue 3 | 19 | 0 | 0 |
| Botola Pro Inwi | 11 | 0 | 0 |
| Taça de Portugal | 8 | 0 | 2 |
| UECL Qualifying | 6 | 0 | 0 |
| Allianz Cup | 6 | 0 | 1 |
| Hrvatski nogometni kup | 4 | 0 | 0 |
| Russian Cup | 3 | 0 | 0 |
| Club World Cup | 2 | 0 | 0 |
| Coupe du Trône Marocaine | 2 | 0 | 0 |
| Coupe de France | 2 | 2 | 0 |
| Coupe Gambardella | 1 | 0 | 0 |
| SuperSport Super Cup | 1 | 0 | 0 |
| Excellence Cup | 0 | 0 | 0 |
By club
| Club | Apps | G | A |
|---|---|---|---|
| Portimonense | 96 | 2 | 11 |
| Olymp. Lyon B | 55 | 1 | 0 |
| Tondela | 47 | 1 | 1 |
| Hajduk Split | 44 | 0 | 2 |
| Orenburg | 25 | 1 | 1 |
| CS Sedan | 21 | 2 | 0 |
| Wydad AC | 15 | 0 | 0 |
| Baltika | 7 | 0 | 0 |
| Olymp. Lyon U19 | 1 | 0 | 0 |
Transfers
Recorded moves between clubs, with fee and market value on the day of the deal when the source has them.
| Date | Season | From | To | Fee | Market value |
|---|---|---|---|---|---|
| 01/07/2026 | 26/27 | Orenburg | Baltika | €500k | €900k |
| 09/08/2025 | 25/26 | Wydad AC | Orenburg | €100k | €1.00m |
| 13/01/2025 | 24/25 | Hajduk Split | Wydad AC | free transfer | €1.00m |
| 11/07/2023 | 23/24 | Portimonense | Hajduk Split | free transfer | €1.50m |
| 30/09/2020 | 20/21 | Tondela | Portimonense | free transfer | €800k |
| 14/07/2017 | 17/18 | Olymp. Lyon B | Tondela | ? | €150k |
| 30/06/2017 | 16/17 | CS Sedan | Olymp. Lyon B | End of loan | €150k |
| 31/08/2016 | 16/17 | Olymp. Lyon B | CS Sedan | loan transfer | - |
| 01/07/2014 | 14/15 | Olymp. Lyon U19 | Olymp. Lyon B | - | - |
| 01/07/2013 | 13/14 | FC Mulhouse U17 | Olymp. Lyon U19 | ? | - |
| 01/07/2011 | 11/12 | Mulhouse Jgd. | FC Mulhouse U17 | - | - |
National
Senior and youth national-team spells: caps, goals, shirt number and whether the player is still in the current pool.
| Team | Caps | Goals | Shirt | Debut | Status |
|---|---|---|---|---|---|
| Morocco | 0 | 0 | 24 | — | Former international |
| Morocco U23 | 1 | 0 | 15 | 2015-06-15 | Former international |
| Morocco U17 | 3 | 0 | 15 | 2013-04-13 | Former international |
| Morocco U20 | 1 | 0 | 15 | 2015-11-11 | Former international |
Market value
Current and peak Transfermarkt valuations, plus the history of changes by club and age. Rankings are relative to the current squad, league and position group.
- Current
- €900k
- Highest
- €1.50m · 31/05/2022
- Last change
- 26/05/2026
| Date | Age | Club | Value |
|---|---|---|---|
| 20/02/2017 | 20 | CS Sedan-Ardennes | €150k |
| 21/08/2017 | 21 | CD Tondela | €150k |
| 07/02/2018 | 21 | CD Tondela | €200k |
| 13/06/2018 | 22 | CD Tondela | €200k |
| 11/01/2019 | 22 | CD Tondela | €250k |
| 07/06/2019 | 23 | CD Tondela | €300k |
| 11/10/2019 | 23 | CD Tondela | €500k |
| 30/12/2019 | 23 | CD Tondela | €700k |
| 08/04/2020 | 23 | CD Tondela | €550k |
| 17/08/2020 | 24 | CD Tondela | €800k |
| 28/01/2021 | 24 | Portimonense SAD | €800k |
| 21/05/2021 | 25 | Portimonense SAD | €900k |
| 27/12/2021 | 25 | Portimonense SAD | €1.20m |
| 31/05/2022 | 26 | Portimonense SAD | €1.50m |
| 01/11/2022 | 26 | Portimonense SAD | €1.50m |
| 16/06/2023 | 27 | Portimonense SAD | €1.50m |
| 18/12/2023 | 27 | HNK Hajduk Split | €1.50m |
| 04/06/2024 | 28 | HNK Hajduk Split | €1.50m |
| 23/12/2024 | 28 | HNK Hajduk Split | €1.00m |
| 28/05/2025 | 29 | Wydad Casablanca | €1.00m |
| 16/12/2025 | 29 | FC Orenburg | €900k |
| 26/05/2026 | 30 | FC Orenburg | €900k |
xG Statistics
Fahd Moufi's xG Statistics block is an Understat shot model for the 2026 season. It does not replace goals and assists — it explains them. xG and xA ask whether the chances were good enough; xGChain and xGBuildup show how often the player was on the ball in moves that became shots. Use minutes as the denominator: a large xG in 80 minutes is a hot streak, the same xG over 1,200 minutes is a role. Figures are rounded to two decimals and stay empty when Understat has no match for this player.
| Season | League | Club | Apps | Min | G | xG | npxG | A | xA | Sh | KP | xGChain |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026 | RFPL | Baltika | 6 | 176 | 0 | 0.22 | 0.22 | 0 | 0.46 | 3 | 3 | 0.91 |
| 2025 | RFPL | FC Orenburg | 24 | 2098 | 1 | 1.56 | 1.56 | 0 | 2.75 | 23 | 29 | 7.51 |
What the columns mean
Read this table as chance quality, not as a scoreboard. A player can outscore xG (finishing well) or lag behind it (missed sitters). Compare rows only when minutes are in the same range.
Apps· Appearances- Matches in which the player was used in this league season, including substitute minutes.
Min· Minutes- Total minutes on the pitch. Useful when comparing output: 1 goal in 90 minutes is not the same as 1 goal in 800.
G· Goals- Goals credited to the player in the Understat shot model for that season.
xG· Expected goals- The quality of shots the player took, expressed as the number of goals an average finisher would score from the same chances. A 0.30 xG shot is a chance that goes in about 3 times in 10.
npxG· Non-penalty xG- Expected goals with penalties removed. This is the cleaner read of open-play and set-piece finishing, because a penalty is usually ~0.76 xG by itself.
A· Assists- Goals that followed the player's last pass. Actual assists, not the model.
xA· Expected assists- The xG value of shots that came directly from the player's key passes. High xA with few assists usually means teammates missed good chances.
Sh· Shots- Total shots recorded by Understat, including blocked and off-target attempts.
KP· Key passes- Passes that led to a shot. This is the volume behind xA.
xGChain· xG chain- Team xG from possessions the player touched. It captures involvement in build-up, not only the shot or the last pass. A midfielder who starts attacks can rank high here without scoring.
xGBuildup· xG buildup- The same possession xG, but excluding the shot-taker and the assist. This is the purest 'how much did this player help create the chance before the final ball' number.
NPG· Non-penalty goals- Goals scored from open play or set pieces, excluding penalties.
Teammates
Aleksandr FilinDefender - Centre-Back
Andrey MendelMidfield - Defensive Midfield
Aymane MouridMidfield - Defensive Midfield
Brayan GilAttack - Centre-Forward
Chinonso OfforAttack - Centre-Forward
Dmitriy BegunDefender - Left-Back
Dmitriy NikitinAttack - Centre-Forward
Eduardo AndersonDefender - Centre-Back