You've heard JT and WJ discuss how PCM 24 works based on a lot of testing, but you may wonder how that played out last season in terms of point scoring? I can't claim to have all the answers, but read on to see an attempt at providing some of them. I'll post them in five blocks below, broadly themed by similar terrains.
Methodology
I went through last season's point scoring, and broke it down by terrain. This required some judgment calls (e.g. when allocating GC lead/Points classification points by terrain), but made it possible to calculate rough PpRD values for each rider on each terrain. There were 7 core terrains I did this for:
Those terrains don't fully capture the variety of races, which meant 5 additional terrains were also included. Some were more robust than others, as there were more races that could be included, as well as risks of oversimplification in some cases:
Mountain stage races - any stage race with mountains and another non-flat terrain
Hilly TT stage races - stage races with hills and a TT and/or TTT
Hill/flat stage races - races like TDU, Nederland etc where bonus seconds are key
Hill/cobble/TT stage races - ToNE and Benelux
Flat/prologue stage races - Qatar style races
Coefficients were then calculated for each terrain to capture the influence of each stat, as part of an exponential formula. The coefficients were calibrated as part of the formula to create the most similar fit to the observed PpRD values, once scaling and constraints were applied to the formula.
Limitations
Before sharing the findings, there are a few limitations that are worth flagging. Having had the benefit of a transfer season to try and apply the learning from this exercise, I'm well aware of what it does/doesn't capture well and what to be aware of when interpreting the results.
Firstly, I combined all divisions into one for each terrain. This means that some rider types will be overvalued by the model due to being in divisions that have more suitable races for them, and vice versa. It also limits the utility of the projected values slightly, which will be apparent from some of my signings!
Secondly, it doesn't capture team strength or planning in a meaningful manner - it only interprets based on the non-MM stats in play (MM was ignored due to the way it was implemented last season). That means it may, for example, overvalue certain stats for sprinters who actually benefitted from strong leadout trains. It also can't conceptualise TTTs in a meaningful manner, so those are discounted.
Thirdly, there is a potential problem of overfitting - I would be inclined to towards it being a certain problem rather than a potential one. An indicator of that may be seen in the use of negative values for some stat coefficients, where this wouldn't make intuitive sense. It's an area for improvement in the modelling, as sometimes randomness is better explained by randomness than an unlikely stat influence.
Finally, as you'll see when looking at some of the terrain rankings, the model design can often lead to odd results that have an underlying logic but look weird. For example, a pure TTer may look stronger in the TT rankings than a more rounded TTer with a similar TT stat, as the latter rider may avoid pure TT races due to limited RDs. In reality, the latter rider is likely stronger - but as riders like them didn't score in those races last year the model sees their stat combo as less valuable.
Mountain stages/classics and pure mountain stage races (e.g. Colombia) are our first terrain to consider, and threw up a few surprises. Unsurprisingly, the MO stat was the most important (0.30), but only by a small margin from the HI stat (0.26). The TT stat also had a higher than expected influence (0.14), though this may be a function of the number of strong climbers who were also reasonably strong TTers.
However, the influence of back-up stats was slightly surprising to see. Most had a negligible influence compared to the three main stats mentioned above, with AC (0.06) the most impactful. The bigger surprise came in negative values for ST (-0.05) and FL (-0.22), which I would view with caution as likely overfitting. The only potential rationale is that climbers with better FL and ST scored fewer stage points as they were too consistently strong to be allowed into breaks in GT stages - not a great hypothesis, I know!
The projected top 10 for this terrain in each division this year is below:
PT
1
Silvio Herklotz
Assa Abloy
2
Miguel Angel Lopez
Evonik - ELKO
3
Andres Camilo Ardila
Bolt - Eesti
4
Merhawi Kudus
MOL Cycling Team
5
Tadej Pogacar
Cedevita
6
Pierre-Henri Lecuisinier
cycleYorkshire
7
Joseph Areruya
Xero Racing
8
Domen Novak
Aker - Ab InBev
9
Egan Bernal
Polar
10
Sergio Higuita
Los Pollos Hermanos
PCT
1
Mark Padun
Trans Looney Tunes
2
Ivan Sosa
McCormick Pro Cycling
3
Joao Rodrigues
Minions
4
Caio Godoy
Jura GIANTS
5
Takeaki Amezawa
Bralirwa - Cegeka
6
Gijs Leemreize
Bacharu Mamachari Faito!
7
Santiago Buitrago
Lotto-Caloi
8
Marc Hirschi
Sauber Petronas Racing
9
Mauro Schmid
Jura GIANTS
10
Joao Almeida
UBS - EDP
CT
1
Michal Schlegel
IESE ProCycling Team
2
Matteo Fabbro
Air New Zealand-Prada
3
Clement Berthet
Euskotren - Pays Basque
4
Yesid Albeiro Pira
Tafjord Kraft
5
Zouzou Andriafenomananiaina
THE ONE - Fox God
6
Jack Burke
IncaLine Pro Cycling
7
Victor Lafay
Euskotren - Pays Basque
8
Natnael Tesfatsion
Karthago
9
Steff Cras
DeNA RoadStars
10
Dion Smith
Fincantieri - Grand Seiko
One of the interesting things to observe across the three divisions is the model loves the limited pure climbers a lot more than you would expect, at the expense of some of the better stage racers. The likes of Ardila, Leemreize and Pira are not names I would have expected to see up there based on their stats, and the former may definitely be a beneficiary of the "division neutral" approach. The overfitting issues with support stats also contribute here - Ardila is a very poor imitation of Areruya, yet the model prefers him.
Also of interest is the sneaking into the top 10s of some of the puncheurs with high MO stats, such as Higuita, Hirschi, Schmid and Tesfatsion. This speaks to the rider type the model sees as doing well in the pure mountains, favouring attacking, explosive climbers over those riders with a more well rounded stage racer profile.
Mountain stage races
A terrain I am a lot more confident in the modelling of comes next! The MO SR category, as named in my notes, is a lot more in line with expectations when looking at the analysis. The MO stat is most important (0.26) followed by two stats not favoured in the pure Mountains analysis - FL (0.07) and ST (0.06) - and no major negatively weighted stats (a max of -0.02).
Given there are far more points available from stage race GCs than individual stages, and they tend to be distributed less randomly, this is a much more valuable terrain to score well in. Riders who score well here but that scored poorly in the Mountains analysis are likely to have their point scoring from stage results limited slightly, but should still do well by picking up big GC scores:
PT
1
Merhawi Kudus
MOL Cycling Team
2
Silvio Herklotz
Assa Abloy
3
Egan Bernal
Polar
4
Tadej Pogacar
Cedevita
5
Pierre-Henri Lecuisinier
cycleYorkshire
6
Pavel Sivakov
Tinkoff - La Datcha Team
7
Brandon McNulty
King Power
8
Joseph Areruya
Xero Racing
9
Jack Haig
Hunter Valley Cycling
10
Lachlan Morton
Indosat Ooredoo
PCT
1
Joao Almeida
UBS - EDP
2
Sam Oomen
Lierse SK - Pizza Ullo PCTeam
3
Pierre Latour
Everesting
4
Orluis Aular
McCormick Pro Cycling
5
Inigo Elosegui
Zwift - Newton Foundation
6
Carlos Rodriguez
SparkNZ - Liquigas Pro Cycling
7
Marcus Faglum Karlsson
Duvel - Tsingtao
8
Caio Godoy
Jura GIANTS
9
Mark Padun
Trans Looney Tunes
10
Takeaki Amezawa
Bralirwa - Cegeka
CT
1
Neilson Powless
Banco Vaticano-Valkyrie
2
Steff Cras
DeNA RoadStars
3
Fredrik Strand Galta
Billstedt-Horn
4
Colin Stüssi
JEWA TIROL
5
Jack Burke
IncaLine Pro Cycling
6
Chen Shikai
Karthago
7
Michal Schlegel
IESE ProCycling Team
8
Kwanele Jele
Banco Vaticano-Valkyrie
9
Jose Fernandes
IESE ProCycling Team
10
Elias Abou Rachid
Simba Cement - Tanga Fresh
No major surprises as far as I can tell here, with the ranking for PT and PCT corresponding reasonably well with what you'd expect to see from a quick glance at the DB. CT adds a few more interesting names into the mix who may not have been expected to do so well - Burke, Jele and Fernandes in particular look like they have the potential to outperform expectations based on this analysis, though the latter duo may face a challenge in doing so given they may be second fiddle on their own team.
Edited by jph27 on 31-08-2026 19:05
The key stat for a puncheur? You'll be shocked to hear it was HI (0.34). However, success on the hills appears to have more factors involved than many other terrains. Good SP (0.10), AC (0.08), RS (0.08), ST (0.07) and MO (0.07) are all helpful, with only PR (-0.06) seemingly particularly unhelpful. The energy stats are unsurprising, as is MO, but the SP and AC combo highlights the need to be a fast finisher in this game version due to the number of hilly stages ending in group sprints.
The analysis suggests that you'd rather have a puncheur who can sprint than one who can climb, though we'll see how that develops as MM gains more importance as an independent stat. That isn't to say there isn't value in having a strong MO/HI hybrid as your puncheur leader, but only if they also have an explosive kick to help them:
PT
1
Miguel Angel Lopez
Evonik - ELKO
2
Silvio Herklotz
Assa Abloy
3
Joseph Areruya
Xero Racing
4
Mauri Vansevenant
Fastned
5
Yevgeniy Gidich
King Power
6
Matej Mohoric
Tinkoff - La Datcha Team
7
Sergio Higuita
Los Pollos Hermanos
8
Attila Valter
Aker - Ab InBev
9
Robert Stannard
MOL Cycling Team
10
Andrea Bagioli
Polar
PCT
1
Mauro Schmid
Jura GIANTS
2
Marc Hirschi
Sauber Petronas Racing
3
Tiesj Benoot
Duvel - Tsingtao
4
Takeaki Amezawa
Bralirwa - Cegeka
5
Quinn Simmons
McCormick Pro Cycling
6
Odd Christian Eiking
Gjensidige Pro Cycling Team
7
Mick Van Dijke
Philips - Hero
8
Valentin Madouas
Bralirwa - Cegeka
9
Matteo Jorgenson
Zwift - Newton Foundation
10
Lennert Van Eetvelt
Bralirwa - Cegeka
CT
1
Alexey Lutsenko
Air New Zealand-Prada
2
Ronnilan Quita
Deutsche WindGuard
3
Natnael Tesfatsion
Karthago
4
Simon Yates
JEWA TIROL
5
Matus Stocek
Euskotren - Pays Basque
6
Rui Oliveira
Deutsche WindGuard
7
Michal Schlegel
IESE ProCycling Team
8
Bachirou Nikiema
SEE Turtles
9
Victor Langellotti
Fincantieri - Grand Seiko
10
Luis Fernando De La Cruz Chapulin
IncaLine Pro Cycling
In PT we once again are reminded that Herklotz would be a top puncheur as well if RDs allowed, while the impact of Vansevenant's training is seen in moving him up the rankings. Schmid is another major training beneficiary in the PCT rankings, with some impressive depth from Bralirwa on display, while CT throws out a number of surprises. The lack of well rounded top puncheurs is suggested to favour some unlikely names, despite their energy stat limitations e.g. Tesfatsion.
Hill/flat stage races
Unlike Hills, I have less confident in the results for this terrain due to the much reduced number of data points that can be included to inform the analysis. Unsurprisingly HI (0.40) and ST (0.17) seem to be important, as do AC (0.10) and SP (0.07) albeit on a smaller scale.
However, there are some slightly bizarre findings that I believe to be a result of modelling limitations. PR (0.16) being countered in influence by TT (-0.17) is likely to be a function of sprinters doing well rather than anything meaningful, while RS at -0.15 is difficult to explain as the result of anything other than overfitting. These oddities lend to some 'interesting' rankings...
PT
1
Pascal Ackermann
Specialized
2
Miguel Angel Lopez
Evonik - ELKO
3
Andrea Bagioli
Polar
4
Mauri Vansevenant
Fastned
5
Matej Mohoric
Tinkoff - La Datcha Team
6
Yevgeniy Gidich
King Power
7
Elie Gesbert
Assa Abloy
8
Joseph Areruya
Xero Racing
9
Robert Stannard
MOL Cycling Team
10
Silvio Herklotz
Assa Abloy
PCT
1
Odd Christian Eiking
Gjensidige Pro Cycling Team
2
Andrea Vendrame
Ethiopian Airlines
3
Patrick Müller
UBS - EDP
4
Arnaud Demare
Riders of Rohan
5
Caleb Ewan
Ethiopian Airlines
6
Joni Kanerva
Sauber Petronas Racing
7
Tiesj Benoot
Duvel - Tsingtao
8
Lucas Eriksson
Bacharu Mamachari Faito!
9
Arvid De Kleijn
Ethiopian Airlines
10
Andres Paez
Jura GIANTS
CT
1
Simon Yates
JEWA TIROL
2
Alexey Lutsenko
Air New Zealand-Prada
3
Matus Stocek
Euskotren - Pays Basque
4
Josef Cerny
Karthago
5
Rui Oliveira
Deutsche WindGuard
6
Jay McCarthy
SEE Turtles
7
Luis Fernando De La Cruz Chapulin
IncaLine Pro Cycling
8
Marius Mayrhofer
DeNA RoadStars
9
Henry Antonio Rojas
Karthago
10
Fabian Lienhard
Deutsche WindGuard
Do I trust the rankings above? No. Should you? I'll leave that up to you. There are some valuable insights in there, such as Ackermann benefiting from Yates' decline and departure from PT, Demare still being valuable, and a few surprise names making an appearance high up the rankings (e.g. Vendrame). However, this is a terrain I'm not overly confident in the projections for, so don't trust the modelling - note the absence of the likes of Groves who have a proven track record in this type of race.
Edited by jph27 on 31-08-2026 19:32
This is definitely cool to look through. I'm not sure I buy some of these as I think there is a good amount of correlation rather than causation skewing what the model think it's important. But very interest nonetheless!
RIP Exxon Duke, David Veilleux, Double Feature, and Monster Energy
I'm definitely struggling a bit with this model. For example, how does Powless completely get left out of the Mountain section, even though he's first in the mountain stage races.
One of the things I'm noticing in CT is that the Recovery stat seems to be making a bigger impact than I'd expect in the stage race category. This makes sense as a multi-divisional framework, but I don't think it makes much sense for the division given our longest race is 9 (or 14 for just two teams) days compared to the three grand tours which is utilizes for PT.
One of the most fascinating aspects of this evaluation is that its completely built around the biases of last season's managers. If managers thought a rider didn't belong in a certain terrain type (even though they'd ride amazingly), then a similar rider simply can't show up in the category because they have no correlated riders to compare to. Obviously that's an oversimplification, but the idea should hold.
Another fascinating thing for me is that Montenegro (a top 4 puncher in CT last year) does not even make the top 10 in either standing this season. I see some of the rationale, but you'd think the model would support a rider that helps set the standard for the method (although again solo-divisional makes an impact).
Interesting approach, and I like to see three Bralirwa riders in the hills Top 10
I think the model could benefit from eliminating some noise in the features. To me, there no reason why prologue, time trial, cobbles, or recovery (for one day races) should be present in the analysis when there's no possibility for a causal relation with the outcome of a race. You already pointed out some of the potential explanations, such as correlations with main stats. This will distort the results. I know the PCM engine is mysterious, but in those cases, I think you lose more from including them rather than trusting that there's not something super weird going on and leaving them out. In general, a correlation analysis of features could be useful to avoid overfitting like you mentioned.
I also think you have to account for division somehow. The way that you score 250 points as a climber in CT and the attributes you need for that are just vastly different than the way you score 250 points as a climber in PT. If you look within divisions individually, that of course reduces the data points available quite a bit. Maybe some sort of normalization could work? Like, instead of scoring 200 points with 78 mountain in CT, you score in the 93rd percentile with a 89th percentile mountain stat within your division? Again, there will be some differences in the distributions between divisions, but at least at first glance, that feels like a better approximation of relative strength and the importance of each stat to points scoring.
There could be some interesting potential for feature engineering, too. Depending on what your dataset looks like, it might be possible to extract team strength (as simple as second highest relevant main stat on the team, or more complex) or role (e.g. is there a rider with a higher relevant main stat on the team). But that would require knowing the team composition within each race, not sure if that's available in the dataset.
I have ran some stuff like this myself that I used in transfers. So get ready for a wall of text! AI has helped analyze the data. It has used points for every rider set up against their stats. Might be I regret sharing, but Id rather share and others share aswell.
Model method text in quotes and my comments outside
This is purely built on 2025 points and stats and team. That means it hasn't cared about planning effects, luck etc. The "result" is based on an expected points formula with the following information:
Per-division ridge regression on 22 features: the 14 abilities plus combo features (Sprint&Acceleration, min(Mountain,TT), Hill&MidMountain, Cobbles&Flat, TT&Prologue, endurance average, and the rider's best and second-best discipline scores). Abilities only count above a division-specific threshold (PT 65, PCT/CT 70) and are raised to a power (2–2.5), which captures that points come from high-end stats, not averages. The target is square-root points, squared back for display. Predictions are then top-end calibrated against actual 2025 points (band medians raw→actual, monotone; full-range for PT at 75% strength, restricted for PCT at 50%, none for CT where no bias was found) — this fixes the systematic under-prediction of 300+ point riders (was +65 to +130 points, now near zero). Trained on the full 2025 season (all divisions, riders without points count as 0). The 2021–24 PCT seasons are included at 15% weight each (PCT model only), with MidMountain imputed for pre-2025 databases. Out-of-sample R² (5-fold CV, points space): PT 0.81, PCT 0.72, CT 0.54.
In other words it is a formula that uses mainly last seasons result, but for PCT (as that was my main driver) it has also looked at 21-24 seasons and added them to the model. The goal was to have a bigger dataset even if the game used was another one
It is important to note that I was looking for "hidden effects" in other words stamina is already seen as positive on puncheurs etc. That will have an effect on the text and results here. The goal was to find why some riders overperformed expected.
Tested on 2025 residuals (actual minus stat-based projection). Internal competition dominates: the team's #1 sprinter overperforms (×1.19) while sprinters behind a better teammate underperform (×0.89 as #2, ×0.84 as #3+; permutation p<0.001, n=169). Puncheurs show the same but weaker (#1 ×1.16); climbers/TT/GC riders none.
Lead-out trains help the #1 sprinter only: among 59 clean #1 sprinters, points rise ≈3.9% per point of train quality above 72 (train quality = mean of the two best teammate lead-out scores). A weighting grid search found the helpers' engine-relevant profile is LO = 0.12·Flat + 0.48·Sprint + 0.40·Acc — Sprint and Acceleration count almost equally, Flat barely, and the Sprint-vs-Acc balance within a helper is irrelevant (corr +0.07). The boost estimate carries wide uncertainty (bootstrap CI includes zero in the relative form) — treat it as an informed lean, not a law. Separately,
ACC-heavy sprinters (Acc ≥ Sprint+3, sprint level 72+) beat projections ×1.12–1.14 consistently across all three divisions (n=69) — a real engine effect the ability model cannot express.
Some interesting data that I used when looking at sprinters (will come a bit more farther down). The data showed an effect when having several sprinters on the team. Thus I did not really plan to have 2, then I ended up with 2 anyway... Most likely we will see Zabel suffer this effect as his race program was pretty much "what is left". In general it says that the main sprinter of a team will overperform a mean sprint expected points.
The data also found a clear effect on leadout train where leadout train in this case was the 2 best riders on a formula with flat-sprint-acc. To the level of 3,9% points per level above 72. This was the main reason for me to hunt leadout riders but be happy about 2 and then fill flat riders for the rest of the train.
I would also like to point out that acc heavy spinters overperform. This was something that suprised me in the data. I wonder if we might have the effect of using your acc when you are sprinter 5-6-7 who dosen't have their own train? I found it interesting
Acceleration's effect differs sharply by rider type — but a full within-puncheur screen revealed the real driver: Sprint is the dominant hidden stat for puncheurs (Spearman +0.48 with residuals, positive in every division; Sprint 69+ puncheurs deliver ×1.40 of projection, Sprint ≤64 only ×0.82, and Sprint 69+ with Flat 72+ hits ×1.47 — Lutsenko, Van der Poel, Valter, Vansevenant are the archetype). ACC 76+ without the sprint (Sprint <69) shows nothing (×0.91): the apparent ACC effect was a Sprint proxy. Hilly finishes come down to reduced-group sprints, and the model's linear pricing misses that a puncheur's Sprint converts placings into wins.
Mountain, MidMountain, Hill, Stamina, Recovery, Cobbles, Downhill and Fighter all show no residual effect within puncheurs; TT/Prologue are marginal (p≈0.03–0.05, not acted on). For classics riders and climbers
ACC shows no residual effect at all; high-ACC GC/TT hybrids slightly underperform (small samples — read as "odd profiles the model overrates", not as ACC hurting).
Found clear effects of sprint on puncheurs. Where there is a very clear effect of 69+ and a clear effect also on the negative side with puncheurs at or under 64 sprint. Note also that flat over 72 specially together with good sprint is strong. Look out for these puncheurs. Early in the workings I found a clear effect on acc on puncheurs, but when sprint was included this effect dissapeared all together and it seems that it is all sprint.
I was surprised about the stamina/MM here as I expected it to have a bigger effect on results. I am still a bit surprised with that as I did expect it to have a mayor effect.
The full within-climber screen (n=129) found three independent effects: Stamina (74+ → ×1.13; the real damage is at the bottom: ≤69 → ×0.77; strongest in PT where mountain races are longest, weak in PCT), Sprint again (65+ → ×1.19, ≤60 → ×0.89 — reduced mountain groups also finish in sprints; Areruya 1319→1739 is the poster case), and a smaller independent Resistance effect (75+ → ×1.09 even without high Stamina). Mountain, MidMountain and Hill variation within climbers shows nothing — terrain is priced correctly; the finishing and endurance package is what the linear model misses.
For climbers we find the stamina effect, but maybe most important the lack og stamina effect. Same with sprint. I forgot this when I signed Ranaweera.
The classics screen (n=117) flips that: their hidden value is terrain versatility — MidMountain 68+ classics riders deliver ×1.22 (MM ≤63 → ×0.90; Mountain and Hill show the same but overlap heavily, so MM carries the rule); own Cobbles beyond the archetype adds nothing.
I believe JT and WJ talked about this. MM is a overlooked stat for cobble riders
Back to sprinters and also fits with what WJ and JT talked about. 79+ sprints is the main factor for sprinters! Hill is good over 72. Also explains why my models love Deutche Windguard!
The GC screen (n=149) resolves the earlier anomaly into a clean monotone gradient: the more complete the endurance package, the more the model overrates it — Resistance 77+ GC riders deliver ×0.88 (with Stamina 76+ too: ×0.86; Pogacar's 1531-projection → 896 season is the emblem), Resistance ≤73 "lighter" GC profiles deliver ×1.20. GC points hinge on lumpy three-week outcomes, so stat-stacking inflates projections faster than points.
This is more a comment on my standard model that overrates energy stats for GC riders. This is also a point that competition is extremely important for the points they get. You can get a lucky or an unlucky startlist. I guess (as he is used as an example) Pogacars bad season effected the results here. Might be different with a bigger dataset...
TT riders (n=131) echo the classics versatility pattern: Mountain 67+ → ×1.14, Mountain ≤60 → ×0.86 (weaker evidence, p≈0.03–0.08, applied with extra shrinkage); their own TT stat beyond the archetype adds nothing. The same residual screen across Stamina/Resistance/Fighter/Downhill/Flat (30 stat×type tests, so p<0.01 is the bar) found three more real effects: climbers with high Stamina overperform (top vs bottom quartile +71 pts, p=0.003; Resistance similar at +58, p=0.008 — the two overlap heavily) and puncheurs with high Flat overperform (+61 pts, p=0.006) — a puncheur needs Flat to be there when the hill comes; his ACC to finish it.
I think we see an effect that we pretty much know about. If a TT rider has higher mountain there are just more possibilities to score. Also more notes on stamina and resistance on climbers (note that climbers and GC riders are seperated. GC riders here got high mon and high TT)
Fighter and Downhill showed nothing anywhere. One anomaly: GC riders in the top Stamina/Resistance quartile underperformed heavily (−90/−131) while the continuous correlation is ≈0 — driven by a few elite stage-racers whose seasons are binary (win GC or bust), not by the stats hurting. These archetype effects were tested as model adjustments and rejected by cross-validation (flat-to-worse out-of-sample in every configuration — the effect sizes are selection-inflated). They therefore live as a labelled engine context layer in the rider detail view (conservatively shrunk multipliers), and deliberately do not feed expected points, wages or VORR.
Putting no value on fight and DH. Would be interesting with downhill if we had more gravel
Practical reading: when buying a puncheur, Sprint is the first-class hidden stat (aim 69+), with Flat 72+ as the positioning complement — ACC only matters via the sprint; for sprinters the market splits at Sprint 79: pay up for 79–80, avoid paying sprint-money for 76–78; Acc-over-Sprint profiles are a cheap bonus; for climbers avoid Stamina below 70 at all costs, pay for Stamina 74+ and Sprint 65+, with Resistance 75+ as a bonus; for classics riders buy MidMountain 68+ (versatility) rather than more Cobbles; never pay extra for Fighter or Downhill on anyone; be sceptical of paying full price for "complete" GC packages (their projections flatter them) and prefer TT riders who can climb.
Notes I had for myself during transfers
Climbing trains don't exist. The same analysis for climb leaders (Mountain 79+, n=67) found no benefit from climbing support: teammate climbing quality (top-2 Mountain, with or without endurance weighting) correlates ≈0 with the leader's over/underperformance — if anything slightly negative, because climber-stacked squads are the "complete GC" teams that underdeliver.
There is also no internal competition penalty among climbers (leaders with a better climbing teammate: ×1.00 vs ×0.96 without — nothing, unlike the sprinter ×0.89/×0.84). Mountain points are individual in this engine: hilltop finishes shred the groups, so domestiques cannot deliver a climber the way a train delivers a sprinter. Team-building consequence: never buy climbing domestiques for the leader's sake, but feel free to stack several scoring climbers on one squad — they don't cannibalise each other.
The same screen for puncheur leaders (Hill 77+, n=116) and cobbles leaders (Cobbles 75+, n=81) found no support/train effect for either (teammate punch or cobbles quality correlates ≈0-to-negative with leader performance). Competition differs: puncheurs show none when ranked by raw Hill, but the earlier by-overall-quality split (#1 ×1.16 vs #2+ ×0.98) still applies; cobbles leaders show a mild penalty — team's best cobbler ×1.04 (median +42) vs riding behind a better one ×0.94 (median −20). So the sprint train remains the only team-composition effect that adds points; everywhere else, squad-building is purely about the individuals.
This I also found interesting as my data found clear effects on having leadout, but not the same on hills/climbs/cobbles. Again something I would love to look at with a bigger dataset.