---
title: "How much Fenomeno did we get?"
summary: "A notebook trying to answer \"How much of R9 was there to (probably) get?\""
date: 2026-07-12
external_url: "https://www.kaggle.com/code/axelst/how-much-fenomeno-did-we-get"
links:
  - "https://www.kaggle.com/datasets/axelst/ronaldo-r9-nazario-complete-career-dataset"
  - "https://www.kaggle.com/code/axelst/how-much-fenomeno-did-we-get"
  - "https://www.kaggle.com/code/axelst/just-how-good-was-r9"
---

- Votes: 2
- Language: python
- Version: 3
- Updated: 2026-10-26
- Data: [axelst/ronaldo-r9-nazario-complete-career-dataset](https://www.kaggle.com/datasets/axelst/ronaldo-r9-nazario-complete-career-dataset)

[Kaggle](https://www.kaggle.com/code/axelst/how-much-fenomeno-did-we-get)

The companion notebook, [Just how good was R9?](https://www.kaggle.com/code/axelst/just-how-good-was-r9),
covered the first of this project's two questions. This one takes the second: how
much of that player did we get, and how much was there to get if his knees had
held?

The answer is a counterfactual, so the assumptions are listed up front and kept
narrow:

1. **Fixtures are fixed.** Only matches his teams actually played while he sat
   out with a knee injury get filled. No invented seasons, no moved transfers.
   The career still ends in June 2011.
2. **Observed stays observed.** No match is replayed, no goal re-simulated. The
   counterfactual adds to the record and never edits it.
3. **Inputs come from his own record.** Scoring rate, availability and minutes
   per appearance are estimated from his own play around each absence.
4. **Uncertainty is carried through.** Jeffreys posteriors on rates and
   availability, Poisson goals, a simulated 95% interval on every headline
   number.

The frame is the same as the companion notebook: senior matches from the match
log, club plus full internationals. 598 games, 47,241 minutes, 392 goals.

Rules 1 to 4 define the first tier (sections 1 to 5). It patches the observed
career and nothing else. Section 6 relaxes rules 2 and 3 once, for the
trajectory tier. That tier asks what the career looks like if his twenties are
never interrupted, and borrows the missing aging curve from two later careers.
Sections 8 and 9 list what stays out.

## 1. What the knees took

Eleven injury spells are on record. Six are knee injuries, and they account for
1,130 of the 1,433 days lost. The match log links every match his teams played
during an absence to its injury, so the cost counts in senior matches, not just
days.

| injury | from_date | until_date | days_out | age | senior_games_missed |
| --- | --- | --- | --- | --- | --- |
| Patellar tendon tear | 1995-12-11 00:00:00 | 1996-04-22 00:00:00 | 134 | 19.2 | 26 |
| Bruised knee | 1998-11-08 00:00:00 | 1998-12-04 00:00:00 | 27 | 22.1 | 6 |
| Knee problems | 1999-01-18 00:00:00 | 1999-02-27 00:00:00 | 41 | 22.3 | 7 |
| Patellar tendon rupture | 1999-11-22 00:00:00 | 2000-04-10 00:00:00 | 141 | 23.2 | 27 |
| Patellar tendon rupture | 2000-04-12 00:00:00 | 2001-09-17 00:00:00 | 524 | 23.6 | 87 |
| Patellar tendon rupture | 2008-02-13 00:00:00 | 2008-11-01 00:00:00 | 263 | 31.4 | 27 |

For modeling, the six spells merge into four contiguous absence windows:

- **The void, 22 November 1999 to 17 September 2001.** The partial rupture of
  the right patellar tendon, the return into a cup final four and a half months
  later, the complete rupture six minutes into that return, and the 524 days
  after it. His teams played 115 senior matches across this window. He played
  one of them, for six minutes. Ages 23.2 to 25.0: the start of the ages where
  the sports-economics literature places a forward's peak *[external: Dendir
  2016]*.
- **The third rupture, February to November 2008**, the left knee this time, at
  age 31. 27 senior matches missed.
- **The first surgery, December 1995 to April 1996**, the right patellar tendon
  at age 19, at PSV. 26 senior matches missed.
- **The flares of 1998-99**, two knee absences in the Inter season he played on
  a sore tendon. 13 senior matches missed.

The other five spells (hamstring, thigh, muscle tear, broken tibia, broken hand)
are not knee injuries and stay in place in every scenario below.

## 2. The fill rule

Each filled window needs three numbers: how many of the offered matches he would
have played, for how many minutes, and at what scoring rate. All three come from
his own record near the window, under one rule applied identically everywhere:

- **Local context**: all senior matches within 18 months of either edge of the
  window (widened to 24, then 36 months if that holds fewer than 2,000 played
  minutes), excluding matches that fall inside any other filled window.
- **Availability**: of the local squad matches he was not injured for, the share
  he actually played. This keeps the ordinary reasons a fit player misses
  matches (rotation, suspension, non-selection) at their locally observed
  frequency.
- **Minutes**: his local minutes per appearance.
- **Rate**: his local goals per 90 on played minutes.

Each filled match contributes Bernoulli(availability) × minutes × rate / 90
expected goals. The simulation draws availability from a Jeffreys Beta
posterior, the rate from a Jeffreys Gamma posterior, and realized goals from a
Poisson. It runs 20,000 times with a fixed seed.

The rule has two properties. It is conservative: the local context around the
void includes the 1998-99 season played on a sore tendon and the slow comeback
months of 2001-02. Both pull the fill's rate and availability down. It is also
uniform: no window gets a hand-picked rate, and the healthy stretch it is
calibrated on (next cell) gets no special treatment.

**Calibration.** Before filling anything real, the rule is pointed at a healthy
stretch. Pretend the 1997-98 season, from August to May, was a knee absence, and
predict it from its surroundings with the same machinery.

The rule recovers a healthy season to within about 10%, erring low on all three
quantities. The fills below carry the same downward bias.

## 3. Three worlds

What to fill is a judgment, so there are three scenarios rather than one number.

- **W1, modern rehabilitation.** The November 1999 partial tear happens, but it
  is treated the way it would be now in a player with a known tendon history.
  That means one continuous, imaging-guided rehabilitation and a graduated
  return, not a cup final in month five. Published return times for elite
  athletes after serious patellar injury run six months to a year *[external:
  Boublik et al. 2011]*. W1 charges him nine months, to late August 2000, and
  fills only the 71 matches of the void after that. Everything else in history
  is unchanged, including the 2008 rupture.
- **W2, the knees hold.** The central scenario. From 21 November 1999 his knees
  hold: no void, no 2008 rupture. The five non-knee injuries all still occur, no
  earlier absence is touched, and the fill rates still come from the local
  record.
- **W3, never a knee problem.** All six knee absences filled, back to the first
  surgery at 19. The upper edge of what "the knees survived" can mean in match
  arithmetic.

| scenario | games filled | minutes added | goals added | goals added 95% | counterfactual total | share we got | share 95% |
| --- | --- | --- | --- | --- | --- | --- | --- |
| W1 modern rehabilitation | 71 | 3393 | 28.5 | 16 to 44 | 421 | 93.2% | 89.9 to 96.1% |
| W2 the knees hold | 141 | 6525 | 49.5 | 32 to 70 | 442 | 88.8% | 84.8 to 92.5% |
| W3 never a knee problem | 180 | 8814 | 73.2 | 52 to 98 | 465 | 84.3% | 80.0 to 88.3% |

The void dominates: it returns about 44 of W2's 50 expected goals. The 2008 fill
is small because his surroundings at 31 were small: 43% availability and 0.59
goals per 90. The rule prices the window at that level.

## 4. The picture

Cumulative senior goals by age, actual against W2. The band is the 95% interval
on the filled goals; W1 and W3 end at the ticks.

## 5. How much did we get, against the patched career?

The share is actual over counterfactual, per world.

**Sensitivity.** The fill rule made three choices for the void: local rate, local
availability, local minutes per appearance. Each can be pushed in the generous
direction, since the local record includes the comeback months. The grid reprices
the void under every combination: rate up to his whole pre-injury career (0.85
per 90), availability up to the 1996-98 prime (84%), minutes up to the pre-injury
average (83).

| void rate | availability | min/app | void fill | W2 total | share we got |
| --- | --- | --- | --- | --- | --- |
| local window (the rule) (0.70) | local (the rule) (0.69) | local (the rule) (72) | 43.9 | 442 | 88.8% |
| local window (the rule) (0.70) | local (the rule) (0.69) | pre-injury (83) | 50.4 | 448 | 87.5% |
| local window (the rule) (0.70) | healthy prime 96-98 (0.84) | local (the rule) (72) | 53.2 | 451 | 86.9% |
| local window (the rule) (0.70) | healthy prime 96-98 (0.84) | pre-injury (83) | 61.1 | 459 | 85.5% |
| three years pre-injury (0.75) | local (the rule) (0.69) | local (the rule) (72) | 47.1 | 445 | 88.1% |
| three years pre-injury (0.75) | local (the rule) (0.69) | pre-injury (83) | 54.1 | 452 | 86.8% |
| three years pre-injury (0.75) | healthy prime 96-98 (0.84) | local (the rule) (72) | 57.1 | 455 | 86.2% |
| three years pre-injury (0.75) | healthy prime 96-98 (0.84) | pre-injury (83) | 65.6 | 463 | 84.6% |
| first 18 months back (0.76) | local (the rule) (0.69) | local (the rule) (72) | 47.8 | 445 | 88.0% |
| first 18 months back (0.76) | local (the rule) (0.69) | pre-injury (83) | 54.9 | 453 | 86.6% |
| first 18 months back (0.76) | healthy prime 96-98 (0.84) | local (the rule) (72) | 57.9 | 456 | 86.0% |
| first 18 months back (0.76) | healthy prime 96-98 (0.84) | pre-injury (83) | 66.5 | 464 | 84.5% |
| whole career pre-injury (0.85) | local (the rule) (0.69) | local (the rule) (72) | 53.3 | 451 | 86.9% |
| whole career pre-injury (0.85) | local (the rule) (0.69) | pre-injury (83) | 61.2 | 459 | 85.4% |
| whole career pre-injury (0.85) | healthy prime 96-98 (0.84) | local (the rule) (72) | 64.6 | 462 | 84.8% |
| whole career pre-injury (0.85) | healthy prime 96-98 (0.84) | pre-injury (83) | 74.2 | 472 | 83.1% |

Against the patched career we got about 89%. The three worlds run 84% to 93%,
and no grid corner goes below 83%. Stacking every generous choice at once still
leaves 71%. That includes the rate restoration that section 9 shows is not
statistically supportable.

This is the smaller claim of the two tiers. The worlds above keep the injured
career's shape on every match he did play: the comebacks, the rebuilt knee, the
rotation of his thirties.

## 6. The trajectory

The bookkeeping tier answers "what if the knee absences had not happened". The
larger question is what the career looks like if November 1999 never becomes a
hinge: no void, no comeback cycle, a forward's ordinary twenties. His own record
cannot answer it. It has no uninterrupted run through the peak ages to
extrapolate from. Two later careers show what a healthy forward of his standing
does across those ages: Lionel Messi and Cristiano Ronaldo *[external: Wikipedia
career statistics for both, fetched 2026-07-11, parsed by
`scripts/build_benchmarks.py`; senior club plus full internationals, youth and
under-23 sides excluded]*.

At the branch, age 23.2, he had more senior goals than either of them had at the
same age.

The trajectory model, T, re-runs the career from the branch instead of patching
it. It replaces the observed post-1999 record. Ingredients:

- **His teams' actual calendars.** Fixtures stay fixed: the 777 senior matches
  his clubs and Brazil played after the branch are the only matches T can use.
- **His own healthy availability.** 84% of squad matches, his observed share
  across 1996-98.
- **His own level.** Goals per appearance from the three years before the
  branch. The window mixes Barcelona and Serie A and includes the 1998-99 season
  played on a sore tendon.
- **Their durability only.** The level holds flat to 31, because both benchmarks
  held at least their age-23 scoring through 31. From 32 it declines along the
  average of their decay from plateau. T does not borrow the rise both of them
  had through their late twenties.

Uncertainty as before: Jeffreys posteriors on the anchor rate and availability,
binomial appearances over each season's real calendar, Poisson goals.

T ends at about 650, just under both real curves at the same age. It gets there
on less than they produced: about 440 goals from the branch to the end, against
Messi's actual 610 and Cristiano Ronaldo's 582 over the same ages.

Against that career we got about 60%, simulation interval roughly 52% to 70%.
The anchor is the model's one soft joint. The next cell reprices it.

A note on the chart: the benchmark curves are official counts, while the R9
lines are the match log's census (392 of his official 414 goals). As drawn, the
comparison slightly undercounts him.

The harshest anchor, his Serie A rate only, keeps the trajectory above 600 and
the share at about 64%. The most generous, his whole record to the branch, puts
it above 700 and the share near 56%.

T withholds two things. Both benchmarks played past 38, but T retires him at 34,
as he actually did. Both scored above their age-23 level through the late
twenties, but T holds him flat. Relaxing either raises the trajectory.

## 7. The answer, at both tiers

Both tiers on one axis. The bookkeeping rows are counts against the patched
career; the trajectory row is an extrapolation. They are different kinds of
claim, so they are drawn as separate groups.

## 8. The part a career percentage misses

Shares average over the career. The loss was not spread over it; it concentrates
on the ages where forwards peak.

The same numbers at three resolutions: about nine tenths of the career, about
two thirds of the peak window, six minutes of the twenty-two months at its
centre.

One loss sits outside both models. The companion notebook ends on the point that
at 23 his scoring sat above everyone's. Best-ever was the argument his knees
interrupted. The seasons at 24 and 25 that would have settled it are not in
either percentage.

## 9. What this does not say

The bookkeeping rules cut one way, so the tier-one shares read as upper bounds.
In particular:

- **No rate damage is claimed on the matches he did play.** His raw rate fell
  23% after the first rupture, but he also handed over penalty duties. The
  non-penalty decline is not statistically resolvable at this sample size (the
  companion notebook, section 3). The cell below prices the channel anyway. If
  his post-return minutes had come at his pre-injury raw rate, the
  counterfactual gains a further 53 goals. The floor in section 5 already
  includes it. The headline does not, because the data cannot establish it.
- **Selection erosion is not filled.** After 2005 he was often fit but not
  selected, for club form and fitness reasons a healthy trajectory might have
  changed. Brazil largely stopped calling him after the 2006 World Cup. Those
  matches stay unfilled.
- **The career does not lengthen, in either tier.** A healthy R9 retiring later
  than 34, as both benchmark careers did, is plausible and entirely absent from
  the arithmetic.
- **Nothing is replayed.** The 2002 World Cup and both of its final goals stay
  exactly as they happened. This cuts both ways: the counterfactual also never
  asks whether the 1998 final, or the 2003 semifinal, goes differently with a
  different history. Fixtures, transfers and teammates are frozen.
- **Scenario W2 removes the 2008 rupture by definition, not by causation.** That
  rupture was the left knee. The 1999-2000 catastrophe was the right. "The knees
  hold" is a stated world, not a medical claim that avoiding the first rupture
  prevents the third. W1 is the scenario for readers who want the narrow causal
  story only.
- **The frame is the match log.** 392 senior goals is the log's census (the
  official career total is 414 including matches that predate the log's
  coverage). The shares above are ratios inside one consistent frame.
- **No expected-goals data exists for his era**, so goals, not chances, are the
  modeled quantity throughout.

The trajectory tier's caveats are larger:

- **T's aging curve is a sample of two.** They are the only members of the
  reference class, but they are still two people, in a later era of sports
  science, rotation and calendar design. Nothing guarantees a 1976-born forward
  ages the way they did.
- **T replaces observed football with modeled football from age 23 on.** It
  discards eleven real seasons, among them real triumphs, and re-prices them at
  a flat rate. Its result is an extrapolation to argue with, not a count to
  check.
- **The conservatisms and the assumptions do not provably cancel.** Withholding
  the benchmarks' surge and longevity understates. Assuming 84% availability for
  eleven straight years overstates: his own record demonstrates it for two.
  Durable contemporaries, Raúl for one, carried that load in the same era
  *[external]*. The level is attainable, but for him it is an assumption.

## Conclusions

The project's question: how much Ronaldo did we get, and how much could we have
gotten? Two answers, one per tier.

Against the patched career: with the knee absences filled, the same fixtures and
his own local form give around 440 to 465 senior goals against the 392 on
record. We got about 89% of that career. No modeling objection moves it below
83%; every generous assumption at once still leaves 71%.

Against the trajectory: give him uninterrupted twenties at his own level, on his
own fixtures, aging the way Messi and Cristiano Ronaldo did. That career lands
around 650 senior goals. We got about 60% of that one, 56% to 64% across
anchors. For scale: at 23 he had 211 senior goals to Messi's 153 and Cristiano
Ronaldo's 118. T adds fewer goals from there than either of them went on to
score.

The loss was not spread evenly. It sits on ages 23 to 25: we got about two
thirds of the peak window's minutes. The twenty-two months at its centre came to
six minutes of football.

The record kept plenty, and the companion notebook states it: three FIFA World
Player awards, the youngest Ballon d'Or, the 2002 World Cup and its Golden Boot
on the rebuilt knee, an eighteen-year scoring rate that beats about 97% of
modern forward-seasons. The counterfactuals measure what was withheld. Nothing
here revises what he did.

How much did we get? About nine tenths of the patched career, about three fifths
of the trajectory, and none of the two seasons that would have settled where he
ranks.

---

**Method notes and sources.** Senior frame, injury linkage and all tier-one
inputs from
[THE R9 dataset](https://www.kaggle.com/datasets/axelst/ronaldo-r9-nazario-complete-career-dataset)
(match_log, injuries, bio; Transfermarkt injury windows corroborated by
contemporary reporting in the dataset's notes). Simulation: 20,000 draws, fixed
seed 9, Jeffreys Beta posterior on availability, Jeffreys Gamma posterior on
scoring rates, Poisson realization per filled match. Benchmark careers for the
trajectory tier: Wikipedia career statistics tables for Lionel Messi and
Cristiano Ronaldo, fetched 2026-07-11, parsed by `scripts/build_benchmarks.py`
in the project repository and embedded above as literals (senior club plus full
internationals; youth and under-23 sides excluded; cumulative values binned at
season-midpoint ages). External references: Boublik et al. 2011 (Am J Sports
Med, patellar tendon repair outcomes in NFL players); Dendir 2016 (J Sports
Analytics, forward peak age 25 to 27). Companion analysis:
[Just how good was R9?](https://www.kaggle.com/code/axelst/just-how-good-was-r9)
Written by Axel Stevens with analysis assistance from Claude. Corrections
welcome.
