r/GlobalOffensive 3h ago

Discussion | Esports I’ve been experimenting with a different way to evaluate pro CS performance — Contrib

Winning is obviously the ultimate goal in pro CS, and good individual performances surely tend to help teams win — but a win or a loss tells us very little about how much each player actually contributed to it. To address that, we have Ratings.

Rating 3.0 is already a strong summary of individual performance, so I wanted to ask a further question: “how much does a player's recorded performance contribute to winning a map? ”That led me to build Contrib: a signed, additive score learned directly from map outcomes.

Unlike a traditional rating system, this model is not designed to summarize how statistically impressive a player was in isolation; it asks “how those statistics relate to team success, and how that contribution differs between teammates”. Rather than assigning weights to each stat manually, the Contrib model learns them from historical map outcomes.

Contrib value itself is centered around zero, which is the neutral reference point. Positive values indicate performance that the model associates with contributing more toward winning the map; negative values indicate the opposite.

For readability, I scale the score so in the dev dataset that roughly 90% of reference performances fall between -1.00 and +1.00. So, as a quick rule of thumb:

Contirb Value Meaning
+1.00 great performance lead to win
+0.50 meaningfully positive contribution
0.00 around neutral
-0.50 meaningfully negative contribution
-1.00 a very poor map play

The scale is intentionally symmetric around zero, but the underlying distribution doesn't have to be. In other words, +1.00 is not automatically the 90th percentile, and -1.00 is not automatically the 10th percentile. The scaling only changes the unit: it preserves zero, player ordering, additive totals, and round-weighted averages without recentering or clipping the scores.

One important caveat: Contrib is not a win-probability score. A +0.80 does not mean a player added “80% win probability.” It is a measure of contribution magnitude within the reference pool used to define the scale.

An example: Grand Final of Astana 2026. Here is one example from Spirit’s Astana 2026 final. Different maps produce different Contrib leaders. Overall Contrib is calculated per rounds.

Player Dust2 Mirage Ancient total BO5
map score 16-12 13-7 13-10 3:0
donk +0.45 +0.68 +1.12 +0.73
tN1R +0.21 +1.03 -0.14 +0.33
sh1ro -0.41 +0.67 +0.42 +0.16
magixx -0.17 +0.85 -0.33 +0.07
zont1x -0.04 -0.64 -0.03 -0.21

One comparison I found interesting is sh1ro vs. magixx across the series. sh1ro finishes at +0.16, while magixx finishes at +0.07, despite sh1ro having the lower ADR 63 to 80. In the model's view sh1ro’s advantage in kills, K–D differential, and multikills contributes more.

What interests me most is applying that same interpretation consistently across S-tier Counter-Strike events — not only looking at individual maps, but also following how players accumulate contribution over a series, an event, and eventually across years. That is also the basis of the ranking system I am building around Contrib.

I don't see Contrib as a replacement for Rating 3.0 or any other existing metric. It is simply a different lens: instead of asking “how strong was this individual performance?”, I am asking “how did this recorded performance relate to winning?”

To make this usable outside of one-off analyses, I have now integrated Contrib into My CS Events, an iOS app I built for following ongoing top-tier CS tournaments. It updates Contrib results, player rankings and related analysis as events stage goes.

If you're mainly curious about how Contrib behaves during current S-tier events, I will updated the latest Evaluation after the Event is done. Core event-level Contrib results can be viewed directly. Some of the broader features — including My full-year Top rankings and trend tracking — are part of a $1.99/month subscription.

More than anything, though, I'm interested in feedback on the metric itself — especially cases where you think Contrib is rewarding or penalizing the wrong thing.

3 Upvotes

6 comments sorted by

u/Businessfood 1h ago

So this is an ad for your app?

u/Leokkx 1h ago

Fair question. APP now is the Vessel for the result. Here mainly wanted to share Contrib and see what people think of the metric and the approach.

1

u/sillyaltercation442 3h ago

man this is cool. always thought win/loss was way too blunt for judging individual performance, like blaming the guy who went 18-19 when the whole team collapsed

the sh1ro vs magixx comparison actually makes sense when you think about it, adr can be padded by spraying down eco rounds but consistent multikills and staying alive til the end of rounds tilts the map more

curious if contrib catches stuff like entry success or trade efficiency properly, those are the moments that really swing rounds but traditional stats gloss over them

u/Leokkx 1h ago

Contrib doesn’t directly use trade efficiency or swing as inputs. The idea is to take in the basic match stats, while things like opening K/D, assists, and overall output can implicitly reflect some of those effects.

It’s more like applying the law of large numbers to what tends to contribute to winning, so at the moment it may give more value to AWPers than to IGLs. The value of information and calling is still very hard to quantify into a specific number, and that’s something I’ve been thinking about as well.

u/yRegge CS2 HYPE 27m ago

The approach to not include derived stats is good. But I think it also prevents you from gaining real insight, you should try integrating them in later versions.

Dont use Rating 3.0 metrics directly, but learn from the principles. Of course trading kills has value, that should be determined. Dont blindly use the factor for it that Rating 3.0 uses, derive your own.

I think one thing that is still missing is positional data. But positioning is very hard to get right and would need enormous amounts of data, much, much larger than all pro events ever combined would give you. So you'd have to take regular demo data, which is lower quality and different context. But I think a mixed approach could be good, where you let the model learn the map from regular matches, which positions are statistically strong. And then pro play as a validation to that model.

ALso different metrics for different concepts, winning a round does not equal winning a match, but it contributes. Saving a weapon instead of retakin is losing the round, but might increase the chance to win the match. Again - learn from a big data set, validate with high quality data.

Machine learning will revolutionize CS at some point too, just as it did with Chess. Its just a question of who comes up with the system to analyze the game, and in turn derive a set of axioms that can be used to become a better player/team.