CRIS GROSSMANN LET'S BUILD →
The Race Ledger · every start line since 2012

Seventy-five
start lines.
One direction.

First race, 2012: 77th percentile — most of the field finished ahead of me. Last race, August 2026: top 6%. This is the full ledger in between, and what the training lake says predicted it.

75Races
52Ranked fields
1.6%Best percentile
15Years
01 — The arc

Fourteen years of moving up through the field

Average share of the field finishing behind me, by year: 23% → 94%. Noisy year to year — but the endpoints don't lie.

Each point averages every ranked race that year. The 2021 dip is real: first season back after lockdowns, racing on a base that wasn't there. The dips stay on the chart — a ledger that only shows wins isn't a ledger.

02 — The predictor

The twelve weeks before the gun decide the day

Group all 52 ranked races by training hours in the 84 days before: quiet blocks beat 63% of the field. 120-hour blocks beat 89%.

r = −0.28 between block volume and finish percentile, n = 52 — modest, monotonic-ish, and honest: fitness also decides which races get entered. But it's the same dose-response the lake found in resting heart rate, now showing up on results sheets. Strava can't draw this: it has the hours but not the rankings.

03 — The ledger

Every start line, on the record

TOP n% = overall field position; AK marks races where only the age-group ranking survives. Blank cells are races whose result sheets predate the internet's memory — they stay in the ledger anyway. Latest chapter, two sprint triathlons in seven days → /race-engineering/