8

Many cycling analytics apps like Strava, TrainingPeaks or GoldenCheetah are offering the critical power curve chart, computed from the power meter data.

I'm familiar with the curve meaning and usage, but I'm curious how the curve is computed from the time series. I guess it is a more general statistical method, but my search for the literature with method description was not successful so far.

9
  • 1
    Probably based on Monod and Scherrer 's circa 1965 paper ( tandfonline.com/doi/abs/10.1080/00140136508930810#.UyR2_61_vTM ) with proprietary tweaks to make it 'More accurate'
    – mattnz
    Feb 22, 2019 at 1:50
  • 2
    @mattnz Golden Cheetah does use Monod and Scherrer, but also a couple of alternatives. Nothing in GC is proprietary -- it's all open source so you can, if you wish, examine the source code to determine the algorithms used to derive CP, "extended CP", and W'.
    – R. Chung
    Feb 22, 2019 at 3:30
  • 3
    A cynical voice beside me says "RNGesus".... (funny)
    – Criggie
    Feb 22, 2019 at 5:39
  • 1
    @Criggie And here I thought Strava power numbers were generated using the renowned "PDOMA" methodology. Feb 22, 2019 at 10:33
  • Thank you @R.Chung - looks like this is the best advice so far. I'm not very good in C++ but will see.
    – JirkaV
    Feb 22, 2019 at 13:25

3 Answers 3

5

From Strava Support:

The Power Curve shows your best average power for time periods of 1 second up to the length of your ride. We search your entire ride and find these best efforts and you can compare them with your best efforts for your last 6 weeks, the current year, years in the past, or all-time!

-- Using your Best Efforts Power Curve (Summit)

BestPower

As you are already aware, your critical power (CP) is the maximal power you can sustain without fatigue for a very long period of time. CP is also sometimes defined as the maximal power produced over a finite time period (e.g., CP30 would be the maximal power you can sustain for 30 minutes). The Strava power curve therefore gives a variety of CP values across an array of duration intervals.

In the past might have been done with lab experiments (e.g., you warm up, then do a maximal effort on a bike ergometer or on a power meter equipped bike for a series of set durations), where you would then infer intermediate points based on some type of interpolation or statistical model (e.g., Monod-Scherrer).

With continuous performance tracking (i.e., bike computer + power meter) this can be done empirically by querying all data within a ride or over a period of time (e.g., last 6 weeks) to determine the maximal power over a set of differing time intervals. These independent queries are then used to build the power curve displayed.

The Strava Power curve, is therefore an empirical curve based on cherry picking your best efforts for a series of durations, dependent on context (i.e., current ride or past effort(s)).

If you never put in a hard effort for a given duration in your ride, or in the past, then the empirical curve will underrepresent (i.e., biased low) your actualized potential if you were to do a real maximal effort. That said, if you didn't put in an maximal effort over a given duration (e.g., a 5 minute interval) you will clearly see it in the power curve associated with the ride, as the curve at the 5 minute mark will be lower than your historical best.

What About Statistical Model Fitting?

Another possible way to generate the curve is to assume that the true power curve of the athlete (what you would like to estimate) follows a particular mathematical form (i.e., parametric) and estimate the parameters associated with that mathematical curve based on your observed values and some sort of objective function (i.e., likelihood). The problem with this approach is that you have to get the form of the latent curve correct, which can be difficult as people do not have uniform abilities across differing timescales.

For example, some athletes may have very strong short-duration power (e.g., 30 second CP), but lousy long-duration (e.g., CP60, otherwise known as functional power threshold [FTP]). As such correct form of the parametric curve will depend on the athlete, making a generalized fit routine problematic.

There are of course other alternatives that are more flexible with regards to the shape of the curve. Some of these include fitting splines, general additive models, or kernal smoothing. These are all computationally expensive and come with their own set of assumptions and drawbacks.

Given the volume of available data, an empirically based curve is simpler and likely more robust. You typically start fitting parametric statistical models when you are more data starved and each individual data point is more trustworthy.

5
  • The Monod-Scherrer model isn't all that hard. It just says there are two parameters: CP and W', and they represent the slope and intercept of work with time. So Strava would look back over the last 6 weeks, calculate max Joules for each duration of time, fit a simple regression, and get the slope and intercept. In Monod-Scherrer, there's no such thing as CP0.5, or CP30, or CP60, there's just slope and intercept.
    – R. Chung
    Feb 22, 2019 at 23:35
  • @R.Chung - as you point out the Monod-Scherrer requires CP (power that can be sustained without fatigue for a very long period of time) which many athletes on Strava may not have experienced, making the implementation problematic. Additionally, very short durations produce predictions of infinitely high rates, and long durations produce predictions of infinitely sustainable rates (Morton, 2006). I think the empirical curve is a good work around, as it bases each point on actual real-world performances, rather than an interpolation.
    – Rider_X
    Feb 22, 2019 at 23:53
  • To be fair, few methods are robust to crappy data. If the MMP is not a true MMP, the slope and intercept won't be right. I'm also pretty sure that Monod-Scherrer specify that you shouldn't use observations of less than a few minutes or longer than an hour or so to fit CP and W' -- that is, you don't use 5 second power, and you don't use 5 hour power. Between a few minutes and an hour or so, the relationship between Joules and time is pretty linear, which is why Monod CP works as well as it does. (Monod W' is less well-estimated than Monod CP.)
    – R. Chung
    Feb 23, 2019 at 0:13
  • @R.Chung the universal truth: garbage in... garbage out! One place were I appreciate the empirical curve is it clearly shows on what time scales you put in your maximal efforts, and at what time scales you did not. Any place were power curve from the ride substantially falls off the historical power curve is a good indicator that you had a sub optimal effort there (which isn't necessarily a bad thing). A hyperbolic curve like the Monod-Scherrer (or any parametric curve) has as a set form, and as such will not show these types of deviations.
    – Rider_X
    Feb 23, 2019 at 0:26
  • Tangential question, which may be of some interest: bicycles.stackexchange.com/questions/68227/… May 19, 2020 at 22:58
0

Some details are published by Strava themselves.

How Strava Calculates Power by Rosie
February 08, 2012 10:40

Our Power Equation
The power produced while riding is made up of several components:

  • Power produced to overcome the rolling resistance of forward motion.
  • Power produced to overcome wind resistance.
  • Power produced to overcome the pull of gravity (in the case of climbing hills).
  • Power produced to accelerate from one speed to another.

The total power produced, P(total), is the sum of all four power components.

    P(total) = P(rolling resistance) + P(wind) + P(gravity) + P(acceleration)

Rest of document is at https://support.strava.com/hc/en-us/articles/216917107-How-Strava-Calculates-Power

Curiously, they guess Rolling Resistance based on the type of bike you set up. Also the wind speed or air density are unknown, they assume no environmental wind conditions and an outside temperature of 15 degrees C.

We have seen that in most cases our watts number are very close to the numbers provided by a Powertap or SRM.

I'd call that an optimistic statement. Perhaps the total wattage over the whole ride is somewhere within 20% but the estimate measurements at any specific point can be totally wrong. I've seen zero Watts while going up a steep hill, and peaks of 1200 Watts while steady-state cruising on the flat.

4
  • I'd call that an optimistic statement You're being close-minded regarding Strava's estimated power numbers. You just have to define "very close" as "non-negative number within about 1000W". Feb 22, 2019 at 21:09
  • 6
    The OP was asking about how the power curve itself was derived, not how the instantaneous power values were generated if a power meter is not available. As far as I know they do not provide a power curve in absence of a power meter.
    – Rider_X
    Feb 22, 2019 at 21:12
  • @Rider_X fair point - I'd wonder if they abstract from data of riders who do use a power meter on the same segments. There's no point to Big Data if they don't mine it.
    – Criggie
    Feb 22, 2019 at 21:23
  • 1
    Confirming that I get power curves as a subscriber for the rides I do without meter (on road). But, will note that my historical curve includes trainer rides that had power data. Cannot confirm if they would turn up if i had never ridden with a power meter at least once. May 21, 2020 at 23:31
-2

It is probably more simple than you think. The data we have is usually a series of wattage readings collected every second. Open the GPX in excel (I export a csv from golden cheeta) and then you can sort the watt column by largest to smallest. The average of the top 60 readings is the 1 minute cp, top 600 - 10 minute CP and so on. So you can just make a new table with cumulative minutes and then write a formula to grab the averages of the different numbers of top data - something like =average(large(A1:A800,1:60). This is then easily plotable from there.

4
  • That sounds reasonable. However, we had a different question recently where it turned out that the curve Strava produces is not strictly monotonous. I think they avoid sorting due to the computing power required. bicycles.stackexchange.com/questions/68227/… There is a discussion of possible algorithms below the answer. Jun 18, 2020 at 11:02
  • 3
    Wait, the top 600 will not be the the 10 minute value, they will be scattered all around the activity, not in a contiguous interval. Jun 18, 2020 at 12:01
  • 2
    The average of the top 60 readings is the 1 minute cp Sooo, if I do a short cat 5 crit with a lot of 600-700W (and higher...) efforts, my CP6 or CP10 might be 600 or 700W? Because I spent 6 or 10 minutes total spread out over the entire race at those power levels? Critical power curves don't work that way. The power samples have to be from a continuous time period, one after the other, no skipping around. Jun 18, 2020 at 16:19
  • @VladimirF is correct, if you sort the power data won't be contiguous. Strava, TP, and GC each look for contiguous time segments to find the maximum average power over that duration.
    – R. Chung
    Jun 18, 2020 at 19:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.