Here are the special "Low-Key Climb Ratings" for the climbs in this year's series. The rating is in Old La Honda equivalents, where Old La Honda is by definition 100. Of course, everyone has their own idea of how steep compares with long, or with steady compares with variable, so don't associate any sort of precision to these numbers. But you can be fairly sure the climbs with the highest numbers will be challenging!

rank | week | climb | rating |
---|---|---|---|

Bohlman-Norton-Kittridge-Quickert-On Orbit-Bohlman is the hardest this year. That should come as no surprise to anyone who's climbed it. It combines more than 2000 vertical feet with brutal, strength-sapping, contiguous steepness. Despite some dilution from the gradual finish, the rating formula "rewards" the sustained super-steep stuff before this.

Mount Hamilton is rated on sheer vertical altitude gained. There's no challenging grades, but some riders will find this one the hardest of all just based on the endurance required.

Montara scores next. It gains less vertical than Bohlman, but has some extremely steep sections. That it's a mountain bike trail is irrelevant to the rating system.

Montevina + dirt scores next. Again, it gets no credit for the dirt. It's steep, but not nearly as steep as Montara.

Black Mountain - Castle Rock combines a lot of vertical with plenty of time pegged at close to 11% on Black Mountain Road. It lacks the super-steepness of the first two climbs here, but still scores well, and deservedly so.

Marin Ave, not part of the formal series, is next. It's an interesting test of the rating formula, since it's all about steepness.

Montebello is a good mid-range climb. It provides a perfect annual benchmark.

Lomas Cantadas doesn't gain huge altitude, but the finish is one to remember, with sustained grades close to 18%. It gains only 1190 vertical feet, only 92% of the 1290 feet gained by Old La Honda, but it scores 23% higher than that climb which I use as my definition of 100 points.

Patterson Pass is next. It has a steep finish which drives the rating higher than it would otherwise be, but this is climb is a relative sprint by Low-Key standards. Don't underestimate it, though: the finish is tough. The rating doesn't account for the winds, and they could well be a strong factor.

Finally: Portola Valley short hills. The rating system isn't designed for multiple short climbs. It would be better represented with each climb ranked separately. With multi-climb profiles the code typically picks the highest-rated climb in the series and uses only that for the whole profile: it doesn't make any attempt to add individual contributions; the model is non-linear, so adding ratings to get an aggregate rating makes no sense.

Okay, here's the dirty details.

First the profile was extracted, typically from Garmin data if available on-line from Strava. Cosmo's Strava-to-TCX converter can be used to extract data.

Then the data were smoothed with a Gaussian of sigma 50 meters and interpolated onto a grid of 10 meter spacing. The smoothing is to correct for the "noise" present in the measurements: the Garmin-reported altitude tends to vary somewhat for a given position.

Next data were transformed to a function of time, as opposed to a function of distance. For GPS ride data, time are already available. However, the rating of a route shouldn't depend on how a given rider on a given day rode the hill, so these time data were ignored. Instead an empirical differential equation was used to product a "typical" riding rate:

where

Then *g* was further smoothed with respect to time with a Gaussian smoothing function with standard deviation 15 seconds, representing the ability of neuromuscular power and inertia to effectively smooth out very short, steep grades. The idea is if it takes more than 15 seconds to climb a steep segment, your legs really start to feel the true grade.

Now the data were ready for calculating the rating. For each 10 meter segment of road, add to a parameter *f* as follows:

where d

To get the raw rating, I do the following:

The result is a raw rating with units of distance. To get the number reported here, the rating for Old La Honda was calculated, and the result divided by that and multiplied by 100. So no matter what the details (smoothing, *v _{max}*,

where

That's it! Simple, really.