RPIX 2.0
How the ranking works
RPIX version 2.0 (approved by Mario, 2026-10-01). A score from 0 to 100 for Salvadoran players who are actually playing.
The five rules
- 1You must play. A player needs at least 270 league minutes in the current season (about three full matches). Under that he is not ranked and is listed as "Not playing this season" with the reason.
- 2Money. The Transfermarkt market value, on a log scale: EUR 25,000 or less scores 0 and EUR 25 million or more scores 100. Salary is only public in MLS, so market value is used for everyone.
- 3Minutes this season. The share of his club's league minutes he has played, current season only (not calendar year), scaled by how strong the league is.
- 4Physical, by position. Height compared with the typical height for his position, mixed with an age curve that peaks from 21 to 27. Height matters more for goalkeepers and centre-backs than for full-backs and wingers.
- 5Output. What he does in his league matches this season: goals and assists count most, shots on target a little, cards cost points. Goalkeepers are scored on clean sheets, saves and goals conceded. The result per 90 minutes is compared with a reference for his position and scaled by league strength.
The formula
RPIX = G x (0.35 x M + 0.25 x T + 0.20 x O + 0.20 x P)
- G = 1 if current-season league minutes are 270 or more, otherwise 0 (not ranked).
- M = 100 x clamp( log10( value_eur / 25,000 ) / 3 , 0 , 1 )
- T = clamp( 100 x minutes / ( club_matches_played x 90 ) x L , 0 , 100 )
- O = 100 x clamp( points_per_90 / ref , 0 , 1 ) x L (points per 90 = points / (minutes / 90); see the point table)
- P = h x H + (1 - h) x A, where H = clamp( 50 + 15 x z , 0 , 100 ) and z = (height_cm - mu) / sigma
Results are rounded to one decimal. Unknown inputs are never guessed: a player with a missing input is shown as "Minutes not collected" (or the missing item) and is not ranked.
League factor L
| L | Leagues |
|---|---|
| 1.00 | Top-5 Europe (England, Spain, Italy, Germany, France top flights) |
| 0.85 | MLS and other European top flights |
| 0.70 | Rest of Europe (including Polish and Slovak second tiers), Liga MX, USL Championship |
| 0.50 | Rest of the Americas |
| 0.35 | El Salvador Primera Division |
| 0.20 | El Salvador second tier (Segunda Division) |
Seasons: Europe 2026-27, MLS 2026, El Salvador Apertura 2026, Colombia 2026. Full list on the Leagues page.
Height benchmarks
| Position | mu (cm) | sigma | h |
|---|---|---|---|
| Goalkeeper | 188 | 5 | 0.7 |
| Centre-back | 186 | 5 | 0.6 |
| Centre-forward | 182 | 6 | 0.4 |
| Full-back (LB/RB) | 178 | 5 | 0.2 |
| Midfielder | 178 | 6 | 0.2 |
| Winger | 175 | 6 | 0.2 |
Age curve A
Ages 21 to 27: 100. From 27 it falls in a straight line to 0 at age 35. Below 21 it rises in a straight line from 60 at age 17 to 100 at age 21. Age is in whole years.
Match output: the point table
| Event | Outfield | Goalkeeper |
|---|---|---|
| Goal | +5 | +5 |
| Assist | +3 | +3 |
| Shot on target | +1 | - |
| Clean sheet | - | +3 |
| Save | - | +0.5 |
| Goal conceded | - | -1 |
| Yellow card | -1 | -1 |
| Red card | -3 | -3 |
A second yellow counts as a red only, not also as yellows. Reference points per 90: forwards and wingers 4.0, midfielders 2.5, defenders (centre-backs and full-backs) 1.2, goalkeepers 3.0.
Worked example: Álex Roldán
- Money: EUR 3.5M. M = 100 x log10(3,500,000 / 25,000) / 3 = 100 x log10(140) / 3 = 71.5.
- Physical: right-back, 178 cm, benchmark mean 178, so z = 0 and H = 50. Age 30, so A = 100 x (35 - 30) / (35 - 27) = 62.5. Right-backs weight height at h = 0.2: P = 0.2 x 50 + 0.8 x 62.5 = 60.0.
- Minutes: 1,420 league minutes in 27 Seattle matches, MLS factor 0.85: T = 100 x 1,420 / (27 x 90) x 0.85 = 49.7.
- Output: 0.0 points in 1,420 minutes = 0.00 per 90; defenders' reference is 1.2, so O = 100 x (0.00 / 1.2) x 0.85 = 0.0.
- RPIX = 1 x (0.35 x 71.5 + 0.25 x 49.7 + 0.20 x 0.0 + 0.20 x 60.0) = 49.5.
Voting rules
- Each visitor can mark a player Underrated (+1), Fair (0) or Overrated (-1). Voting again changes the vote.
- A voter is a salted one-way hash of IP address and browser, with a salt that changes daily; no raw IP address is stored. The same person can therefore vote once per player per day.
- Limit: 30 votes per hour per network address.
- Fan score = 50 + 50 x average vote, shown only from 5 votes. The fan vote never changes RPIX.
Data sources and updates
- Every figure on a player page carries its source link and an "as of" date. Market values and heights come from Transfermarkt (supplied by Mario) and the other sources listed; minutes and matches come from the league and stats sites listed per player.
- Data is updated by hand from those sources, and the ranking is recomputed from the stored figures (age is recomputed daily). Anything we cannot confirm is left empty and shown as "not collected".
- Player photos and club crests are not used.
This is a hypothesis
We claim that RPIX v2.0 predicts El Salvador national-team call-ups better than market value alone.
- Test: in each FIFA window we freeze the ranking before the squad is announced, then compute the Spearman rank correlation between the frozen ranking and the call-up list, and do the same for a market-value-only ranking.
- Pass: RPIX beats market-value-only in at least 2 of 3 windows.
- Weights change only with a new published version; they are never tuned quietly.
Changelog: 2.0 - approved by Mario 2026-10-01 (not yet public when amended the same day). Replaces the six-part provisional formula. Adds the must-play gate (270 league minutes), current-season minutes (T), match output (O) and a position-based physical part (P). Weights 35/25/20/20.
