I've raced the Gray Duck Grit 50mi gravel race each of the last four years. It's one of my favorite races around the Twin Cities and was the first gravel race I ever participated in back in 2023. In 2023 I was very slow and didn't have power data, but that changed in 2024. Beautiful roads, challenging climbs in the heart of bluff country, and tough as nails competition where people push themselves hard but keep it a fun and friendly event. Last year I got second and spent most of the race off the front with a youngster and also a strong climber named Chuck Smith. The youngster won last year by a hair. This year Chuck came back even stronger and as a climber, he knew he had to make all the climbs as hard as possible to win. Every climb and every kicker he attacked extremely hard, putting me to the sword. I really thought at some point I'd get dropped but I somehow managed to hang on and eventually won with an attack right before the finish after the elevation had flattened out.
This year ended up being a much harder race than last year, but when I looked at the metrics: average power, average heart rate, and normalized power (which takes into account variations in hard efforts) were all almost identical. I knew the difference in difficulty came down to how much harder we rode each climb; we not only beat our times from last year by a lot, but set the overall record on strava for many of them. This report is a systematic look into metrics and measures that help characterize numerically how much harder this year's race was. Indeed, the climbs were much harder, but between every climb we rode easier, so the aggregate measures didn't do a good job of distinguishing the efforts.
This report is a bit of an homage to a great race with strong competitors. Chuck pushed me far past my limits and while he didn't win this time, he was probably the strongest on the day. Next year I'm sure he'll come back for revenge!
Overview
Normalized power was 298 W in 2025 and 298 W in 2026, and heart rate averaged 158 and 159 bpm. The difference was on the climbs: 373 W on them in 2026 against 355 W in 2025. Time above 400 W on the climbs went from 3 to 7 minutes.
Between the climbs there were 16 surges of 30 seconds or more above threshold in 2026 and 21 in 2025, with 195 kJ of work above threshold in 2026 compared with 226 kJ in 2025.
4 of the climbs are the exact same road in both years, so the two efforts can be aligned by distance and the time gap read directly. Over those 4 climbs the top came 93 seconds sooner in 2026, at a cost of about 5 kJ more of W′. Of the 4 climbs that match up between the two years, the best 30 seconds was higher in 2026 on 4 of them, and the best minute on 3.
Conditions and readiness: it was 80 °F in 2026 and 67 °F in 2025. Time at or above 90 percent of max heart rate was 45 minutes in 2026 and 33 minutes in 2025. The morning of the 2026 race brought 7.5 hours of sleep, a form score of 15, and a resting heart rate -2 bpm from the recent median; in 2025 it was 5.8 hours of sleep and a form of 14.
Threshold reference
intervals.icu gives two different thresholds for race day, eFTP and the CP-model value, and they disagree: 338 versus 295 W in 2026, and 323 versus 305 W in 2025. A gap that size changes any number that depends on a threshold, so every threshold-based measure is shown both ways, plus fixed cutoffs at 300, 350, and 400 W that do not depend on either. The figures use eFTP. Under the CP-model value the W′ balance would have bottomed out at -125 percent in 2026, which is not physically possible; under eFTP it bottoms out at -7 percent (-39 percent in 2025).
| Reference | 2024 | 2025 | 2026 |
|---|---|---|---|
| eFTP on race day (W) | 314 | 323 | 338 |
| W' with eFTP (kJ) | 25.7 | 28.4 | 29.6 |
| CP-model value on race day (W) | 291 | 305 | 295 |
| W' with CP model (kJ) | 24.9 | 25.3 | 25.1 |
| Normalized power (W) | 283 | 298 | 298 |
| Intensity factor vs eFTP | 0.90 | 0.92 | 0.88 |
| Intensity factor vs CP model | 0.97 | 0.98 | 1.01 |
| Best 10-second power (W) | 762 | 617 | 709 |
| Best 1-minute power (W) | 462 | 474 | 531 |
| Best 2-minute power (W) | 388 | 413 | 471 |
| Best 5-minute power (W) | 346 | 372 | 366 |
The climbs
A climb here is any stretch of road where the grade, smoothed over 100 m, stays above 2 percent, with dips shorter than 300 m folded in; it has to run at least 250 m and gain at least 66 ft. Each climb starts at the foot of the rise and ends at its top, and because the definition works in distance rather than time, the same hill gets the same start and end whether I rode it fast or slow; on a circuit, every lap up the same hill is snapped to one shared start and top. The course map numbers them for every year. For the climb-by-climb comparison I match up 2025 and 2026 by course position and then require the GPS tracks to agree that both years were on the same road; a match is called the same climb only when nearly every point of both climbs lies on the other year’s track. 3 climbs appear in only one of the two years and are left out of the climb-by-climb comparison; they are listed at the end of this tab.
| Matched climb | Year | Mile | Time | Gain (ft) | Grade (%) | Max grade (%) | Avg W | Best 30 s | Best 1 min | W′ used (kJ) | Lowest W′ (%) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Climb 1 | 2025 | 8.6 | 5:52 | 220 | 2.7 | 6.6 | 323 | 400 | 390 | 6.5 | |
| Climb 1 | 2026 | 8.9 | 5:21 | 215 | 2.7 | 7 | 315 | 452 | 431 | 10.1 | |
| Climb 2 | 2025 | 17.4 | 3:48 | 197 | 3.9 | 6.9 | 348 | 532 | 474 | 14 | |
| Climb 2 | 2026 | 16.4 | 3:26 | 202 | 3.9 | 7.6 | 384 | 558 | 531 | 16.9 | |
| Climb 3 | 2025 | 22.7 | 3:21 | 177 | 4.5 | 6.9 | 389 | 514 | 446 | 13.2 | |
| Climb 3 | 2026 | 21.6 | 2:57 | 184 | 4.6 | 6.1 | 416 | 518 | 473 | 14.6 | |
| Climb 4 | 2025 | 25.6 | 4:36 | 155 | 2.4 | 8.1 | 336 | 466 | 411 | 9.6 | |
| Climb 4 | 2026 | 24.3 | 4:20 | 126 | 2 | 6.8 | 308 | 486 | 410 | 6.7 |
Climbs in only one year
| Year | Mile | Time | Gain (ft) | Grade (%) | Max grade (%) | Avg W |
|---|---|---|---|---|---|---|
| 2025 | 30.8 | 2:44 | 155 | 5.1 | 10.6 | 374 |
| 2026 | 28.5 | 1:41 | 132 | 7.9 | 12.4 | 451 |
| 2026 | 33.7 | 4:01 | 149 | 2.2 | 8.3 | 334 |
The same climbs, timed
4 of the matched climbs are the same road in both years (length, elevation gain, and course position all agree within tolerance). That means power can be lined up by distance up the climb and the time gap read straight off the chart. Over the 4 climbs together the top came 93 seconds sooner in 2026, at a cost of about 5 kJ more of W′.
| Climb | Year | Time | mph | Avg W | Best 30 s | Best 1 min | W′ used (kJ) | Lowest W′ (%) | HR | 2026 ahead by (s) |
|---|---|---|---|---|---|---|---|---|---|---|
| Climb 1 | 2025 | 5:52 | 15.7 | 323 | 400 | 390 | 6.5 | 10 | 164 | |
| Climb 1 | 2026 | 5:21 | 17.2 | 315 | 452 | 431 | 10.1 | 49 | 164 | 31 |
| Climb 2 | 2025 | 3:48 | 15.3 | 348 | 532 | 474 | 14 | 10 | 163 | |
| Climb 2 | 2026 | 3:26 | 16.9 | 384 | 558 | 531 | 16.9 | 24 | 166 | 22 |
| Climb 3 | 2025 | 3:21 | 13.4 | 389 | 514 | 446 | 13.2 | -25 | 172 | |
| Climb 3 | 2026 | 2:57 | 15.2 | 416 | 518 | 473 | 14.6 | 21 | 173 | 24 |
| Climb 4 | 2025 | 4:36 | 15.9 | 336 | 466 | 411 | 9.6 | -39 | 170 | |
| Climb 4 | 2026 | 4:20 | 16.9 | 308 | 486 | 410 | 6.7 | 18 | 170 | 16 |
W′ balance and intensity
Ten-second surges
The short, all-out efforts that decide most Minnesota races: every stretch where 10-second power stayed at or above 150 percent of eFTP for at least 5 seconds counts as one surge. In 2026 there were 19 of them with a best 10 seconds of 709 W; in 2025, 16 with a best of 617 W. The chart puts each surge at the mile it happened, sized and labeled by its peak 10-second power.
| Ten-second efforts | 2024 | 2025 | 2026 |
|---|---|---|---|
| Best 10-second power (W) | 762 | 617 | 709 |
| 10-second surges at or above 150% of eFTP | 13 | 16 | 19 |
| 10-second surges at or above 500 W | 10 | 11 | 21 |
| Minutes with 10-second power at or above 150% of eFTP | 3.0 | 3.1 | 4.1 |
| Best 10 s, first half (W) | 762 | 590 | 619 |
| Best 10 s, second half (W) | 552 | 617 | 709 |
Pacing, heart rate, and heat
| Cardiac, pacing, heat | 2024 | 2025 | 2026 |
|---|---|---|---|
| Minutes at or above 90% of max heart rate | 38 | 33 | 45 |
| Heart rate per watt, first half | 0.629 | 0.594 | 0.624 |
| Heart rate per watt, second half | 0.648 | 0.609 | 0.639 |
| Average power, first half (W) | 256 | 262 | 247 |
| Average power, second half (W) | 247 | 262 | 256 |
| Best 1-min power, first half (W) | 462 | 474 | 531 |
| Best 1-min power, second half (W) | 348 | 430 | 507 |
| Best 2-min power, first half (W) | 388 | 413 | 471 |
| Best 2-min power, second half (W) | 321 | 390 | 435 |
| Best 5-min power, first half (W) | 346 | 372 | 366 |
| Best 5-min power, second half (W) | 294 | 351 | 347 |
| Temperature (°F) | 65 | 67 | 80 |
| Degree-minutes above 80 °F | 0 | 0 | 138 |
All measures and method
Aggregates
| Measure | 2024 | 2025 | 2026 |
|---|---|---|---|
| Duration (min) | 162 | 145 | 146 |
| Distance (miles) | 53.1 | 50.0 | 51.2 |
| Elevation gain (ft) | 2,484 | 2,110 | 2,109 |
| Average power (W) | 251 | 262 | 251 |
| Variability index | 1.13 | 1.14 | 1.19 |
| Average heart rate (bpm) | 161 | 158 | 159 |
| Total work (kJ) | 2,450 | 2,286 | 2,203 |
Climbs
| Measure | 2024 | 2025 | 2026 |
|---|---|---|---|
| Climbs detected | 7 | 5 | 6 |
| Minutes climbing | 28 | 20 | 21 |
| Feet gained on climbs | 1,231 | 914 | 1,048 |
Fixed power cutoffs
| Measure | 2024 | 2025 | 2026 |
|---|---|---|---|
| Minutes above 300 W | 37 | 50 | 38 |
| Minutes above 350 W | 12 | 21 | 21 |
| Minutes above 400 W | 4 | 6 | 11 |
| Work above 300 W (kJ) | 228 | 294 | 285 |
Threshold-dependent measures, eFTP reference
| Measure | 2024 | 2025 | 2026 |
|---|---|---|---|
| Work above CP (kJ) | 190 | 226 | 195 |
| Minutes above CP | 26 | 35 | 25 |
| Minutes above 120% of CP | 6 | 9 | 10 |
| Surges of 30 s or more above CP | 24 | 21 | 16 |
| Lowest W' balance (% of W') | -73 | -39 | -7 |
| Minutes below 50% of W' | 62 | 93 | 56 |
| Dips below 25% of W' | 1 | 6 | 9 |
| Climb average power (W) | 305 | 355 | 373 |
| Climb power (% of CP) | 97 | 110 | 110 |
| Climb power (% of CP-model prediction for its duration) | 70 | 79 | 75 |
| W' used per climb (kJ) | 3.9 | 10.4 | 11.6 |
| Climbs ending below 25% of W' | 3 | 5 | 5 |
Threshold-dependent measures, CP-model reference
| Measure | 2024 | 2025 | 2026 |
|---|---|---|---|
| Work above CP (kJ) | 256 | 278 | 299 |
| Minutes above CP | 44 | 46 | 41 |
| Minutes above 120% of CP | 12 | 15 | 20 |
| Surges of 30 s or more above CP | 28 | 31 | 35 |
| Lowest W' balance (% of W') | -138 | -114 | -125 |
| Minutes below 50% of W' | 101 | 124 | 119 |
| Dips below 25% of W' | 6 | 3 | 8 |
| Climb average power (W) | 305 | 355 | 373 |
| Climb power (% of CP) | 105 | 117 | 126 |
| Climb power (% of CP-model prediction for its duration) | 74 | 85 | 87 |
| W' used per climb (kJ) | 6.6 | 13.1 | 16.8 |
| Climbs ending below 25% of W' | 6 | 5 | 6 |
Readiness that morning
| Measure | 2024 | 2025 | 2026 |
|---|---|---|---|
| Resting HR that morning vs 28-day median (bpm) | -3.0 | 0.0 | -2.0 |
| HRV that morning vs 28-day median | 5.5 | 22.0 | 15.5 |
| Sleep the night before (h) | 5.5 | 5.8 | 7.5 |
| CTL / ATL / form | 78 / 70 / 8 | 76 / 62 / 14 | 88 / 73 / 15 |
| Training load in the prior 7 days | 346 | 509 | 443 |
Method
The inputs are the 1 Hz power, heart rate, altitude, distance, and temperature streams. Climbs come from altitude interpolated to a 10 m distance grid and smoothed over 100 m: grade above 2 percent, dips under 300 m merged, at least 250 m long and 66 ft of gain, with the start walked back to the lowest point at the foot of the rise and the end forward to the top; climbs of one hill (every lap of a circuit, and both years on the same road, starts and tops within 250 m of each other) are then snapped to the group’s median start and top on the ground. Max grade is the steepest 100 m inside the climb, which separates climbs that average the same but ride very differently. A climb keeps its gradual lower slopes rather than starting where it gets steep; the replay marks the point where the road first reaches 4 percent as the steep pitch. Climbs are matched across years by nearest course position within 2.5 miles, and called identical when length, gain, and position agree within tolerance. W′ balance uses the differential model with the Skiba recovery constant (546 · exp(−0.01 · (CP − P)) + 316 s), starting full. A surge is at least 30 seconds with 30-second power above CP; a deep dip is one continuous stretch with W′ balance below 25 percent. The climb-to-model ratio divides climb power by CP + W′/duration. The time gap on identical climbs comes from interpolating each year’s elapsed time onto a shared distance grid. Heat is degree-minutes above 80 °F, readiness deviations are from the trailing 28-day median, and max heart rate is 184 bpm. Tables: tables/race_gray_duck_grit_*.csv.