Football Player Ratings: How Panna Works
What are Panna, Piero and Tiento?
Panna is our headline football player rating. It estimates how much better a player’s team does with him on the pitch than with a replacement-level player, after accounting for the teammates and opponents on the pitch at the same time. It is a plus-minus rating, done carefully.
Piero is a composite player rating. It blends Panna with three other ratings into one number for “how good is this player right now?”
Tiento is the team version. It blends team-level Panna, EPR, PSR and an Elo rating into one measure of team strength.
All three are ratings, meaning smoothed estimates of what we expect next, not a record of one match.
How does Panna work?
The raw version of plus-minus (goals scored with a player on the pitch minus goals conceded) is dominated by who he plays with. Panna removes that in four steps.
- RAPM (Regularized Adjusted Plus-Minus). We cut every match into short stretches where both teams’ players on the pitch stay the same. For each stretch we record the expected goals (xG, how likely each shot was to score) for and against. One large regression, called a ridge regression, then solves for each player’s attacking and defensive contribution while holding everyone else constant. The “regularized” part shrinks extreme values toward zero, which stops a handful of lucky stretches producing silly numbers.
- SPM (Statistical Plus-Minus). A simpler model that predicts what RAPM would say about a player using only his per-90 box-score statistics (shots, key passes, tackles, aerial duels). It cannot see teammate effects, but it is stable for players with few minutes.
- xRAPM. We fit RAPM again, but shrink each player toward his SPM prediction instead of toward zero. A player with many reliable minutes ends up near his raw RAPM. A player with few minutes is pulled toward what his box score suggests.
- Panna. The same fit, but pooling every season on file, weighting recent matches more (a 365-day half-life, so a match a year ago counts half as much as one today), and using a career-level SPM as the prior.
Players with fewer than 200 career minutes are pooled into a single replacement group rather than rated individually; everyone else gets their own rating. Panna is offence minus defence, in expected goals (xG) per 90 minutes, and zero is roughly an average player in the data, not replacement level. A Panna of +0.10 means the player’s team creates about 0.10 xG per 90 more than it concedes, compared with an average player, once teammates and opponents are accounted for. Most players sit close to zero: across the roughly 19,000 we rate, the top 5% start at about +0.09 and the top 1% at about +0.15. The very best players in the world reach around +0.30.
What are the other parts: PSR, SPMR and EPR?
- PSR (Player Skill Rating) comes from a box-score regression. Team-level per-90 statistics go in and the match xG or goal difference comes out, and the fitted weights are read back onto each player. It is centred within league and position, with a cross-league adjustment. Its per-match twin is PSV (Player Stat Value).
- SPMR is the career version of SPM: each season’s SPM is fitted against that season’s RAPM, then the seasons are decay-weighted together with a one-season half-life.
- EPR (Expected Possession Rating) is built from the value of each on-ball action, as explained in football possession value. It decays older matches with a 400-day setting and shrinks toward a prior worth about ten matches of evidence, and it is opponent-adjusted.
The naming rule across the site: a rating ends in R and answers “how good is he?”, while a value ends in V and answers “what did he do in this match?” EPR pairs with EPV, PSR with PSV, and Piero with Piero Value, a 50/50 blend of adjusted EPV credit and PSV for one match. Panna has no match-level twin, because a single match holds too little signal for a plus-minus rating.
How are Piero and Tiento calculated?
Neither is a trained model. Both are fixed-weight averages of ratings we have already calculated. Each input is first standardised (z-scored) across the pool being compared, so it is on the same footing, then the weights are applied.
Piero is panna-led: 40% Panna, 30% PSR, 20% SPMR and 10% EPR. Each part is turned into a z-score across every rated player, blended, then rescaled onto the Panna scale so the two can be compared directly. Piero is named after Alessandro Del Piero.
Tiento uses these weights: Panna 40%, Elo 30%, EPR 20%, PSR 10%. The weights are our judgement, not fitted values. We tested a regression of past goal margins on the same inputs, which leaned more toward Panna and Elo, and chose weights that give up some fit for balance. Tiento is expressed in goals better or worse than the average team in its pool on a neutral pitch. The World Cup version is measured against the 48 qualified teams, and the domestic version is measured against every rated club, so the two numbers are not interchangeable. Tiento is named for the ball used in the first half of the 1930 World Cup final.
Where can I see it?
- Football player ratings: Panna, Piero and the components for every rated player.
- Football team ratings: Tiento for every club.
- World Cup team strength: Tiento, Elo, EPR, PSR and Bradley-Terry strength for all 48 qualified teams.
- Football stat definitions: the glossary.
Ratings are calculated offline and published as a table, not scored live during matches.
What are the limits?
- Panna moves slowly. A breakout season takes time to register, and a player with under a season of minutes has wide error bars.
- Goalkeepers and centre-backs face a different mix of actions from attackers, so we publish position-based ranks. Do not compare a defender’s raw Panna with a striker’s.
- Players in a dominant side collect easier actions. The teammate adjustment reduces this but does not remove it.
- Off-ball running, positioning and leadership are invisible to every rating here. We only see the event data.
- Season-level xRAPM is noisy below about 900 minutes.
How accurate is it?
We test Piero by asking how well it predicts results. Across 27,113 matches from 2022 to 2026, each scored only with ratings built before it was played, a win, draw or loss forecast using Piero scores a log-loss of about 0.98. Log-loss measures how surprised a forecast is by what actually happened, and lower is better: a forecast that only knows how often home wins, draws and away wins happen scores 1.07. The current Piero weights beat our previous weights in each of the five seasons.