duelstat

Method

The DS score is a weighted sum of the countable things a player does in a match. It does not rest on anyone else's 0-10 rating; every number traces back to the table on this page.

The formula

DS = raw score × opponent strength

The raw score comes from the table below. Opponent strength is a multiplier derived from the opposing club's previous five seasons (0.85–1.15).

The data provider's own rating field appears on player pages but never feeds the ranking. That field is somebody else's judgement; if it were the backbone, the claim "we do the maths ourselves" would be empty.

Action weights

ActionPointsNote
Goal+6.0
Assist+4.0
Penalty saved+4.0Goalkeeper
Penalty won+1.5
Full-match presence+1.5Scaled by minutes
Save+0.8Goalkeeper
Key pass+0.6
Block+0.4
Shot on target+0.4
Tackle+0.35
Interception+0.35
Successful dribble+0.25
Duel won+0.12
Foul drawn+0.08
Foul committed−0.08
Yellow card−0.8
Goal conceded−0.7Goalkeeper
Penalty missed−2.0
Penalty conceded−2.0
Red card−3.0

Clean sheet — by position

Requires at least 60 minutes on the pitch:

Goalkeeper+4.0
Defender+2.0
Midfielder+1.0
Forward+0.5

Why the keeper share is double the defender's: a goalkeeper's volume of countable actions can never compete with a winger's. In the first calibration the best keeper only reached 100th in the combined table — a misleading picture for anyone looking without a position filter. We did not raise the save value further because save counts inflate behind a bad defence: in one trial a keeper with 74 saves and 2 clean sheets outranked one with 53 saves and 4.

A worked example

A forward's 90-minute match with 2 goals and 1 assist:

ActionCount × PointsContribution
played 90 minutes1 × 1.51.50
2 goals2 × 612.00
1 assist1 × 44.00
3 shots on target3 × 0.41.20
2 key passes2 × 0.61.20
4 duels won4 × 0.120.48
1 successful dribble1 × 0.250.25
2 fouls committed2 × -0.08-0.16
Raw score20.47
If the opponent is the league's strongest (× 1.15)23.54
If the opponent is the league's weakest (× 0.85)17.40

The same match is worth between 23.54 and 17.40 depending on the opponent — a spread of about 35%.

Total, DS/90, Raw/90 — which one?

Rankings offer three measures and each answers a different question. There is no single correct one — it depends what you are asking.

MeasureWhat it isWhat it rewards
Total DSEverything accumulated across the seasonAvailability. Someone who played 34 matches can outrank a star who played 20.
DS / 90Total DS ÷ (minutes ÷ 90)Efficiency on the pitch. Removes the minutes advantage.
Raw / 90The same, before the opponent-strength multiplierRaw output. Its gap to DS/90 is the size of the opponent adjustment.

Why both are shown: when DS/90 and Raw/90 sit close together, the opponent adjustment barely touched that player. When they diverge, the mix of opponents that player faced differs from the league average.

A known weakness of DS/90: substitutes inflate. A fresh forward against a tired defence produces more per minute. That is why the minutes column is always visible and why rankings require at least 900 minutes.

Opponent strength

We take the opposing club's points per game over its previous five seasons, find its percentile among that season's league members, and map it onto 0.85–1.15. Facing the league's strongest side is worth 1.15; the weakest, 0.85.

  • The season being scored is excluded. Otherwise the result of the player's own match would help set that match's weight — a circular definition.
  • Percentile, not Elo. Elo separates teams better statistically, but the answer to "why 1.07?" becomes a simulation history. With a percentile the answer is one sentence.
  • Promoted clubs are not discarded. Their lower-division points carry over at an exchange rate, and that rate is measured rather than guessed: 23 clubs that changed division between 2021 and 2026 give 0.60 (promoted sides 0.587, relegated 0.609 — two independent groups with opposite biases).

What this measure does not do

Within a single league the opponent adjustment does very little. We measured it: in a double round-robin everyone plays everyone twice, so the average multiplier converges on 1.00 and the spread between clubs is only 1.8%. Across a season the gap between DS and the raw score averages 1.5%. Hiding that and marketing this as an "opponent-adjusted ranking" would be dishonest.

The one systematic effect left is that you never play yourself: players at the league's strongest club never face that opponent, so their multiplier averages 0.99, while the weakest club's players average 1.01.

The real opponent control lives in the common-opponent view. There the set of opponents is identical for both players; the comparison is not corrected by a multiplier, it is controlled by construction.

The measure is also blind to:

  • Off-ball movement, pressing triggers, positioning — absent from the dataset.
  • Pass quality: a 30-metre line-breaking pass counts the same as a safe backward one.
  • Game state: a goal at 5-0 counts the same as an 89th-minute equaliser.
  • Teammate quality — producing in a strong squad is easier.

Source

Match, squad and action data come from a licensed data provider. Standings are computed from our own fixture records, so the points in the table and the player scores come from the same set of matches. Leagues and seasons →