A Better Bunch Sprint Model

I introduced a very basic model for rating riders two months ago which simply took the natural logarithm of finishing rank in each race to make the stat Log Rank. At the end of that piece, I introduced a way to model Log Rank over long time periods to find whether riders a) achieve better or worse finishing ranks overall, b) achieve better or worse ranks in bunch sprint finishes, and c) achieve better or worse ranks in races with a lot of climbing. That ranking model does a good job of distinguishing riders who are expected to perform better or worse in bunch sprints, but not a great job at distinguishing truly great from merely good sprinters.

The issues with that Log Rank model are: 1) it considers all different parcours of races in building the overall impact data point, not just races ending in bunch sprints, 2) it considers all bunch sprints for a rider, even those where a heavier sprinter was jettisoned a climb and failed to participate in the sprint finish, 3) it considers bunch sprints where a rider was present in the bunch, but was actually helping a teammate (eg, Davide Ballerini often sprints for himself in smaller races, but is in the sprint train for bigger ones), and 4) it doesn’t consider the quality of the sprinters participating alongside each rider in the sprint (ie, the competition on that day may be much reduced by tougher parcours, mechanicals, crashes, or splits in the bunch).

So how to account for these issues. First, we want to just evaluate sprinters based on bunch sprint finishes. Anything which doesn’t end in a bunch sprint is ignored by this new model. Second, we want to ignore any race for a rider where they didn’t finish with the first group in the sprint AND in the top 25 positions; this indicates they were capable of sprinting. Third, we want to ignore any race where a rider wasn’t the top finisher on the team. Many riders participating in as a lead-out man can rack up 10th place finishes which can pollute our understanding of them as sprinters in races where they compete as team leader. And fourth, we consider the cumulative strength of the sprinting field which meets these first three criteria based on the simple Log Rank model outputs.

Determing strength of sprinting field

How does point #4 above work in practice? Seventeen sprinters in UAE Tour stage 1 on Sunday qualified for these criteria including the top 13 finishers. My basic Log Rank model predicts following finishing positions in a generic strong race for those seventeen riders.

RiderPredicted Rank
Jasper Philipsen3.0
Arnaud Demare3.2
Sam Bennett3.3
Pascal Ackermann4.0
Dylan Groenewegen4.9
Elia Viviani6.9
Mark Cavendish7.0
Marijn van den Berg9.3
Olav Kooij9.6
Marc Sarreau10.1
Rudy Barbier10.8
Max Kanter16.5
Emils Liepins27.7
Jonathan Milan29.7
Tom Devriendt34.5
Michael Schwarzmann35.2
Jonathan Canaveral47.3
Qualifying sprinters from UAE Tour Stage 1 (2022)

A lot of very talented sprinters were in this race – including seven with an expected finishing rank of 7.0. Compare to stage 1 of Tour of Oman where the top sprinters were Fernando Gaviria (5.0), Mark Cavendish (7.0) and no one else with a predicted rank better than 10.0.

To determine the cumulative strength of sprinting field, I just take the reciprocal of each rider’s predicted log rank (1 / predicted log rank) and add them together. A top sprinter like Bennett or Philipsen will contribute 1/3 or 0.33 points while someone with a very low prediction like Canaveral or Schwarzmann will contibute 1/40 or 0.03 points.

The top races for sprinters tend to be the Tour de France, Milano-Sanremo, Paris-Nice, and UAE Tour with cumulative strength of sprinting fields around 3.0 to 4.0 depending on the specific day. World Tour races in general average just under 2.0, with a wide range, while .Pro races average just above 1.0, again with a wide range. The lowest pro races at .1 level tend to average just below 1.0 with hardly any rating better than 1.5.

With that data calculated, it is simple to specify a model using this strength of sprinting field and rider to predict both finishing rank and whether a rider won the sprint. Both of these models find 1) the impact of individual rider on success metric and 2) a potentially non-linear impact of the cumulative strength of sprint field.

To Predict Finishing Rank:
gam(log(finish_rnk) ~ rider + s(strength_sprint_field))

To Predict Win:
gam(win ~ rider + s(strength_sprint_field))

I ran both models for this example on data since the start of 2020, only considering riders who participated in at least 16 sprints meeting the criteria laid out above. This ranged from Wout Van Aert with 19 sprints to Philipsen/Ackermann with 45.

Who is the top sprinter in early 2022?

Both models produce similar results given the data. Fabio Jakobsen is seen as the most likely sprinter to win a given race and the sprinter who will finish with the best finishing position overall. For example, in a typical World Tour level sprint the models predicts Jakobsen to win 53% of the time and finish an average of 1.9. Wout Van Aert is predicted 2nd in win probability at 44% and 4th in finishing rank at 2.7. Sam Bennett is tied with Caleb Ewan for 3rd in win probability at 38%, but slightly ahead of him for 2nd place in finishing rank at 2.2. Ewan is predicted at 2.6 in finishing rank.

Those four comprise a fairly clear top group with Jakobsen fairly clearly the #1 sprinter in the world. Behind those four are guys like Philipsen, Groenewegen, Cavendish, and Demare. As a sign of his diminished form in recent years, Peter Sagan ranks outside the top 25 in predicted win probability and 15th in predicted finishing rank.

Fabio Jakobsen

Looking at the data in this way it’s obvious why Jakobsen is the top predicted sprinter while ranking only fifth in the PCS Sprinter Ranking and 14th (!) in my own basic Log Rank model. Jakobsen had three week long stage races in his comeback from serious injury last year where he didn’t compete as a sprinter. Basically, the basic Log Rank model sees a guy who was “awful” at sprinting for a dozen sprints. But, when we restrict just to races where he was the team leader and he was in the sprint pack, the graph below shows he has been dominant.

Jakobsen is winning nearly 70% of his sprints where he is the leader and is contesting the sprint since the start of 2020. That blows everyone else away, with Van Aert and Ewan managing only a mid 40% win rate in that time. Jakobsen has raced lesser competition than guys like Van Aert, Ewan, and Bennett, but he’s dominated that competition.

One of the big stories of this and last cycling season is Mark Cavendish’s return to massive success with Quick Step, including tying the record for career Tour de France stage wins. He has twelve wins since the start of 2021 – including two this season – and easily rates as a top 10 sprinter in the world right now. Because he and Jakobsen race for the same team, only one of them is likely to make the Tour de France team where Quick Step sprinters have been steered to 14 sprint stages in the last five races. Unfortunately for Cavendish, Jakobsen isn’t simply just another top 10 sprinter – he’s the best in the world right now.

Too Many Leaders – Analyzing Team Depth

Pro cycling teams have to juggle a lot of goals: for the season, for a stage race, for an individual race. They also need to juggle ambitions of ~30 riders of varying levels of experience and skill. In most races, teams only ride for a designated leader or maybe 2-3 designated leaders. Based on the parcours and who is performing best, teams decide who are the protected leaders and who will be riding in support in each race.

As we move into a new season, teams have hired new riders and let others go. I had a go at making some basic projections on how teams strengthened or weakened their squad with transfers, age based regression, and natural regression/progression in points earned. One of my caveats in that article was that the projections did not account for team strategies or rider schedules based on transfers. There are only so many leadership positions to go around and teams who hire more leaders are at risk of needing to demote some leaders to support roles in certain races.

In this piece I define “leader” as the top finisher for a team in a race. Of course the top finisher is not always the rider(s) who were designated as the leader at the beginning of the race. However, the top six riders in % of races as leader in 2021 were Nairo Quintana, David Gaudu, Giacomo Nizzolo, Guillaume Martin, Aleksandr Vlasov, and Tadej Pogacar so I think it’s a reasonable proxy.

How This Plays Out For Teams

A quick example, UAE Team Emirates transferred in five major signings who spent at least some races in 2022 as their team’s leader – sprinters Pascal Ackermann and Alvaro Hodeg and climbers Joao Almeida, George Bennett, and Marc Soler. They transferred out four major riders who spent some races as leaders – sprinter Alexander Kristoff, climbers Joe Dombrowski, and David De La Cruz, and puncher Sven Erik Bystrom. Five in, four out. The riders leaving were UAE’s #1 rider on a race day 52 times. The riders coming in were their team’s #1 rider on a race day 76 times. UAE also hired wunderkind climber Juan Ayuso who was the leader in a race – primarily at U23 level – 17 times in 2021. In total, they raced 233 times in 2021 and the riders on their team for 2022 were the #1 rider on their team 288 times – a surplus of 55 races.

We can repeat that same calculation for the other 17 World Tour teams and actually most teams have a surplus; 11 have at least 7% more leaders in their team than 2021 race days, another 5 are within +/- 3%, and only Lotto Soudal (6% fewer) and DSM (13% fewer) aren’t equal or with a surplus. Overall, the surplus is 12% at World Tour and 8% at Pro Tour level. This makes total sense. Teams tend to discard riders who don’t have the capacity to be leaders anymore and hire those that do as a natural progression of the sport. However, some teams are legitimately going to be squeezed for leadership opportunities in 2022 – even if we don’t see Covid related cancellations like the prior two years.

EF Education is probably the most over-subscribed in terms of leaders. They hired riders who were team leaders 102 times in 2021, but got rid of riders who were team leaders just 36 times in 2022 – a surplus of 66 races. Their issues might not be as extreme as represented here as many of their additions come from non-World Tour level teams and/or are developing riders who might need a year before becoming full-fledged leaders. In fact, only 77% of the 2021 leaders on EF came while racing for a World Tour level team (86% is the average for the full World Tour).

All Leaders Aren’t Equal

We need to account for the difference acquiring a leader like Giacomo Nizzolo (who finished 1st on his team 60% of races at World Tour level) and one like Marijn Van Den Berg (moving to aforementioned EF Education) who led his team in 45% of races at U23 level. If we arbitrarily assign a weight of 1x for leaders while riding for World Tour teams, 0.67x for leaders while riding for Pro Tour teams, and 0.33x for any other leaders, we can get a better idea of how much competition there will be for leadership roles. At EF, they now rank third with a surplus of about 18%. The World Tour in general averages a 3% surplus by this method.

Doing that weighting shows BORA and Jumbo Visma as the two with the most competitive leadership competitions. BORA ranked 4th best in adding talent through transfers per ProCyclingStats and 2nd best at adding talent by my projections. They added climbers Aleksandr Vlasov, Jai Hindley, and Sergio Higuita who combined to lead their team 62 times in 2021, and sprinters Danny Van Poppel and Sam Bennett who combined to lead 41 times. Sprints-wise, they should be fine as they’re also losing Peter Sagan and Pascal Ackermann (47 races as leaders) and Van Poppel has also said he’s switching to support Bennett.

Where BORA will see the squeeze is in general classification and hilly/mountain stage leadership. Just filtering to leadership in hilly/mountainous races, BORA rode 94 races in 2021, while their currently employed riders were leaders of their team in such races 146 times! That’s a greater than 50% surplus – far beyond any other World Tour team.

BORA’s 2022 squad with 2021 data from hilly/mountainous races

Flip that around to flatter/classics races and Jumbo Visma looks to be the team with the most issues with too many leaders. Despite moving star sprinter Dylan Groenewegen onwards, they’ve still a tight squeeze. They have a surplus of 36% due to adding Christophe Laporte (punchy sprinter), Tosh Van Der Sande (leadout man), and Tiesj Benoot (classics rider). What looks most likely is that those three will simply sacrifice more of their own ambitions to support Wout Van Aert in classics and young sprinters like David Dekker and Olav Kooij in flatter races.

I wrote in my 2022 team projections piece about DSM’s losses in the transfer market. They were especially hard hit in the climbers/GC riders department where they lost Michael Storer, Jai Hindley, Tiesj Benoot, and Ilan Van Wilder. Those four combined to lead in 34 of DSM’s 102 hilly/mountainous races in 2021 and the other transferred out riders combined for 9 more for a total of 42% of DSM’s races being led by riders leaving the team. They only added a sprinter – John Degenkolb – from a World Tour team, with the rest of their additions coming from lower level squads. Still on the team is Romain Bardet (leader in 63% of hilly/mountainous races he entered), but no one else who led in more than 20% of their hilly/mountainous. In races without Bardet, they’ll be handing out leadership opportunities to their wide array of young climbing talent and hoping for quick development.

Team DSM’s 2022 squad with 2021 data from hilly/mountainous races

Competition for Leadership vs Depth/Optionality

The flip-side of framing this as an issue of too many leaders is that talented riders who were leaders in smaller teams can now move up and support superstars like Van Aert. The team also has cover in case of injury; for Jumbo Visma, if Van Aert suffers an injury their spring classics season isn’t completely ruined as they can plug in competent classics riders like Benoot or Laporte.

BORA just released their preliminary plans for the three grand tours, but they also have the option within those plans to either leave off a rider who is struggling with form or choose to fully back a rider in strong form for GC. Between Buchmann, Vlasov, Kelderman, Hindley, and Schachmann they have riders who have finished 4th in Tour de France, 4th in the Giro, 2nd/3rd in the same Giro, and won a World Tour stage race in back-to-back years. And that ignores Higuita, Konrad, and Kamna who have won grand tour stages in the last three years. There’s definitely option value there in knowing that you can select the best of that bunch for your main focus in major races.

Projected Team Points for 2022

It’s not really the start of sports season if an analyst doesn’t produce projections, so I’ve whipped up some basic points projections for the cycling World Tour and Pro Tour teams.

A few points on methodology:

  1. I’ve used the PCS Points from ProCyclingStats.com at the rider-level to build these.
  2. I’ve built a very basic model for projecting points which only knows what a rider did the previous season, how old they are (age matters!), and whether their team is at World Tour or not. Only riders competing in the following year on a World Tour or Pro Tour (and ProConti for past years) level were modelled. Obviously what happened in 2019 and 2020 is relevant, but I will leave a more advanced model to next season.
  3. All riders with a Pro Tour or World Tour contract as of start of this January were predicted for 2022, with their projected points aggregated to determine the collective points projections for each team.
  4. That’s it. I did nothing to account for 2021 injuries, changes in how riders would be deployed across races, and any #gainz which may have occurred over the off-season. This is certainly wrong as many riders who missed large chunks of 2021 will race full schedules in 2022 (Caleb Ewan, Remco Evenepoel, etc.) and we’re already seeing injuries to riders like Mathieu Van Der Poel which will affect points earned in 2022.

Rider Level Projections

A model which just considers the previous year’s performance + age and level of team will tend to produce projections which closely match the rankings from the previous year. The same top five from 2021 is projected to be the top five in 2022, while young stars like Remco Evenepoel (17th in 2021 to 11th in 2022) and Ethan Hayter (26th in 2021 to 17th in 2022) are projected to improve their ranking. Older riders are projected to decline with Alejandro Valverde (12th to 37th) and Mark Cavendish (22nd to 32nd) being the sharpest expected declines.

Above graph describes how riders tend to retain points from year 1 to year 2. Peak age riders tend to regress about 20% or said another way they retain about 80% of their points the next year. Riders who score highest number of points tend to regress more in year 2, while those scoring closer to zero point in year 1 regress less. Younger riders tend to hold onto their points the most (though even highest point riders here tend to regress more). Older riders fall off significantly with a rider scoring 1000 points in year 1 at age 35 retaining more like 70% of their points in year 2.

However, these rider projections are fairly dumb; a projection system which ignores Mark Cavendish doing nothing for four seasons before resurrecting his career is probably not going to make great specific projections for riders. Where I hope the projections do well is at the aggregate team-level where the errors of predicting 25-30 individual riders can cancel each other out.

Team Level Projections

Based on individual rider projections/performances, I created three different team totals: 1) 2021 points earned by the team, 2) the 2021 points earned by the riders employed for 2022, and 3) the projected 2022 points earned by the riders employed for 2022. This way I can calculate who hired the best new riders vs who lost the best riders vs who has riders most primed to improve or decline. Delta due to rider development shows how riders are expected to earn points differently in 2022 vs 2021 due to age or regression. Delta due to Transfers shows how teams added either better or worse riders based on 2021 points. Eg, EF Education hired better riders based on 2021, while Lotto Soudal hired worse riders. However, Lotto is expected to improve due to age in 2022.

World Tour Team Projections for 2022

Of the 18 World Tour teams, I see EF Education improving the most versus 2021 – primarily due to transfers. They signed four top 200 riders in my PCS Points projections (equivalent to a ~top 10 rider on the average team) including Esteban Chaves (projected as their 2nd best rider in 2022). They have only lost three riders who signed with a Pro Tour or World Tour team – headlined by Sergio Higuita (103rd best rider in 2021).

BORA-Hansgrohe is another who looks set to improve significantly due to incoming transfers. They signed the 26th, 29th, 86th, and 88th best riders in my 2022 projections with Sam Bennett hoping to return to his ‘best sprinter in the world’ form. They also added the aforementioned Higuita and Aleksandr Vlasov. BORA loses two strong riders in Peter Sagan and Pascal Ackermann, but they should come out ahead on aggregate.

Lotto-Soudal and Team DSM should improve primarily from internal development of younger riders. DSM is by far the youngest team in the World Tour but has a lot of the early 20s riders who tend to increase significantly. DSM do have to deal with significant losses due to transfers as they were the hardest hit team in percentage terms. Lotto also has a lot of younger riders and do not have any significant regression candidates as their top scoring rider in 2021 was Tim Wellens at only 65th in PCS Points. Caleb Ewan will also presumably have a healthier season (21st and 11th in 2019-20 PCS Points).

My model also projects Quick Step to not lead the World Tour in PCS Points in 2022 (falling just short of UAE Team Emirates by 200 points). They have led in total points accumulated every year since 2013, but the model sees significant riders lost (Joao Almeida in particular ranked 5th in 2021) and significant decline from its current crop of riders (Cavendish in particular). However, the model doesn’t know Quick Step basically got half a season each out of two very promising young riders in Remco Evenepoel and Fabio Jakobsen. My bet is the Belgians manage to pull off their tenth straight #1 ranking by the end of the year.

Among Pro Tour teams, three teams stood out in 2021: Alpecin Fenix out-earned twelve World Tour teams, while Arkea Samsic and Team TotalEnergies earned points like the weakest World Tour squads. The projections see modest regression for both Alpecin and Arkea driven by regression for their top performers and not particularly strong transfers. Team TotalEnergies added Peter Sagan – once the best rider in the world – and should be improved by 30% due to their quality of transfers, but they also are a quite old team which means their gains will probably be more modest in the end.

Pro Tour Projections for 2022

Among others, Kern Pharma is a very young team which should improve due to aging of their riders. They also signed Hector Carretero from Movistar World Tour team who would’ve ranked third on their team in points in 2021. Along with that, they lose only a single rider from 2021.

Uno-X is a team which the projections aren’t particularly high on, but which may be able to improve in ways the models are ignorant of. They are adding Tobias and Anders Halland Johannsen – two elite U23 riders who finished 1st/2nd (Tobias) and 7th/8th (Anders) in the two major U23 races in France and Italy. The U23 points scales on PCS are probably underweighted relative to the difficulty of those races so the Johannsen’s are better positioned to earn points. Not accounting for new opportunities / lesser opportunities for transferred riders is another blind-spot of my model.

Impact of Aging on Performance

Like all physical competitions, cycling is impacted by aging. Younger riders improve their race craft, get access to better coaching/training, and physically mature. Older riders suffer injuries and physical deterioration and succumb to mental pressures of years spent training, travelling, and competing. Younger riders get faster and smarter. Older riders get slower and more worn-down.

Research on many team sports indicate varied “peak” ages for players between early 20s and 30s for different sports. For example, this Baseball Prospectus piece reviews three different approaches and finds somewhere between 26-28 as peak age for hitters. This CJ Turturo piece examines the impact of aging in NHL hockey and finds age 22 as peak for forwards, age 24 for defenders, and age 27 for goalies (part II of that document). Others in studies quoted by Turturo have found 25 for forwards, 22 for defenders, and 24 for all skaters. In 2013, I found golfers peak in their early 30s, which makes sense as golfer is less of an physically demanding sport compared to baseball or hockey. In a later study, I found different aging curves for different skillsets within golf.

I applied similar methodology to these studies above to identify the aging curve in cycling, from which we can derive a peak age and determine how much we should expect young cyclists to improve and old cyclists to decline. Using the delta method where a rider season is compared to the following rider season identified a peak around 26-27 with riders improving before that age and declining after that age. Using the GAM method where a curve is fit to all rider careers identified 26-28 as the peak with riders improving before those ages and declining after 28. The two methods differ in the steepness of the aging curves; delta method shows a steeper curve of improvement < age 25, while GAM method shows a less steep curve of improvement at those ages and a much sharper decline from age 35 onwards.

Methodology and Data

I gathered PCS points per season (raw total) for each rider between 2010 and 2021. PCS points are awarded for race finishes, GC finishes, and points/mountains jersey finishes. The top points scorers tend to reflect who is considered the top riders, but in my opinion they overweight success in one day races and underweight success in stage races (in the individual stages). Nevertheless, they are a well-accepted and discussed data point which is available consistently going back over a decade.

One thing to consider is accumulating PCS points is part performance and part opportunity. A rider who at age 22 races for a Continental level team as the leader in U23 races and at age 23 races for a World Tour team as a domestique will have fewer opportunities to earn points (though improved performance may cancel that out and there are always freaks like Pogacar and Evenepoel).

I also adjusted points earned in 2020 and 2021 to account for the impact of Coronavirus on races being held. 2020 had 14% fewer points earned and 2021 had 3% fewer points earned than an average season.

Important to note: I am using age on June 30th of that season as the age for that season when binning, but otherwise am using continuous ages relative to that June 30th date. Eg, Peter Sagan (January 1990 DOB) is considered as a discrete age 32 in 2022 (as he will be 32 on June 30th) and a continuous age of 32.4 in 2022 (as he will be 32 and 5 months on June 30th). Some other websites report current age and/or use discrete ages which will make ages look lower.


For the delta method, I simply compared points accumulated by a rider in year 1 to those accumulated by that rider in year 2. I used the rider’s age on June 30 of year to determine the rider’s age for that season. The delta method just measures the change between year 1 and year 2, averages across all riders at that age, and ascribes the total average change to aging. My yearly age samples for seasons in the mid-20s were over 1500 and were over 500 for all seasons between 20-33 and over 100 for all seasons between 19-38.

Riders improved their PCS points from 19-20, 20-21, and 21-22 by an average of 88% (eg, 100 points to 188 points). Age 22-23 and 23-24 earned improvements of an average of 38%, followed by 15% from age 24-25. At that point, performance was fairly steady from 25-26 to 28-29 at between up 5% and down 4%. The peak age seems to be from 26 into 27.

Performance starts declining more significantly as a rider moves into their 30s (an average of -12% down for 29-30, 30-31, 31-32, 32-33, and 33-34). The sharper declines follow that, averaging 25% down from age 34 onwards.

Aging impacts at each age produced by Delta Method


For the GAM method, I built a non-linear model which aims to approximate the average aging curve for the full population of riders across their career. The model is in the form of PCS_PTS ~ s(age) + rider so that the overall model finds the average curve over a career; the rider term allows for the height of the curve to vary between massively successful riders like Froome and Cancellara and lower level riders who have scored few points. I included all seasons where riders were between 19 and 38 years old (the ages for which I had > 100 rider samples) and all riders with 4+ seasons in my 12 year sample (using 4+ or 6+ seasons did not impact results).

The aging curve produced was very similar to the delta method. What differed was that the growth curve for riders at 23-24 and under was also much shallower (average of 30% from 19-20, 20-21, 21-22 instead of the 88% from delta method and average of 15% from 22-23 and 23-24 instead of 38% from delta method). The decline curve was sharper after age 35 with 35-36, 36-37, and 37-38 meaning an average decline of 48% instead of 25% shown by delta method.

Aging curve at each age based on GAM Method

This GAM method graph should be interpreted slightly differently as the average progression for a rider throughout their career. The Delta method graph just shows the average change in points season to season at each age. Notably, older ages feature better riders (eg, age 34 is actually the peak for average PCS Points per season because you’ve filtered down to riders who have aged better than the average rider).

What does this mean for 2022?

Summarizing the results of these two approaches, we can see 1) riders tend to improve in earning PCS Points thru age 24 into age 25, 2) riders tend to earn similar PCS Points from age 25 through age 29, and 3) riders start declining in PCS Points earned from 30 onwards, accelerating from age 32-33 onwards.

Among top riders who are in that age 32-34 range we have sprinters like Elia Viviani, Giacomo Nizzolo, and Matteo Trentin, punchier riders like Diego Ulissi and Ion Izagirre, and climbers like Mikel Landa, Primoz Roglic, and Rafal Majka. The most prominent rider who switched teams over the winter was Peter Sagan who will be 32 for the entire season. Some of these riders will decline – some precipitously – while others will fend off age and produce just as strong as season as 2021.

In the aggregate though, these aging curves suggest teams which are more comprised of 30+ year old riders will fall-off more than those with younger riders. Among the World Tour teams, Israel Start-up Nation had the oldest roster in 2021 and now again in 2022 with their 30.8 year old average. Based on this aging curve, their riders are set to decline by 5% on average from their 2021 point totals. Since last year, their major additions were Nizzolo (age 33), Jakob Fuglsang (age 37), and Hugo Houle (age 31).

Team TotalEnergies races at the Pro Tour level and is the team which signed Peter Sagan (along with several of his mid to late 30s support riders). Their average team age ballooned from 28.9 in 2021 to 30.6 in 2022. They are also in-line for a 5% overall decline in their performance versus 2021. Those aren’t huge declines, but considering the salaries being paid to stars like Nizzolo, Fuglsang, and Sagan and the performances expected, they will be fighting against that current to produce.

Average Team age in 2021 and 2022

The younger teams most likely to improve collectively in 2022 mostly race at that Pro Tour level. Equipo Kern Pharma, Sport Vlaanderen, UNO-X, and Bardiani will all average under 25 years old in 2022. Those four are projected to improve just by aging by 7-9% in 2022 versus their 2021 performance.

However the most interesting team is Team DSM in the World Tour. DSM has added eight riders in 2022 – six of them under 25 – while they lost their two oldest riders from 2021. They are the only World Tour team with an average age under 27 in 2022 (25.7 years old). They are expected to improve collectively by around 5% versus 2021 performance by the aging curve. Riders like Kevin Vermaerke, Thymen Arensmen, Mark Donovan, and Andreas Leknessund all fit the bill of having previous World Tour experience + being aged 23 and under.

Difficulty of achieving GC results in different races

This is the time of year for cycling teams to plan their riders’ programs for the new year and for media/fans to speculate about which races riders will go for in 2022. Part of that process is trying to figure out where riders are best suited to get results – especially in the grand tours (of which we know all three routes now). On the horizon, there’s also been discussion around potential relegation of teams from the top level World Tour and how teams can best optimize their schedules to avoid that relegation.

A lot of the work I did with professional golfers was related to scheduling: where they would be able to play their best golf and where that best golf would be most rewarded by the arcane point system in professional golf. I’ve applied that type of approach below to identify: 1) how difficult it is to achieve different results in stage races and 2) where those results are disproportionately rewarded by cycling’s own arcane points system.

First, it’s not much more difficult to achieve results in the three three-week long grand tours than it is in the week-long stage races in the World Tour. Generally, it’s the same set of riders competing for those results whether it’s the Tour of the Basque Country or the Vuelta a Espana.

Second, grand tour success is heavily rewarded relative to other races. GC positions which are equally difficult to achieve can be rewarded 2x more in grand tours relative to those other World Tour stage races and sometimes 3x more in grand tours relative to other lower level stage races.

These two findings explain why teams and riders compete so much for minor top 10 placings in grand tours even when those minor placings are ~10 minutes back of the GC leader.

Difficulty of achieving GC results

The easiest way to compare the difficulty of achieving a GC result in one race vs another is to simply compare results within the same rider/season. Eg, Tadej Pogacar raced five stage races in 2021 coming in 1st in UAE Tour, 1st in Tirreno Adriatico, 3rd in Basque Country, 1st in Slovenia, and 1st in Tour de France. Based on those five finishes and completely ignoring any context around them, we might judge Basque Country race as the toughest as Pogacar failed to win there.

However, we have hundreds of similar comparisons between these races just from the last decade of results. 227 riders have ridden Basque Country and Tour de France in the same season in the last eight years. 123 have ridden Basque Country and Tirreno Adriatico, 36 have ridden Basque Country and UAE Tour, and 30 have ridden Basque Country and Slovenia. We can leverage those comparisons to judge the relative difficulty between each pair of two races.

Race difficulty comparisons for Tour of Basque Country (2014-21)

Above I’ve shown these aggregate difficulty comparisons for Tour of Basque Country and the ~40 races with at least 30 comparisons in 2014-21. They’re ordered by difficulty where the last column value is the expected finishing position in Race A (Basque Country) given a 5th place GC finish on Race B. Eg, if a rider finishes 5th in the Tour de France they would be expected to achieve an equivalent of 4.3 in Basque Country.

Pogacar’s 2021 races are highlighted in red where Tour de France is the toughest, UAE and Tirreno are similar difficulty to Basque Country (expected finishes of 5.2 and 5.5), and Slovenia is viewed as much easier with expected finish of 18th in Basque Country for someone finishing 5th in Slovenia.

This method confirms the primacy in difficulty of the Tour de France as every comparison race is easier to achieve results in than the Tour. However, it also shows the two other grand tours are not any more difficult to achieve results in than the bigger week-long World Tour races like Basque Country, Tour of Catalonia, Tirreno Adriatico, Paris-Nice, and the Dauphine. A 5th in the Giro d’Italia is worth about 5.6 in those five races on average. A 5th in the Vuelta a Espana is similarly worth about a 4.6 in those five races on average. A 5th in the Tour de France is worth a 3.8.

Scaling all races versus those five week-long stage races shows the following hierarchy:

Below I’ve included my top 20 GC riders entering the Tour of the Basque Country in April and whether they raced Basque Country and the three grand tours in 2021. 12 of the top 20 raced Basque Country – including the two clear best – while 14 of the top 20 raced the Tour de France, only 5 of the top 20 raced the Giro, and 12 of the top 20 raced the Vuelta.

UCI Points

There are two popular point system in professional cycling: the unofficial ProCyclingStats points – which I’ve referenced before – and the official UCI points – which determine team eligibility for the World Tour and other qualifications. The point system is explained well here by INRNG, but basically the UCI decides how to group races together and assigns them different points (eg, the Tour de France is its own category awarding between 18-25% more points for a given placings than the Giro or Vuelta and more than 3x more points than the minor World Tour stage races).

We can use those scales to make equivalencies between what the UCI thinks are similar finishes. Eg, a 12th place finish in the Giro or Vuelta is worth 8th place in Catalonia or Basque Country, 13th place in the Tour de France, and 7th in UAE Tour. Moving outside the World Tour races, that 12th place is worth 2nd place in a 2.1 stage race (Tour of Sicily, Route Occitanie) and 4th in a 2.Pro stage race (Arctic Race Norway, Tour of Denmark).

The UCI is saying 5th place in the Tour de France is worth 1st place in those big week-long stage races, 4th place in the Giro/Vuelta, and more than 1st place in every other stage race.

Rewards vs Difficulty

We can combine these two difficulty measures from my research and UCI point scales to find which races over and under-reward finishing highly. I use my research from above to find equivalent performances and then look to see how those are rewarded between races. Eg, I found it roughly equal in difficulty to finish 5th at Vuelta a Espana and Basque Country. However, Vuelta rewards finishing 5th with 2x the UCI points as Basque Country.

Relative reward of 5th in Basque Country vs equivalent finish in other races

Basque Country is rewarded between 50-75% as much for eleven World Tour stage races, but is rewarded 2x as much for the minor 2.1 level stage races like Valencia, Besseges, and Alpes Maritimes. These races attract difficult fields, but are shorter/lower level so they receive fewer points for equivalently difficult results.

The Sweet Spot

So earlier I said the sweet spot in terms of rewards were grand tours with the inverse being some of these week-long stage races at World Tour level. That is without factoring in the time the race takes (grand tours require 24 days of racing with rest leading in and recovery time leading out while the Basque Country is only 6 days of racing with many riders taking just a week before and after between races). Obviously if you’re optimizing at the team level with this data, you’ll factor greater time commitment for grand tours and the position of races on the schedule into planning.

Many of these effects are driven by different strength of fields in different races. I’ve shown GC ratings for riders before (others like PCS have similar rankings). Aggregating those ratings by race yields this plot where the x axis shows the strength of the riders in that race. Eg, Tour de France has the strongest field of GC riders, followed by the Vuelta. Part of the reason results are difficult to achieve in Catalonia and Basque Country are because they rank 3rd and 4th in strength of their riders. The Giro shows up as having a relatively weaker field (more comparable to the week-long stage races) which means the rewards in terms of UCI points are higher for equivalent positions.

Finding the Sprint MVPs

Professional cycling is a team sport, with a clearly defined roster for each race (startlist) and coaches directing strategy both pre-race and during the race. As such, teammates and the team a rider is on matter significantly for success. This is probably most apparent in the final kilometers of a bunch sprint race where teams jockey for position, attempting to deliver their fast man to the finish line in the best position to win the race.

Evaluating sprinters within this eco-system is difficult. Javi Angulo has a recent piece using the Glicko method (using head to head results) to rate sprinters where he rates top sprinter at end of 2021. Teun van Erp and Rob Lamberts (with an assist from multi-TDF winner Marcel Kittel) use video and power analysis to analyze the determinants of sprint performance in a 2021 study. Besides these detailed analyses, we can use stats like win rate/podium rate/average rank/PCS points won to judge sprint performance at a more superficial level.

But what about measuring the impact on sprint performance of teammates?

I’ve designed a handful of methods which could illuminate our knowledge on this subject. These methods all have clear flaws – most notably that we do not know team strategy/roles within team.

Simple win or loss calculations

At the most basic, we can assume teammates share equal credit for victories in bunch sprints (and equal penalty for not winning). Therefore we can calculate each rider’s team win rate in bunch sprints (I’ve included all 2.1/1.1 or higher races where 20+ riders finished within 3 seconds of the winner).

For 2021, the top results are above. If you follow World Tour rosters closely you’ll realize that all ten of these riders are Quick Step riders – the team which year-on-year dominates the sport. The results are not so Quick Step biased in every year, but they show impact of multi-collinearity (a fancy statistics way of saying that it’s difficult to tease out the unique impact of multiple different factors when you rarely observe them apart from each other).

Eg, in 2020, the top five riders are Arnaud Demare and his sprint train. At least three of them + Demare raced together in bunch sprints 24 times in 2020 (16 times with all five riders together). Demare raced in a bunch sprint just one other time and the other riders were in just five bunch sprints apart from Demare. So was Demare’s extreme success in 2020 (11 wins in 25 races) mostly his dominance, mostly his teammates dominance, or a mix?

We can look at larger samples of seasons to try to look at changes in team personnel. However, looking at Demare’s team going back to 2018 still sees 112 bunch sprints where 66 came with at least three of his sprint lieutenants in the lineup and another 35 with two of the four riders present. FDJ has raced 234 bunch sprints without Demare and won 4% of the bunch sprints vs 26% in 112 races with Demare.

With all four of his helpers, Demare has won 37%. With three of the four, he’s won 23%, with just two he’s won 17%, but with 0 or 1 he’s won 27%. So while it looks like more sprint helpers/more familiar helpers means better results, we’re not much closer to saying how important Demare is vs his helpers vs his team.

We can expand this analysis and just credit riders for team wins where they were present in the bunch at the end of the race. For example, Tim Declercq was only in the bunch for 5 of 24 bunch sprints in 2021 season vs 72% for Michael Morkov. Perhaps if we’re analysing who has the most impact on bunch sprints, we should ignore riders who weren’t present? Of course, it’s likely that without Declercq some of those bunch sprints would have turned into either breakaway victories or a late attack would’ve been launched or Quick Step would’ve burnt other riders essential to the sprint train.

Who Does the Team Trust?

Too much of sports analytics is results oriented, but there is loads of information that is not captured by the result. Teams are privy to training data, injury data, interpersonal relationships, and much else that we can access by looking at how team directors choose their lineups. Eg, analytical models based on results would probably tell you Cavendish shouldn’t have been in the start list for the Tour de France, but Quick Step had seen enough from Cav to think he was the best option to sprint.

We can look at which start lists to see who teams trust to race alongside their best sprinters. To do this analysis, I built a simple rating system for sprinters based on their finishing positions which easily discriminates between the best sprinters (eg, Bennett, Ewan, Van Aert in 2020-21) and also-rans. I then looked at how riders in a team were deployed alongside sprinters. Eg, if Quick Step sends Morkov to a race with Sam Bennett, but Pieter Serry to race with a lesser sprinter like Alvaro Hodeg that might say something in the aggregate.

For 2020-21, Sam Bennett raced with the highest quality best sprinter (obviously as he is one of the best in the world and was the best sprinter on his team in every race he participated in). More interestingly, Morkov was the clear 2nd place rider as he raced with Bennett in 42 of 62 bunch sprints (and 42 of 46 bunch sprints that Bennett participated in). At the bottom of the list are riders who were mainly deployed alongside weaker sprinters or in lineups without a clear sprinter like Honore, Serry, and Vansevenant.

For the full peloton, the top 10 of riders who were not the best sprinter on their team a majority of races is below:

We see Morkov appear along with three of Caleb Ewan’s dedicated sprint train from Lotto Soudal and four of FDJ’s previously discussed sprint train for Demare. Theuns typically rides with Stuyven and/or Pedersen and Consonni was the main support for Elia Viviani.

At the other end of the list are riders typically not deployed with top sprinters at least on teams that have one.

We can also simply look at which riders raced alongside the top sprinters in the highest percentage of bunch sprint races from 2020-21. Eg, for Sam Bennett the importance of Morkov is obvious as Morkov featured with him in 91% of bunch sprints vs 48% for the next highest Quick Step rider. Caleb Ewan relied on both Roger Kluge and Jasper de Buyst for 84%+ of his bunch sprints. The aforementioned FDJ sprint train represents four the eleven most common pairings between top sprinters and a teammate. The other standout was the pairing of Gaviria-Richeze for Team UAE. Richeze missed just one of Gaviria’s bunch sprints in 2020-21.

Advanced Statistical Models

Statistical models for teasing out multi-collinearity do exist. One promising approach used in sports like basketball or hockey is regularization (where coefficients are penalized using Lasso or Ridge regression). Running lasso regression on this type of data essentially produces coefficient estimates which are often zero if the model can’t determine that the term is significantly impacting the results.

To set up the data, I’ve filtered first for riders with 60+ bunch sprints in the last four seasons (2017-20) and then set-up a matrix with a 1 in the rider’s column if they were in that race or a 0 if not. This produces a matrix with over 400 riders. The regression is just run on a binary outcome of a win for the team or not (could run a similar regression of finishing position or podium as well). I’ve also controlled for quality of the best sprinter on the team for each race and the level (.1, Pro, or World Tour) of the race.

Training the model on 2017-20 and testing on 2021 yields interesting results with honestly some nonsensical results at the individual rider level (the top impact rider is Damien Howson – a climber who apparently improves his teams chances of winning a sprint from 6% to 17%). Many of the other top impacts seem believable; eg, I could believe Davide Ballerini increases his team’s chances of winning from 6% to 12% because someone has to be responsible for Quick Step’s incredible ability to win sprints year-after-year.

Turning to the predictions at race level in 2021, Quick Step’s Volta ao Algarve squad in stage 1 was seen as best positioned to win a race of the season. That is driven by Sam Bennett being really good, but also the model viewing riders like Jakobsen, Morkov, Asgreen, Archbold, and Ballerini as all having strong impact on winning. They are viewed with 47% probability of winning stage 1. With Bennett, but with six neutral teammates, they would have only 15% probability.

To evaluate the model I compared it to the predictions with a neutral model (just considering ability of best sprinter). If this model says anything valuable, we’ll see a difference between the quality of prediction for model and the neutral model. We can also compare to a completely naive model which just assigns every team a probability of 1 / N teams in race.

MetricLasso ModelNeutral ModelNaive Model
Mean Square Error0.03930.04140.0445

The mean square error of these three different predictions show the neutral model improves on the naive model by 0.031 or about 7% improvement towards perfect. So knowing how good the best sprinter on the team is vs knowing nothing is worth about 7% gain.

The Lasso model which judges impact of individual riders is worth another 4.5% of improvement over the neutral model. So knowing the impact of all riders on probability of winning is about two thirds as valuable as knowing the ability of best sprinter.

No correlation between metrics

My sense is this model is not ready for primetime as there is no correlation between the coefficient produced by the lasso model and how often riders are deployed with the best sprinters. It seems likely that judging a rider’s ability to impact sprint results based off how their team deploys them yields the most useful information.

Evaluating Riders: Log Rank

Evaluating rider performance in professional cycling is a hard problem. While more advanced statistics like climbing times, segment times, survival with leading group, and others are available for certain races and certain riders, for most races and certainly for anything historical we’re left with something like this PCS result table: finishing rank in race, maybe UCI points, PCS points, and time gaps.

So any rider performance statistic has to be based on one of those three data-points: time gaps, points, or finishing rank. Each has its place.

Time gaps are a very poor way to evaluate success in a bunch sprint where 100 riders might finish on the same time, but they can be a good way to evaluate success on a mountain stage with an uphill finish.

PCS points have been developed into a widely used evaluative method which recognizes that success in cycling can be achieved in a wide array of competitions (GC, race wins, jersey competitions) and has dozens of different scales which are used for different quality of races, but fundamentally their point scales are opinions on the value of different results relative to each other.

Finally, finishing rank is often used to count victories, podiums, or top 10 finishes across the season, but is plagued by vastly different difficulty levels to achieve certain results (how good is 3rd in a World Tour race relative to 1st in a .1 race?). Ranks are often notoriously difficult to take averages of; Wout Van Aert’s transcendent 2021 Tour de France yielded an average rank of 25th for a return of 3 stage wins, just behind Enric Mas’s 6th on GC with nary a stage podium finish.

In recent months, I’ve developed my own tweaks to use finishing rank as an evaluative method, producing a stat I’m calling Log Rank. The handful of keys to make it work are:

  1. All finishing ranks in a race are transformed by taking the natural logarithm. This produces a value system where the difference between finishing 1st vs 5th are large, while the difference between finishing 50th vs 100th is not as large. The red dots below show equal gaps between results; so 1st and 3rd are separated about as much as 3rd and 7th/8th. However 1st and 7th/8th are separated equally as 7th/8th and 55th. I think this is a fairly intuitive appraisal of the value of different finishing positions.

2. Using these transformed ranks, taking averages are much easier. For example, Wout Van Aert’s final week of Tour de France where he finished 25th, 40th, 36th, 43rd, 1st, 1st (average 24th) are transformed into 3.2, 3.7, 3.6, 3.8, 0, 0 (average log rank of 2.4) which can be re-transformed back into average rank of 11th (by taking e^x where x = average log rank). Basically, this says we care way more about Van Aert’s two victories than the fact he finished outside the top 20 in those other races. In fact, he could have finished 50th in those four stages (new average of 34th), but his log rank would only change to 13th.

3. The difficulty of different races are found by an objective system which looks at how difficult it is to achieve certain results in different level races. For example, in recent seasons it is roughly similar difficulty to achieve a 10th place in an U23 2.2 level race as a 27th place in a World Tour race. Using a host of these type of comparisons, I’ve created a Strength of Peloton rating system to judge all level of races against each other based on the difficulty to achieve certain levels of results. All that needs to be said here is that results are adjusted based on what type of races they were achieved in. For example, Ethan Hayter and Tadej Pogacar achieved very similar raw finishing ranks in 2021, but Pogacar did so against the 4th toughest pelotons and Hayter only around the 600th toughest.

2021 Log Rank Rankings

Applying those three steps yields the following top 10 for all 2021 results, just averaging all race results (ignoring time trials):

RiderAverage Log Rank
Wout Van Aert4.3
Tadej Pogacar4.9
Mathieu Van Der Poel5.0
Primoz Roglic6.9
Sam Bennett8.3
Sonny Colbrelli9.2
Ethan Hayter10.0
Jasper Philipsen10.2
David Gaudu10.4
Julian Alaphilippe11.6

Building on Log Rank

The next challenge was to build on this basic Log Rank to add in parcours level impacts of things like the climbing difficulty and whether the race ended in a bunch sprint. For example, Enric Mas raced 66 times on the road in non-time trials in 2021. If we’re judging how good of a rider he is we probably don’t care about where he finished in the flatter stages which littered the Tour de France and Vuelta a Espana. However, we care a lot about how he performed in the tougher climbing stages of those races and others.

The find the impact of climbing difficulty and a bunch sprint finish I set-up a mixed effects model which can be run over results from a given period of time (eg, July 2019 to June 2021 to predict performance going into the 2021 Tour de France). The model was specified using three random effects involving individual riders attempting to find a) their general level of ability to finish with a good finishing rank in races b) the impact of climbing difficulty on their finishes, and c) the impact of the race ending in a bunch sprint on their finishes.

lmer(log_rnk ~ (1 + climb_difficulty | rider) +
 (0 + bunch_sprint | rider)

Using this model, we would expect a sprinter like Sam Bennett who struggles in the hills and mountains, but generally ranks highly in terms of finishing rank to have a smaller individual coefficient (indicating that he generally achieves high finishes), a larger climbing difficulty coefficient (indicating that as races get tougher in terms of climbing his finish rank get larger/worse), and a negative bunch sprint coefficient (indicating that he finishes with better ranks when the race ends in a bunch sprint vs smaller group).

The model results for July 2019 to June 2021 show Bennett with about the 50th best general ability to finish highly (a above), the 20th worst impact of climbing difficulty (b above), and the 2nd best bunch sprint impact (c above). Overall, he would be expected to finish with an average rank of 3.7 in a flat, bunch sprint race – 2nd best in world between Wout Van Aert (3.1) and in front of Caleb Ewan (3.8).

We can similarly look for hilly races not ending in bunch sprints (prototypical classics race) where Mathieu Van Der Poel had the best prediction at that time at 6.8 – essentially tied with Wout Van Aert – and ahead of Roglic, Pogacar, Van Avermaet, and Alaphilippe.

The top predictions in high mountains race were unsurprisingly the three main recent grand tour winners: Pogacar, Roglic, and Bernal. They were followed by Mikel Landa and Adam Yates.

Where Does Separation Occur?

This post will be not cover particularly novel ground if you pay any attention to professional cycling. Many of the conclusions are obvious. However, if you find yourself in the know already, trust that this post is the necessary building block for more interesting work.

Fundamentally, cycling races can be viewed as war of attrition. As I laid out during this post and Dr. Seiler discusses in his video here, races normally feature a long stretch of steady efforts, before the pace is ramped up towards the end. This steadily increasing pace towards the back-end of the race is what creates separation between riders in most races. The exception is in some primarily flatter races which just do not feature the type of topography which results in time gaps and so the peloton finishes together in a bunch sprint. In all other races, separation is typically created – particularly on hills and/or mountainous sections of the race – but also on cobbled roads, gravel/poorly surfaced roads, in crosswinds, etc.

So that is a fan’s understanding, informed by some limited studying of power outputs on significant climbs across a large sample of races. However, we can leverage an even larger data-set of individual race segments on all types of flat, uphill, downhill, poor surface roads, etc. I’ve gathered a data-set of rider speeds on different length race segments primarily from 2020 professional season to do just that. There are 22,500 unique segments in this data-set covering 177 races.

What Produces Separation?

The metric of choice for showing separation is the time difference between 90th percentile in speed and 10th percentile in speed on a segment, divided by the median speed over that segment. Eg, if 90th percentile is 27 km/h, 10th percentile is 20 km/h, and median is 22 km/h the Separation Factor is about 32%. That is fairly high among all segments where the mean is 12% and median is 7%. The max Separation Factor for the average race is around 48% – typically a short segment.

Essentially treat the Separation Factor as the percentage difference in speed between riders racing the fastest and those racing the slowest. On the nine decisive final climbs in the 2020 Tour de France the Separation Factors averaged 29%, ranging between 18% for Col de la Loze and 39% for Orcieres-Merlette.

Separation factor average by gradient

Separation is primarily created by higher gradients. This is maybe the most blindingly obviously statement I’ve ever made, but there it is. Flatter or downhill segments created very little separation among the group on average, while uphill segments create increasingly more as the gradient increases from about 3% to over 10%.

When comparing segments on cobbles vs similar gradient segments on normal roads the rougher roads show a highly statistically significant difference of about 5 to 8% larger Separation Factor for cobbled sections vs normal roads, depending on how it is modelled (a model with gradient included tends to diminish the impact as many cobbled/white road sections are also uphill). The impact here is roughly a Separation Factor of 9% for a flat, non-cobbled segment vs 14% or higher for a flat, cobbled segment.

Separation factor by percentage thru race

And replicating the work done previously showing that power varied more in later stages of the races, segments further towards the end of a race provide for more separation than those earlier in the race, with the most significant increase in roughly the last third of the race.

Where is Separation Largest?

Clearly segments further through the race have the highest separation between fastest and slowest riders. But where does the moment with the largest separation occur in these races? For this sample of 177 races, the key moment on average is 88% through the race, with about 40% of races having this key moment in the last 3% of the race (or last 5km for a typical 180km race). It’s important to note a segment is counted as occurring based on where it ends within a race.

Where segment of max separation moment occurs in races

Again, to any fan of cycling the knowledge that the largest time gaps occur near the end of a race – particularly on summit finish climbs – is not novel. However, this data does show how rare it is for the segments which produce the largest time gaps to occur anywhere in the first half of the race.

Survival Probability (2020 TDF)

In recent years the Tour de France has added the live tracking feature to their online/second-screen coverage of the Tour. This telemetry data shows the position of every rider on the course (absent any errors/malfunctions/bike changes) throughout the race – including information about their speed, the road conditions, and wind conditions.

So far this has largely been exploited only as a social media activation tool for NTT (eg, on Twitter @letourdata). But knowing the position of every rider with their speed is obviously powerful information. For example, who was pulling in the lead group to try to extend the gap on stage 7 of this year’s Tour de France? How large was the group at the bottom of each final climb? How much time did Zakarin lose to the leaders on stage 8 on descents? Which Jumbo Visma domestique drove the pace the hardest on the climbs?

Leveraging this data, I’ve analyzed ten of the hilly or mountainous stages of this year’s Tour de France to look at the probability of staying with the front group (defined as the group with Primoz Roglic as he was in yellow for the lion’s share of these stages) over the stage. I’ve decided to ignore riders who spend the stage in the breakaway, but anyone who attacked away from Roglic (eg, Pogacar in stage 8) counts as surviving as well.

Survival Probability for Notable Stages

Survival probability with Roglic by rider type (Stage 8 2020 TDF)

Stage 8 was a short 141 km stage with three major climbs – Col de Mente at 82 km to the finish, Port de Bales at 37 km to the finish, and Col de Peyresourde at 11 km to the finish. Col de Mente did little to shake-up the peloton and almost all riders were able to come together to the bottom of the Port de Bales – a 12 km HC climb. That was where the major selection on the stage came; by the end of the climb, less than 20% of the riders in all rider types except Climbers had been distanced from the GC group. About 60% of Climbers survived Port de Bales with the GC group.

The selection for climbers came largely on the Peyresourde and about 30% of climbers survived with Roglic to the end of that climb (with nine riders finishing on the same time from the GC group).

Survival probability with Roglic by rider type (Stage 4 2020 TDF)

Compare that with Stage 4. Stage 4 was not particularly selective before the final climb with a handful of category 3/4 climbs leading up to the 1st category climb to Orcieres-Merlette. At the end of the final warm-up climb at 20 km to go at least 50% of domestiques and sprint train riders were still there along with upwards of 75% of puncheurs, mountain helpers, and climbers. The non-climbers were distanced quickly on the final climb, but it wasn’t until the final few kilometers of the stage that the selection was made among climbers and even then over 60% of them came to the line with Roglic (with 16 riders finishing on the same time).

Survival probability with Roglic by rider type (Stage 17 2020 TDF)

Stage 17 had two HC climbs – the Col de Madeleine summit came with 64 km left and the race finished on the Col de la Loze. The major selection here came very early on the Madeleine where already only half of climbers were left in the front group with 5 km to go on that climb. Riders were steadily distanced on Col de la Loze until the leaders came over the line with massive time gaps. The first six riders came in alone and there were 17 different groups in the top 20 riders.

Most Selective Climbs

The four most selective climbs for Climber rider types were Col de la Loze on Stage 17 (50% of climbers at beginning vs 12% at end), Montee du plateau des Glieres on Stage 18 (72% of climbers were left at beginning of climb and 22% at end), Col de Peyresourde on Stage 8 (54% at beginning and 27% at end), and Col de Madeleine on Stage 17 (100% at beginning and 50% at end).

For the full peloton, Col de la Loze (Stage 17) was the most selective overall, cutting the peloton down to less than a sixth of its size before the climb. The Madeleine (Stage 17), Port de Bales (Stage 8 penultimate climb), and Glieres (Stage 18) were the next most selective – each reducing the peloton to a fifth of its prior size.

With enough data it would be interesting to tease out the most important factors to make a climb selective. Is it the length, the gradient, a combination of the two, the position in the stage? Based on this limited sample of 50+ climbs, the two most important factors are the length in kilometers (long climbs are more selective) and the overall difficulty in terms of vertical gain (gradient * length). The difference in length and vertical gain between a typical HC climb like the Col de Madeleine and a 1st category climb like the Orcieres-Merlette climb is about five times more important than the difference in distance to the finish between a climb 100 km from the finish and one which is a summit finish. However, that is a very weak claim with only a dozen stages worth of data.

Other Survival Probabilities

Stage 6 2020 TDF
Stage 9 2020 TDF
Stage 12 2020 TDF
Stage 13 2020 TDF
Stage 14 2020 TDF
Stage 15 2020 TDF
Stage 16 2020 TDF
Stage 18 2020 TDF

Power Output Throughout Race

In recent posts I’ve explored race level weighted average power from top level riders. I’ve shown that power outputs are higher on tougher climbing stages, higher for riders in breakaways, lower on very hot race days, higher in one day races than stage races, and higher for higher placed riders. I’ve also dug into power output by rider types, showing that climbers have the widest spread between their max power output on climbing stages and their lowest power output on flatter stages.

Next I’m going to explore power outputs over the course of a race by exploiting power files for climbs throughout a race. I have over 15,000 unique rider/climb power files showing power output, gradient, distance, and position of each climb throughout a stage. These cover over 300 riders, for nearly 200 unique races, and over 650 different climbs within those races.

Where does power output diverge?

A simple model of a bike race is explained clearly by sports scientist Stephen Seiler in this Youtube video. Over the course of the race, riders raise the level of the race by raising power output. This steadily winnows the pack down. In a very selective race it may winnow down to 1 or 2 riders; in a less selective race you may go to the line with most of the peloton remaining. In the case of the 2020 World Championship Road Race in the video above, the race was very selective leading to a final group with six of the best riders in the world.

Average power output on climbs by position in the race

Exploiting these power files, we can draw a curve of the power required throughout the average stage. Interestingly, the curve does not follow this simple model of steadily increasing power. There’s a spike in the first quarter of the race where presumably the breakaway is being established, but power declines in the last 20 percent of the race.

However, this does not invalidate Seiler’s point as this graph considers all riders in the peloton. Of course, as riders are shed by the peloton because they cannot maintain the steadily increasing pace, they drop their power output and continue on to the finish at some lower pace. This is best illustrated by the gruppetto concept in stage races; each rider doesn’t struggle to the finish at the best pace they can maintain. Instead, they are happy to reduce their power output and save their energy for another day.

When I re-create the chart above only stratified into riders finishing top 10, 11-25, 26-50, and 51-100, we see a clear divergence in power over the course of a race. And for those in the top 10 we see a steadily increasing curve from around 4.80-5.00 watts/kg in the first half of the race to about 6.00 watts/kg in the final stages. For riders finishing outside the top 100 we see a steady decline in power output from again around 4.70 to 4.80 watts/kg in the first half to around 4.20 watts/kg in the final stages.

Power output throughout race by finish position

That divergence really appears around 60-70% through the race. Riders in the top 50 but not top 25 can hang on until around 65% through the race, while riders in the top 25 but not top 10 can stick until about 80% through. Of course, nothing is ever this cut and dried considering different parcours with more or fewer climbs, but this gives an idea of the averages across pro races.

Power output by rider type

Leveraging the rider cluster types introduced here and further discussed here we can draw similar curves for six basic rider types. You can see three clear groups: climbers, mountain helpers/puncheurs, and sprinters/sprint train/domestiques. These shows obvious trends where non-climbers are declining in power in the last third of the race and climbers are increasing in power over that time.

Pre-defined rider clusters show obvious trends in power output across the race


Most interesting is how this model can be applied to identify the toughest obstacle for a rider in a race. A lot of cycling commentary focuses around whether certain riders can overcame a tough climb with the final group – often because that rider has a faster sprint and will beat those riders if they can stick around. These findings can be applied to identify where that most critical obstacle to overcome is located within a race.

To do so, we have to establish a baseline level of power output. This should not be the average level or the level maintained by the peloton at the start of the race, but instead some lower level that is theoretically the floor for a rider in the World Tour/Pro Conti peloton. I would propose using that roughly 4.00 watts/kg level that riders outside the top 100 finishers maintain in closing stages of a race.

We can then scale power outputs relative to that baseline 4.00 watts/kg level. To stick with the final group we can look at what is required for top 10 or top 25 finishers on final climbs. On average, this is in excess of 5.50 watts/kg up to 6.00 watts/kg. This is about 1.5-2.0 watts/kg higher than our baseline. We can also look at what is maintained by riders in the first half to two thirds of the race. That 4.70-4.80 watts/kg level is about 0.7-0.8 watts/kg higher than our baseline. To bring it all together, the curve below approximates the power required to get over the average climb with the lead group based on that climb’s position within the race – all scaled relative to a final climb.

We can see the first 60% of the race or so requires about 35-40% of the power over baseline compared to the final climb. This increases steadily then from that point. The first 25% is likely slightly higher as the breakaway is established here in many races.

An example from 2019 Il Lombardia is shown below with climb difficulty estimates for each climb. These climbing difficulties are based on gradient, distance, and elevation of each climb so that a typical category 1 climb in a grand tour is around 10.0 and a typical category 2 climb in a grand tour is around a 5.0.

Climbing difficulty for climbs in 2019 Il Lombardia (adjusted for position in race in red)

Lombardia had six climbs in 2019, two of the 1st category difficulty, three of 2nd category difficulty, and one of the third category difficulty. However, because of how the easiest climb (Battaglia) was placed in the race, it was likely to require more power to overcome than the three 2nd category climbs in the first 180 km. The Sormano climb is the objectively tougher climb without considering position compared to Civiglio or others, but Civiglio’s later position in the race makes it a much more equal comparison.