Executive Summary
34%
Clubs' average hit rate
In total we identified 193 real signings by the clubs of Ligue 1 in the 2023/24 season — academy promotions, loan returns, internal moves and transfers that never went through are excluded. Of these, 184 are included in the hit-rate calculation; 9 are youth investments (under-23 with no game time), classified separately. Signings without relevant minutes in the season count as unsuccessful.
Club Ranking
| Club | League position | Signings | Evaluated | Successful | Fair | Unsuccessful | Hit rate % |
| 1 | Monaco | 2º | 6 | 6 | 4 | 0 | 2 | 67% |
| 2 | Paris Saint Germain | 1º | 11 | 11 | 6 | 2 | 3 | 64% |
| 3 | Reims | 9º | 9 | 9 | 3 | 3 | 3 | 50% |
| 4 | Toulouse | 11º | 7 | 7 | 2 | 3 | 2 | 50% |
| 5 | Clermont Foot | 18º | 6 | 6 | 2 | 2 | 2 | 50% |
| 6 | Le Havre | 15º | 20 | 20 | 9 | 1 | 10 | 48% |
| 7 | Marseille | 8º | 12 | 12 | 3 | 4 | 5 | 42% |
| 8 | Montpellier | 12º | 9 | 8 | 2 | 2 | 4 | 38% |
| 9 | Nice | 5º | 7 | 7 | 2 | 1 | 4 | 36% |
| 10 | Strasbourg | 13º | 8 | 8 | 2 | 1 | 5 | 31% |
| 11 | Lens | 7º | 10 | 9 | 2 | 1 | 6 | 28% |
| 12 | Lorient | 17º | 10 | 9 | 1 | 3 | 5 | 28% |
| 13 | Stade Brestois 29 | 3º | 8 | 8 | 1 | 2 | 5 | 25% |
| 14 | Lyon | 6º | 15 | 14 | 0 | 6 | 8 | 21% |
| 15 | Lille | 4º | 10 | 7 | 1 | 1 | 5 | 21% |
| 16 | Nantes | 14º | 13 | 12 | 0 | 5 | 7 | 21% |
| 17 | Rennes | 10º | 8 | 8 | 0 | 3 | 5 | 19% |
| 18 | Metz | 16º | 12 | 11 | 0 | 3 | 8 | 14% |
| 19 | Saint Etienne | 19º | 12 | 12 | 0 | 0 | 12 | 0% |
The difference between Signings and Evaluated are youth investments (under-23 with no game time in the season), classified separately. Signings without relevant minutes are unsuccessful (Did not deliver).
Season Highlights
The ten signings with the greatest technical impact of the season, according to the Player Impact Score (PIS).
| Player | Club | Pos | Min | G+A | Avg rating | Rating |
| Pierre-Emerick Aubameyang | Marseille | F | 2628 | 16+8 | 7.27 | Excellent |
| Teddy Teuma | Reims | M | 2123 | 6+3 | 7.30 | Excellent |
| Jérémie Boga | Nice | F | 2009 | 5+6 | 7.11 | Excellent |
| Christopher Operi | Le Havre | D | 2447 | 3+4 | 7.15 | Excellent |
| Mohamed Bamba | Lorient | F | 1148 | 8+3 | 7.15 | Excellent |
| Mohamed Daramy | Reims | F | 1656 | 5+5 | 7.07 | Excellent |
| Martín Satriano | Stade Brestois 29 | F | 1878 | 4+4 | 6.99 | Excellent |
| Mousa Al-Taamari | Montpellier | M | 1939 | 5+2 | 6.95 | Excellent |
| Kamory Doumbia | Stade Brestois 29 | M | 870 | 6+5 | 6.98 | Fair |
| Yann Gboho | Toulouse | M | 1199 | 3+2 | 7.18 | Excellent |
Methodology
Club assessment — the universe of signings
The report considers exclusively genuine signings for the first-team squad, identified by the player's effective incorporation into the group between seasons. Excluded from the universe are: academy promotions, loan returns, internal administrative moves and transfers recorded but never completed. The aim is to measure the quality of market decisions — and those alone.
Player Impact Score (PIS)
Each evaluated signing receives a score from 0 to 100 that combines four observable technical dimensions: individual performance (average match ratings over the season), output (goals, assists and decisive actions adjusted for game time), collective performance (starting status and correlation with the club's results) and availability (volume of matches, adjusted for interruptions). High-impact players with reduced game time are promoted through an alternative efficiency criterion.
Outcome classification
The rating tiers are: Excellent and Good (successful signings — a full point in the index), Fair (intermediate performance — half a point) and Below expectations / Did not deliver (unsuccessful signings). Two categories sit outside the calculation, for distinct reasons: Injury (a serious injury prevented a fair assessment) and Investment (an under-23 player with low game time — the return depends on development and cannot be counted for or against the club in this cycle). Signings that did not reach relevant game time in the season are classified as unsuccessful, reflecting the sporting cost of the decision.
A note on scope
This is SigningLab's public, simplified model, developed for transparent retrospective market assessment. SigningLab's commercial solutions for partner clubs use a substantially larger set of variables and dedicated predictive mechanisms, and are not fully reflected in this document.
Appendix — Signings by club
* Youth investment (under-23, no game time in the season) — outside the hit-rate calculation.
Clermont Foot (6 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Andy Pelmard | 34 | 2988 | 0 | 0 | Good |
| Shamar Nicholson | 28 | 1507 | 4 | 3 | Good |
| Habib Keita | 34 | 1279 | 1 | 0 | Did not deliver |
| Chrislain Matsima | 14 | 1179 | 1 | 0 | Fair |
| Bilal Boutobba | 33 | 962 | 1 | 1 | Below expectations |
| Alan Virginius | 14 | 944 | 0 | 2 | Fair |
Le Havre (20 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Arthur Desmas | 33 | 2970 | 0 | 0 | Good |
| Gautier Lloris | 33 | 2779 | 2 | 0 | Good |
| Christopher Operi | 28 | 2447 | 3 | 4 | Excellent |
| Abdoulaye Touré | 30 | 2308 | 2 | 0 | Good |
| Daler Kuzyaev | 30 | 2108 | 2 | 2 | Good |
| Étienne Youte Kinkoue | 34 | 1943 | 0 | 0 | Did not deliver |
| Emmanuel Sabbi | 32 | 1593 | 5 | 1 | Good |
| Loic Négo | 31 | 1579 | 0 | 3 | Fair |
| Yoann Salmier | 32 | 1575 | 1 | 1 | Did not deliver |
| Mohamed Bayo | 23 | 1407 | 5 | 1 | Good |
| André Ayew | 19 | 1109 | 5 | 0 | Good |
| Oussama Targhalline | 15 | 1032 | 0 | 0 | Below expectations |
| Nabil Alioui | 19 | 1024 | 4 | 1 | Good |
| Samuel Grandsir | 31 | 617 | 1 | 1 | Did not deliver |
| Rassoul Ndiaye | 25 | 543 | 0 | 0 | Did not deliver |
| Oualid El Hajjam | 30 | 416 | 0 | 0 | Did not deliver |
| Issa Soumaré | 11 | 236 | 0 | 0 | Did not deliver |
| Mathieu Gorgelin | 30 | 90 | 0 | 0 | Did not deliver |
| Nolan Mbemba | 13 | 49 | 1 | 0 | Did not deliver |
| Nassim Chadli | 0 | 0 | 0 | 0 | Did not deliver |
Lens (10 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Ruben Aguilar | 28 | 1925 | 1 | 3 | Fair |
| Elye Wahi | 28 | 1703 | 9 | 3 | Good |
| Neil El Aynaoui | 26 | 1579 | 1 | 2 | Good |
| Andy Diouf | 33 | 1327 | 1 | 0 | Did not deliver |
| Nampalys Mendy | 24 | 1062 | 0 | 1 | Did not deliver |
| Morgan Guilavogui | 29 | 552 | 2 | 0 | Below expectations |
| Jhoanner Chávez | 9 | 486 | 0 | 0 | Did not deliver |
| Stijn Spierings | 4 | 125 | 0 | 0 | Did not deliver |
| Faitout Maouassa | 9 | 81 | 0 | 0 | Did not deliver |
| Oscar Cortés * | 9 | 50 | 1 | 1 | Investment |
Lille (10 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Tiago Santos | 33 | 2368 | 1 | 2 | Fair |
| Nabil Bentaleb | 26 | 1987 | 0 | 3 | Good |
| Hakon Arnar Haraldsson | 33 | 1289 | 2 | 0 | Below expectations |
| Ivan Cavaleiro | 23 | 787 | 1 | 1 | Did not deliver |
| Samuel Umtiti | 16 | 198 | 0 | 0 | Did not deliver |
| Vito Mannone | 28 | 101 | 0 | 0 | Did not deliver |
| Tiago Morais * | 10 | 43 | 0 | 0 | Investment |
| Ignacio Miramón * | 19 | 40 | 0 | 0 | Investment |
| Andrej Ilić * | 3 | 21 | 0 | 0 | Investment |
| Rafael Fernandes | 5 | 0 | 0 | 0 | Did not deliver |
Lorient (10 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Souleymane Isaak Touré | 26 | 2052 | 1 | 1 | Fair |
| Tiemoué Bakayoko | 22 | 1317 | 2 | 1 | Fair |
| Formose Mendy | 26 | 1260 | 0 | 0 | Did not deliver |
| Mohamed Bamba | 16 | 1148 | 8 | 3 | Excellent |
| Tosin Aiyegun | 22 | 907 | 2 | 0 | Below expectations |
| Imrân Louza | 15 | 865 | 1 | 3 | Fair |
| Badredine Bouanani | 13 | 438 | 1 | 0 | Below expectations |
| Joel Mugisha Mvuka * | 9 | 196 | 0 | 0 | Investment |
| Alfred Gomis | 25 | 0 | 0 | 0 | Did not deliver |
| Julian Pollersbeck | 0 | 0 | 0 | 0 | Did not deliver |
Lyon (15 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Jake O'Brien | 31 | 2370 | 4 | 2 | Fair |
| Clinton Mata | 31 | 2228 | 0 | 3 | Fair |
| Duje Ćaleta-Car | 27 | 1998 | 0 | 0 | Below expectations |
| Ainsley Maitland-Niles | 29 | 1449 | 1 | 4 | Fair |
| Nemanja Matić | 15 | 1259 | 0 | 0 | Fair |
| Saïd Benrahma | 13 | 778 | 3 | 3 | Fair |
| Mama Baldé | 24 | 564 | 2 | 3 | Below expectations |
| Malick Fofana | 17 | 548 | 3 | 0 | Fair |
| Gift Orban | 16 | 481 | 1 | 0 | Did not deliver |
| Skelly Alvero | 9 | 426 | 1 | 0 | Below expectations |
| Orel Mangala | 11 | 397 | 2 | 0 | Below expectations |
| Paul Akouokou | 15 | 309 | 0 | 0 | Did not deliver |
| Adryelson | 15 | 12 | 0 | 0 | Did not deliver |
| Lucas Perri | 16 | 0 | 0 | 0 | Did not deliver |
| Abdoulaye Ndiaye * | 0 | 0 | 0 | 0 | Investment |
Marseille (12 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Pierre-Emerick Aubameyang | 34 | 2628 | 16 | 8 | Excellent |
| Iliman Ndiaye | 30 | 1625 | 3 | 3 | Excellent |
| Geoffrey Kondogbia | 26 | 1457 | 0 | 0 | Fair |
| Ismaila Sarr | 25 | 1447 | 3 | 4 | Good |
| Renan Lodi | 15 | 1237 | 0 | 0 | Fair |
| Michael Murillo | 19 | 1008 | 3 | 2 | Fair |
| Ulisses Garcia | 16 | 906 | 0 | 0 | Did not deliver |
| Quentin Merlin | 12 | 704 | 0 | 1 | Below expectations |
| Bamo Meïté | 25 | 651 | 0 | 0 | Did not deliver |
| Jean Onana | 14 | 570 | 1 | 0 | Below expectations |
| Faris Moumbagna | 14 | 545 | 3 | 1 | Fair |
| Joaquín Correa | 23 | 445 | 0 | 0 | Did not deliver |
Metz (12 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Ismaël Traoré | 29 | 2318 | 3 | 0 | Fair |
| Kevin Van Den Kerkhof | 31 | 1972 | 1 | 2 | Fair |
| Maxime Colin | 27 | 1926 | 0 | 0 | Below expectations |
| Christophe Herelle | 25 | 1620 | 0 | 0 | Did not deliver |
| Ablie Jallow | 21 | 929 | 3 | 2 | Fair |
| Koffi Kouao | 30 | 863 | 0 | 2 | Did not deliver |
| Joel Asoro | 24 | 860 | 2 | 1 | Below expectations |
| Simon Elisor | 16 | 769 | 1 | 0 | Below expectations |
| Benjamin Tetteh | 16 | 290 | 0 | 0 | Did not deliver |
| Óscar Estupiñán | 6 | 267 | 0 | 0 | Below expectations |
| Jean N'Guessan | 14 | 116 | 0 | 0 | Did not deliver |
| Guillaume Dietsch * | 35 | 72 | 0 | 0 | Investment |
Monaco (6 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Wilfried Stephane Singo | 25 | 2187 | 1 | 1 | Good |
| Denis Zakaria | 25 | 2141 | 4 | 0 | Excellent |
| Philipp Köhn | 34 | 1980 | 0 | 0 | Did not deliver |
| Folarin Balogun | 29 | 1694 | 7 | 5 | Good |
| Thilo Kehrer | 15 | 1324 | 1 | 1 | Good |
| Mohammed Salisu | 17 | 1035 | 0 | 1 | Did not deliver |
Montpellier (9 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Bećir Omeragić | 30 | 2312 | 0 | 0 | Fair |
| Akor Adams | 33 | 2264 | 8 | 1 | Good |
| Mousa Al-Taamari | 27 | 1939 | 5 | 2 | Excellent |
| Modibo Sagnan | 14 | 1056 | 2 | 0 | Fair |
| Silvan Hefti | 16 | 712 | 0 | 1 | Did not deliver |
| Tanguy Coulibaly | 18 | 622 | 1 | 0 | Below expectations |
| Kelvin Yeboah | 16 | 283 | 0 | 0 | Did not deliver |
| Yann Karamoh | 14 | 279 | 1 | 0 | Below expectations |
| Belmin Dizdarević * | 10 | 0 | 0 | 0 | Investment |
Nantes (13 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Eray Cömert | 28 | 1998 | 2 | 0 | Fair |
| Douglas Augusto | 25 | 1780 | 0 | 0 | Fair |
| Jean-Kevin Duverne | 27 | 1363 | 0 | 0 | Did not deliver |
| Matthis Abline | 27 | 1049 | 5 | 0 | Fair |
| Nicolas Cozza | 14 | 896 | 0 | 0 | Did not deliver |
| Kelvin Amian | 12 | 800 | 0 | 1 | Fair |
| Tino Kadewere | 14 | 791 | 1 | 0 | Fair |
| Ronaël Pierre-Gabriel | 15 | 603 | 0 | 0 | Did not deliver |
| Benie Traore | 15 | 516 | 0 | 1 | Below expectations |
| Adson | 8 | 238 | 0 | 0 | Below expectations |
| Marquinhos * | 11 | 161 | 0 | 0 | Investment |
| Denis Petrić | 16 | 23 | 0 | 0 | Did not deliver |
| Lamine Diack | 9 | 1 | 0 | 0 | Did not deliver |
Nice (7 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Jérémie Boga | 28 | 2009 | 5 | 6 | Excellent |
| Morgan Sanson | 30 | 1979 | 2 | 3 | Good |
| Mohamed-Ali Cho | 17 | 864 | 1 | 2 | Fair |
| Romain Perraud | 29 | 376 | 0 | 1 | Did not deliver |
| Valentin Rosier | 5 | 59 | 0 | 0 | Did not deliver |
| Salvatore Sirigu | 10 | 0 | 0 | 0 | Did not deliver |
| Maxime Dupé | 15 | 0 | 0 | 0 | Did not deliver |
Paris Saint Germain (11 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Manuel Ugarte | 33 | 1933 | 0 | 2 | Below expectations |
| Lucas Hernández | 28 | 1915 | 1 | 1 | Good |
| Milan Škriniar | 25 | 1624 | 0 | 0 | Fair |
| Ousmane Dembélé | 28 | 1509 | 3 | 8 | Excellent |
| Kangin Lee | 24 | 1471 | 3 | 4 | Good |
| Gonçalo Ramos | 32 | 1419 | 11 | 1 | Good |
| Bradley Barcola | 27 | 1376 | 4 | 7 | Good |
| Randal Kolo Muani | 28 | 1265 | 6 | 5 | Good |
| Marco Asensio | 24 | 1113 | 4 | 5 | Fair |
| Lucas Beraldo | 16 | 1010 | 1 | 0 | Did not deliver |
| Arnau Tenas | 19 | 528 | 0 | 1 | Did not deliver |
Reims (9 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Teddy Teuma | 28 | 2123 | 6 | 3 | Excellent |
| Joseph Okumu | 23 | 1741 | 1 | 0 | Fair |
| Mohamed Daramy | 25 | 1656 | 5 | 5 | Excellent |
| Keito Nakamura | 26 | 1390 | 4 | 1 | Good |
| Reda Khadra | 34 | 1380 | 1 | 3 | Fair |
| Sergio Akieme Rodriguez | 15 | 818 | 2 | 0 | Below expectations |
| Josh Wilson-Esbrand | 11 | 467 | 1 | 1 | Fair |
| Amine Salama | 18 | 313 | 0 | 0 | Did not deliver |
| Benjamin Stambouli | 10 | 298 | 0 | 1 | Did not deliver |
Rennes (8 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Ludovic Blas | 32 | 1571 | 4 | 1 | Fair |
| Enzo Le Fée | 26 | 1533 | 0 | 1 | Fair |
| Nemanja Matić | 13 | 1027 | 0 | 0 | Fair |
| Azor Matusiwa | 14 | 795 | 0 | 1 | Below expectations |
| Alidu Seidu | 14 | 600 | 0 | 0 | Did not deliver |
| Bertuğ Özgür Yıldırım | 29 | 467 | 0 | 1 | Did not deliver |
| Fabian Rieder | 23 | 373 | 1 | 0 | Did not deliver |
| Gauthier Gallon | 34 | 0 | 0 | 0 | Did not deliver |
Saint Etienne (12 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Dylan Chambost | 1 | 90 | 0 | 0 | Did not deliver |
| Léo Pétrot | 1 | 90 | 0 | 0 | Did not deliver |
| Florian Tardieu | 1 | 90 | 0 | 0 | Did not deliver |
| Dylan Batubinsika | 1 | 90 | 0 | 0 | Did not deliver |
| Irvin Cardona | 1 | 86 | 1 | 0 | Did not deliver |
| Mathieu Cafaro | 1 | 85 | 0 | 2 | Did not deliver |
| Dennis Appiah | 1 | 18 | 0 | 0 | Did not deliver |
| Nathanael Mbuku | 1 | 11 | 0 | 0 | Did not deliver |
| Thomas Monconduit | 1 | 0 | 0 | 0 | Did not deliver |
| Benjamin Bouchouari | 1 | 0 | 0 | 0 | Did not deliver |
| Stéphane Diarra | 0 | 0 | 0 | 0 | Did not deliver |
| Gaëtan Charbonnier | 0 | 0 | 0 | 0 | Did not deliver |
Stade Brestois 29 (8 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Martín Satriano | 33 | 1878 | 4 | 4 | Excellent |
| Jonas Martin | 31 | 1198 | 0 | 1 | Fair |
| Kamory Doumbia | 25 | 870 | 6 | 5 | Fair |
| Julien Le Cardinal | 25 | 489 | 0 | 0 | Did not deliver |
| Billal Brahimi | 26 | 255 | 0 | 0 | Did not deliver |
| Grégoire Coudert | 34 | 188 | 0 | 0 | Did not deliver |
| Jordan Amavi | 14 | 91 | 1 | 0 | Did not deliver |
| Loïc Rémy | 0 | 0 | 0 | 0 | Did not deliver |
Strasbourg (8 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Dilane Bakwa | 33 | 2186 | 3 | 6 | Excellent |
| Emanuel Emegha | 28 | 2084 | 8 | 1 | Excellent |
| Abakar Sylla | 31 | 1792 | 2 | 0 | Below expectations |
| Ângelo | 22 | 1103 | 0 | 3 | Fair |
| Andrey Santos | 13 | 830 | 1 | 0 | Below expectations |
| Jessy Deminguet | 31 | 720 | 0 | 0 | Did not deliver |
| Saidou Sow | 22 | 717 | 0 | 1 | Did not deliver |
| Matthieu Dreyer | 6 | 0 | 0 | 0 | Did not deliver |
Toulouse (7 signings)
| Player | Matches | Minutes | Goals | Assists | Rating |
|---|
| Cristian Cásseres Jr. | 34 | 1960 | 1 | 3 | Fair |
| Aron Dønnum | 28 | 1616 | 0 | 1 | Fair |
| Frank Magri | 29 | 1456 | 5 | 2 | Excellent |
| Niklas Schmidt | 26 | 1293 | 1 | 1 | Fair |
| Yann Gboho | 16 | 1199 | 3 | 2 | Excellent |
| César Gelabert | 33 | 771 | 1 | 2 | Did not deliver |
| Ibrahim Cissoko | 20 | 252 | 1 | 1 | Did not deliver |