Soccer and Basketball's Shared Stat, Kept by One
We spent the better part of a season convinced we had found something portable. The stat was a ratio — productive actions per touch, normalized for role and position — and it appeared in both soccer and basketball in a form that looked, structurally, identical. Same numerator logic, same denominator logic, same intuitive appeal. We built the corpus entry for each sport separately, ran them through the same gates, and graded them side by side. For a while, the calibration looked similar enough that we started treating them as the same instrument wearing different jerseys.
That was the error. Not a dramatic one — the kind that compounds quietly over a grading window before you see it clearly. By the time we noticed, we had rated enough candidates under the shared framework that unwinding it was genuinely tedious. Nadia, who runs most of our cross-sport calibration checks, flagged it first in a note that read, in its entirety: "these are not the same denominator." She was right. We had been measuring similar-looking things that were produced by different underlying structures, and the grading record showed it.
What followed was several weeks of the kind of work that does not feel like insight — going back through the corpus, separating the two populations, and figuring out exactly where the stat held and where it had been flattering us. The answer turned out to be simpler than we expected, and more embarrassing.
A free online course in data analytics with Python: statistics, visualization and finding the signal in the numbers.
Why Touch-Efficiency Looks the Same in Both Sports Until It Doesn't
The ratio we were tracking — call it productive-touch rate — counts the number of times a player converts a touch into a meaningful positive action, divided by total touches. In basketball, a touch is almost always a discrete, observable event: a catch, a dribble sequence, a post catch. The denominator is noisy but bounded. Players in basketball are constantly touching the ball, and even a high-volume player accumulates touches in a range that is stable enough to normalize across games.
In soccer, a touch is the same word describing a different animal. A central midfielder in a possession-heavy system might record two hundred touches in a match. A wide forward in a counterattacking system might record forty. The raw denominator swings so wildly by tactical role that any ratio built on it is measuring something different depending on which player you are looking at. We knew this in the abstract. We had written about it. We had not actually protected the corpus from it.
The mechanism that broke us was substitution depth. In basketball, a player who starts and plays significant minutes accumulates touches in a range that is predictable enough to survive light normalization. In soccer, a player's touch volume is downstream of their team's style, their position within that style, and whether their side had the ball — none of which are stable across opponents. We had a gate that was supposed to catch tactical role instability, and it was the gate soccer kept failing that baseball never reached: a check designed for a different sport's version of the problem, applied here without enough adaptation.
How We Tried to Reconcile the Two Populations Under One Framework
The first attempt was a possession-adjustment. Instead of dividing by raw touches, we divided by touches per unit of team possession time — a way of controlling for the fact that a midfielder on a side that holds the ball for sixty percent of the match simply has more opportunities. This helped. It reduced the variance in the soccer corpus and brought the two distributions closer together visually. We ran it for about six weeks and the calibration ticked upward.
The second attempt was a role-weighting layer. We grouped soccer players into rough positional archetypes — deep-lying, wide, advanced — and applied separate shrinkage coefficients to each group before combining them with the basketball population. This also helped, and for a while we were satisfied enough that we stopped looking closely at the grading splits.
"The problem with a fix that works a little is that you stop asking whether it works enough." — Nadia
She said that during a calibration review in what was, in retrospect, a fairly direct warning. We noted it and moved on. The adjustments were producing acceptable-looking numbers at the aggregate level, and we had other things to grade. What we did not do was grade every rating inside the fixed window without exception — we had quietly started treating the soccer-basketball combined group as a single calibration population, which meant the soccer misses were being averaged against the basketball hits and disappearing.
The gates were also part of the problem. We had built a gate structure for this stat type that was adapted from our basketball work, and when we extended it to soccer we made local modifications without fully documenting what we had changed. By the time we were running both populations, the gate that had been built for one sport was doing work across both without anyone being certain it had been validated for the second.
What the Combined Framework Cost Us in the Grading Record
When we finally split the grading populations apart — basketball candidates graded separately from soccer candidates — the difference was not subtle. The basketball productive-touch rate had held up reasonably well. Stated confidence was within a few percentage points of observed accuracy across most of the window. The soccer version had not. We had been right at roughly the rate you would expect from a much less confident model, but we had not been stating that lower confidence. The gap between what we said and what we got was the definition of a calibration failure.
The specific cost was this: every soccer candidate rated under the combined framework during that period carried a confidence figure that was inflated by the basketball population's better performance. We had not manufactured the number dishonestly — we had simply failed to separate the populations before computing it. The result was the same either way. We had been telling ourselves the method was working in soccer when we had no clean evidence for that claim.
There was also a corpus problem underneath the calibration problem. The touch data we were pulling for soccer players had gone through two different processing pipelines depending on the source, and the normalization step in one of them was slightly different from the other. We had not caught this during intake. It is the kind of thing that is easy to miss and expensive to find, and it meant some of the corpus entries were not comparable even within the soccer population. We had, in a smaller version of a mistake we have made before, built part of the framework around a stat that was not quite the same stat across all its sources.
What Survived the Split and What We Retired from Soccer Entirely
Basketball kept the productive-touch rate, with minor adjustments to the shrinkage coefficients. The grading record supported it, the calibration gap was within acceptable range, and the gate structure had been designed with basketball's touch-distribution properties in mind. It is not a spectacular stat — it correlates with things that are easier to measure — but it survives the process, which is the only bar we apply.
Soccer retired it. Not permanently and not as a statement about the stat's validity in principle — but we do not currently have a version of it that passes the gates cleanly across a range of tactical roles and possession environments. The possession-adjusted version might get there. The role-weighted version might get there. Neither of them has enough graded history yet to say so, and we are not in the business of promoting a stat because it looks promising. Sample size beats recency. That is the oldest rule we have, and it applies to the evaluation of our own methods as directly as it applies to any player.
What we kept from the whole episode was a harder rule about cross-sport portability: a stat that looks structurally identical in two sports is a hypothesis, not a finding. The hypothesis has to be graded separately in each sport, inside its own calibration population, before the two can be discussed in the same sentence. We had been treating visual similarity as evidence. It is not. It is the beginning of a question.
We also added a documentation gate — a check that any stat being evaluated across more than one sport has an explicit record of where the gate structure was adapted and why. It is a small thing. It would have caught this earlier.
Basketball kept the stat because the denominator behaved. Soccer lost it because the denominator was a different thing wearing the same name. I keep wondering whether there is a version of the possession-adjustment that finally stabilizes it — or whether the instability is the finding, and soccer is simply telling us something true about how much of what happens to a player is not about the player at all.
Note: PlayerGem is a fictional analytics shop and these accounts are invented. Nothing here is a pick, a recommendation, or betting or investment advice, and the players, teams and competitions described do not exist.