Metric vocabulary

One metric registry, shared across benchmarks. A metric name means the same quantity wherever it appears.

Transfers scores single matches, so a metric here is a player's value in one appearance. Benchmarks that score season aggregates use the same names for the season equivalent — shots is the shot count in one appearance here, and shots per game there.

The metrics

MetricPer-match valueWhat it counts
goalscountgoals scored
assistscountassists
shotscountshots taken, on and off target
key_passescountpasses leading directly to a shot
dribbles_woncountsuccessful take-ons
total_passescountpasses attempted
pass_successpercentageshare of passes completed
accurate_crossescountcompleted crosses
accurate_long_passescountcompleted long passes
accurate_through_ballscountcompleted through balls
aerials_woncountaerial duels won
tackles_woncounttackles won
interceptionscountinterceptions
clearancescountclearances
outfielder_blockscountblocks by an outfield player
was_dribbledcounttimes beaten by a take-on
dispossessedcounttimes dispossessed in possession
turnoverscountpossession lost by an unsuccessful action
savescountsaves made
xgvalueexpected goals
xg_diffvaluegoals minus expected goals

Names are the Arena's own. Providers describe these quantities differently and sometimes define them differently; each provider is mapped onto this registry offline, in a versioned mapper, and no provider's native column names reach a contract.

Which metrics a case asks for

Three or four per role, not the whole registry:

Broad roleMetrics requested
GKsavestotal_passespass_success
CBclearancesaerials_wontackles_wonpass_success
FBtackles_woninterceptionsaccurate_crossestotal_passes
DMtackles_woninterceptionstotal_passespass_success
CMtotal_passespass_successkey_passestackles_won
AMkey_passesshotsdribbles_wontotal_passes
Wdribbles_wonkey_passesshotsaccurate_crosses
STshotsgoalsaerials_wonkey_passes

Masks are narrow deliberately. A full mask of eight metrics at ten bands is eighty probabilities per case, which the current cohort is far too small to need.

Selection is not only football salience. A metric that is zero in almost every match wastes the band grid, because every zero collapses into a single tie block at the bottom of the percentile scale, leaving a grid with two usable bands. Each role's mask is drawn from the metrics that are non-zero often enough to be resolvable for that role.

Excluded metrics

Ranking fields, yellow cards, red cards, own goals, and man-of-the-match style proxies are excluded across all benchmarks.

Two further exclusions are specific to per-match scoring, because a ratio over a small per-match denominator is not a stable quantity:

  • xg_per_shot — undefined in the many matches where a player takes no shot.
  • any per-90 rate — every appearance counts and there is no minutes floor, so a per-90 rate explodes on short ones. One goal in a seven-minute cameo is not a 12.9-goal performance.

pass_success survives as the one ratio metric, because its per-match denominator is passes attempted, which runs to dozens for any outfielder completing a real shift.

No expected goals in the current contract. xg and xg_diff stay in the vocabulary because they are metrics a benchmark would want, but no per-appearance value is available to populate them, and a metric that cannot be observed cannot be scored. They are absent from every mask.

How bands are derived

Percentile bands are derived from the reference pool, per competition, role and metric — never fixed in the contract:

RuleValue
Derived percompetitionbroad_rolemetric
Bands per metric, at most5
pass_success, at most10
total_passes, at most10
Bands per metric, at least3
Smallest share a band may hold2.5%
Distributions must sum to 1 within0.000001

Three consequences worth understanding before implementing:

Band counts differ within one case. A metric that supports ten bands sits next to one that supports three, in the same request. Assuming a uniform band count is the most common first bug.

A band's width is its share of appearances. Bands are cut at cumulative mass, so a band spanning percentiles 0 to 78 holds 78% of peer appearances. The league base rate is therefore readable straight off the grid you were sent — which is what makes the scoring floor reachable without any privileged access to Arena data.

Grids differ by league. The same percentile edge maps to different real values in different competitions, which is why labels ship with every grid:

total_passes for CM
BandPercentileValues in Premier LeagueShare of appearances
1011.30-7
211.322.28-14
322.232.215-21
432.243.222-27
543.253.528-33
653.563.934-39
763.974.840-46
874.885.847-55
985.896.156-71
1096.110072+

A band’s percentile width is its share of peer appearances, because bands are cut at cumulative mass. Predicting these shares is the league base rate, and scores zero.

Reference pools

A pool is every appearance in a competition, by role, over the last two completed seasons. It describes the league standard for a position rather than a set of players, which is why promoted clubs need no special handling.

Pools are frozen before the season starts and never recomputed during it. A pool that moved would change the percentile of an appearance already scored, silently rewriting a published leaderboard.

CompetitionReference seasonsPooled appearancesSeasons completePool version
Bundesliga2024/2025, 2025/202618,645Yes2026-09-bundesliga-2024-2026-pool-v1
LaLiga2024/2025, 2025/202623,536Yes2026-09-laliga-2024-2026-pool-v1
Ligue 12024/2025, 2025/202618,426Yes2026-09-ligue1-2024-2026-pool-v1
Premier League2024/2025, 2025/202622,608Yes2026-09-epl-2024-2026-pool-v1
Serie A2024/2025, 2025/202623,342Yes2026-09-seriea-2024-2026-pool-v1