Player
Level Index

by Sharp Lab
Sharp Lab
# Player Team Competition Pos Level Trend

How the level is calculated

Team ELO→Match rating 0-100→Context & result→Match quality→Level 0-1000

Every finished match updates the numbers in this order. All data is collected and processed by Sharp Lab.

1Team strength (ELO)

Every team has an ELO rating that moves after each match. A team starts with the typical level of the first competition it appears in, and the home team gets a +100 advantage.

Ehome = 11 + 10−(Rhome − Raway + 100) / 400      R′ = R + K · G · (W − E)
Wresult: 1 win, 0.5 draw, 0 loss Kcompetition weight × round (final ×1.25, semi-final ×1.125, quarter-final ×1.0625, last 16/32 ×1.03) Ggoal margin: 1 if the difference is 0-1, 1.5 if 2, (11 + diff) / 8 if 3 or more

2Match rating (0-100)

Each player gets a score in ten areas: involvement, finishing, attacking presence, chance creation, passing, ball carrying, defending, duels, discipline and goalkeeping. Every stat x is scaled between a "worst" and a "best" value and averaged with its weight w:

s = 100 · clipx − worstbest − worst      area = Σ wj sjΣ wj

The areas are combined with weights that depend on the position (finishing counts most for a striker, goalkeeping for a keeper). The result is compared with players in the same position and with similar minutes (0-29, 30-59, 60+):

rating = 60 + 12 · z,    z = raw − μposition, minutesσposition, minutes

An average performance is 60 and every standard deviation adds or removes 12 points. Players with fewer than 10 minutes get no rating.

3Context and result

The rating is then adjusted by who you played and how the match ended (R = team ELO):

context = 3 · tanhRopp − Rteam300 + 3 · tanhR̄ − 1320250 + 2 · tanh(ln K28) max ±6
result = [ ±1.5 + 2 · (W − E) + tanhgoal diff3 + defence ] · minutes900.5 max ±5
R̄average ELO of both teams: a match between strong teams scores higher W − Esurprise: winning when you were expected to lose adds more defence+1.5 for a clean sheet, −0.5 per goal conceded, weighted by position (keeper 100 %, centre back 80 %, full back 60 % … striker 0 %)

4Match quality

Not every match counts the same. A factor q between 0.7 and 1.5 gives more weight to strong leagues, strong opponents and important games:

q = clip( level · opponent · importance · result, 0.7, 1.5 )
level = e0.7 (R̄ − 1320) / 400    opponent = e0.15 (Ropp − Rteam) / 400
importance = (K / 28)0.1    result = 1 + 0.03 · tanh(goal diff / 3)

5Level (0-1000)

The level is a running rating, like ELO for players. Each match moves it towards that match's rating r = 10 · rating · q. New players start at the average of their league, μ.

Rnew = (1 − k) · Rbefore + k · r,    k = minutes90 · max(0.06, 0.31 + n / 20)

Early in a career each match moves the level a lot; after many matches (n = full matches played) it becomes stable. Long breaks pull the level back towards the league average:

Rbefore = μ + (Rlast − μ) · 0.9months without playing − 1

The level shown also takes into account how many matches the player has, so a few great games are not enough to reach the top:

Level = μ + (R − μ) · 0.9months since last match − 1 · nn + 15

6What you see on the page

ItemMeaning
LevelCurrent level (0-1000). Only players with a match in the last 6 months.
Trend ▲ ▼Change in level over the last 5 matches (arrow from ±1.5).
Prime levelHighest level reached since 2016, once the player has about 20 full matches.
Form ■■■■□Last 5 matches compared with the expected level, from 1 (worst 10 %) to 5 (best 10 %).
AreasPercentile of each area among active players (50 = median).
ChartsFrom 2016: match data before 2016 is incomplete and not shown.