I’ve been on a roll lately, racing each week’s ZRacing event on Tuesdays at 12:10pm California time (join me!) in the B group (450-570). While I haven’t won a race in a while, these provide a good challenge with a large and varied enough field to keep things interesting.
This week’s race is on a single loop of Watopia’s Sand and Sequoias, a popular circuit that takes in both the Fuego Flats desert and Titans Grove, two distinctly different sections of road. My event was full of classic Zwift race fun: an overpowered rider staying off the front, an underreading trainer making me work extra hard, praying to the powerup gods, and even a virtual shifting “mechanical” that forced me to improvise a bit to stay in touch! Let’s get into it…
The Warmup
I got on the bike with plenty of time before the race, giving me a full half hour to wake up the ol’ ticker and spin up the legs. I was already one dirty chai and a few pieces of Neuro caffeine gum into my warmup by the time I got on the bike, so I was nicely caffeinated. I had also rubbed PR Lotion into my legs to keep the burning at bay.
My Warmup “Stack”



I rode my Cadex Tri bike during the warmup, since I’m working on upgrading it as we head into ZRL. Gotta get those minutes!
Fuego Flats (the Easy Part)
This route is 22.4km long, and the first ~10km takes you from the desert start pens and across Fuego Flats to Saddle Springs. It’s quite flat, and most racers don’t even attempt an attack here, because the pack chasing from behind is simply too fast.
The Luck of the Powerup
The race was set up to hand out one of two powerups at random at each arch: a feather or an aero. With two arches on the course, the powerups you receive could really affect your race! Everyone wanted a feather as their first powerup, to help them up the Titans Grove KOM. And everyone wanted an aero for the second powerup, to help them in the final sprint.
I got a feather through the first arch. Bingo.
We chugged along, a starting group of 26 riders working at a steady but bearable clip. I averaged 251W for this section, but things started getting spicy near the end as we entered Saddle Springs. One L. Nystrom attacked off the front, and four other riders followed. They soon built a 5-second gap, and seemed to be working hard together as we headed up the Col du Saddle Springs into Titans Grove.
This was gonna hurt. But at least I had my feather!
Titans Grove (the Hard Part)
We hung a right into Titans Grove, and the real work began. One rider from our group put in a hard effort and bridged up to a handful of riders just ahead, but I could see the breakaway had split into two groups. We reeled in the back group at the bottom of the Titans Grove KOM, but there were still three riders up the road.
It helps to know how this KOM lays out. While it’s 2.6km long on paper, the first kilometer is quite flat (less than 2%) and very draftable. So if you want to ride this as efficiently as possible (vs attacking and ripping everyone’s legs off), you want to sit in the pack and draft efficiently for this first bit.
The second portion is steeper, but still only 3-4%. Drafting still helps a lot, so sit on a wheel and just work to hold a good pack position up and over the top.
I stuck to my advice above, and was able to hang with the peloton up and over the climb, triggering my feather with about 600 meters to go. I finished in 4 minutes, 37 seconds with an average power of 330W.
Bad Shifting, Bad Powerup
But as we approached the KOM banner, something odd happened: I shifted (virtual shifting), but the resistance didn’t increase as expected! Instead, it hit… slowly… over several seconds. This odd shifting delay would persist through the end of the race.
I had hoped for an aero powerup through at the KOM banner, but alas: it was another feather. You win some, you lose some.
In contrast to the flat, easy start of the race, the 5.3km section from the start of Titans Grove to the top of the KOM required 308W average for me to stay with the group. Ouch!
The Finish
I tried to recover a bit as we descended from the KOM arch, but my delayed virtual shifting was making things a bit goofy. I also knew there was a sharp little kicker coming up, so I tried to get set into a gear that would work for hammering up and over this rise.
By the time we finished that kicker and began the true rollercoaster descent to the jungle, only two riders were up the road: L Nystrom solo on the front, with B. MacPhee chasing. I didn’t have the legs to chase, so I sat in and hoped our pack of 21 would pull them back.
B. MacPhee got caught with 3km to go, just before we exited Titans Grove. That left only Nystrom, who didn’t seem to be slowing one bit. Just as we all began resigning ourselves to fighting for second place, B. Ruhne, wearing a DIRT kit, jumped hard off the front and got away solo.
I sat in the group, unable to jump hard enough to get away. As we neared the sprint finish, A. Morvan jumped hard with an aero powerup, catching B. Ruhne just before the line. Nystrom won by nearly 20 seconds. And my feather powerup and tired legs proved a poor match against the competition. I crossed the line in 10th.
See ride on Strava >
See results on ZwiftPower >
Watch the Video:
Takeaways
This race basically unfolded the way past Sand and Sequoias races have unfolded for me. Easy on the flats. On the rivet surviving the Titans Grove KOM. And too knackered to sprint to the podium.
Zwift Racing Score
My score increased from 564 to 569 as a result of this race. Looks like I may not be long for the 450-570 group! And neither is L. Nystrom, the rider who jumped off the front ~9km into the race and stayed away to win solo by 20 seconds. He averaged 4.3W/kg for the event, which was his first race since December 2024 according to his ZwiftPower profile. His Zwift Racing Score result for this event was 559, and that includes a seed score upgrade due to some new 90-day power bests.
Generally, I’ve been quite happy with how my Zwift Racing Score-powered races have unfolded in recent months. The algorithm seems to be doing a good job. But today’s race highlights two areas where Zwift Racing Score still needs to improve:
- Taking a rider’s historic performance into account: Nystrom averaged 4.2W/kg for over 53 minutes in a race in March 2024. He’s clearly got the fitness to be ranked higher than he was heading into today’s race.
- Upgrading a rider more quickly based on current performance: I’m not sure how much his score jumped due to today’s result, but the fact that he can still race in the 450-570 group is silly, given what he did today, averaging 4.74W/kg for 20 minutes.
Blaming the Trainer
The most annoying bit of information is that I was testing a smart trainer (which shall remain unnamed) during this race, and while it seemed like the trainer may have been reading a bit low as I was warming up, I used it as the power source anyway during the race, while dual recording my Assioma pedals on my head unit.
It turns out that the trainer’s average power was ~15W lower than the pedals for the duration of the race. Ouch. Here’s a chart showing a small portion of the race, with my pedals in blue and the trainer in purple:
The power readings on this chart may look similar at first glance, but the Strava power curve for this race shows that the difference between the trainer’s numbers and the pedal’s numbers is the difference between a ho-hum effort and setting several new PRs for 2025 in the 10-30 minute window.
I’m not saying I lost because of an under-reading trainer, of course. But it certainly didn’t help. Occupational hazard, I guess, when you’re riding in the Zwift Insider Pain Lab!
Your Thoughts
Did you race this week’s Sand and Sequoias ZRacing event? How did it go for you?




According to Zwiftpower ZRS extension, L. Nystrom’s score increased by 114 points!
I’m curious about the new trainer. Is it from Wahoo? Like, a Core 2?
Oooh, thanks for mentioning the Zwiftpower ZRS extension, Tomaž. First I’ve heard of it. Very cool! 😎
Same here! I’m gonna write a post about it.
‘Taking a rider’s historic performance into account:’
That was supposed to go live in February of this year according of what Zwift posted in November of ’24 …
Due to lack of motivation, when Zwift increased their prices, I cancelled my subscription and hadn’t raced for well over a year. In fact I hardly rode a bike at all for about 6 months. I am certainly no where near as strong as I was, I have been back on Zwift for about 6 weeks and raced 13 times during that period. The first race I was struggling, but since then I have finished on the podium 10 times, and even when I raced in the category above that recommended still manged to finish 4th.
It seems strange to me that my racing score has gone up relatively slowly allowing me to almost guarantee a podium finish. Although I have been beating people with scores well in excess of 300 on a regular basis, my score is still only 264. I would have expected it to have gone up faster. I don’t know if it’s down to my relative low ftp, I don’t have the strength to just ride away and win solo, but have managed to stay with the leading group and be competitive in the final sprint. I thought racing in a higher category, where I beat people with racing scores nearer 400 would see my score increase more quickly, but it didn’t seem to. I will most probably race more in the category above the recommended one, but I suspect it will be a while before I am forced to move up.
My theory is that people with low seed scores have a really hard time moving their racing score up substantially. I believe that is part of my issue, in fact. If you perform well despite low power numbers (which feed your seed score), the algorithm doesn’t bump your score up readily.
And on the flipside, if you have some really good power numbers and thus a higher seed score, it is really hard to get your numbers down. Zwift expects you to perform at a high level.
all that to say, I think the seed score is just too big of a factor in the Zwift Racing Score algorithm. Once you’ve done a few races, it seems like it should be much less of a factor than it is.
Should have been fixed according to Zwift themselves. Nov 18th they wrote :
Other features and improvements on deck include:
I think you’re a bit off the mark regarding seed scores, but I can understand why you feel that way.
The seed score is the best thing about ZRS, and if everyone was much closer to it the racing would be better.
The problem you’re seeing here is that a new power record moves you to your score floor, 15% lower than your seed. That’s a huge difference, it should be extremely difficult to have a score that far below your seed the way it is now calculated.
The other main issue, which you mentioned, is how slowly scores move up in these situations. That is true in larger fields, though in small fields the score changes can be much higher despite what zwift wrote in their FAQ. But the problem behind it is that ZRS doesn’t factor in relative scores very well, the model works on probabilities, but assumes too much uncertainty. The result of this is that unless there is a large difference between the scores it treats the results as expected, so only deserving a small change.
Hopefully if you do an article on it zwift will put you in touch with the people who know how the system works, and won’t put any limitations on what they can tell you or what you can write.
Hi @Eric Schlange , I understand why not mentioning the name of the trainer. Are you testing it and giving feedback, so they brand can do some tweaking or..? Cause if there’s no update possibility, it could be interesting to mention it (in a different post maybe), so potential buyers/zwifters at least know
This trainer hasn’t yet been released. So I am giving feedback to the brand and they are very much listening.
I raced in 160-270 and by some miracle I managed 20th. Clinging to the front group to the bottom of the KOM I managed a PR up the climb but that was the end of me felt like a long way to the finish. Cant envisage a situation were I could win a race in that cat even being rated near the top of the band.
Anyway I only joined in March so I’m sure there’s lots to learn and my fitness has certainly improved!
Just because you are at the top end of the ZRS band does not mean that you will do well on a given course. If I race flat races my score goes up, if I race hilly races my score goes down, if I race in the mountains my score plummets.
I cant see how I’d win or even podium in that cat even if the course played to my strengths!!! On your favoured set up and near the top of the band you would surely be expected to go close or the scores a nonsense. I view it like a stakes horse race the high rated animals would come to the fore unless there was a handicapping element to give everyone a chance.
What’s your review on the PR Lotion ???
Dude: I love the stuff. Been using it since 2017 – see various posts at https://zwiftinsider.com/?s=pr+lotion
Basically, I’ve found it reduces the burning when I’m going hard, POSSIBLY drops my heart rate just a bit… and overall makes me feel like I’m not working as hard. Which lets me push just a bit harder.
You’ll feel the max efforts the next day, though. So the training is happening, for sure. I use it for important races and occasional key workouts.
One last note: if you decide to purchase any, please use my affiliate link (https://crrnt.app/MOME/1OBK7nDo) to help support this site! Every little bit helps… and if you use the discount code EricSchlange you’ll get 15% off!
Eric, when I first began following you I thought PR lotion was just another sales pitch (which I’m not condemning). But I use it just like you and it works. Gives my legs a nice tingly feeling and definitely takes the edge off the lactic acid burn. It’s almost cheating! Thanks for exposing me to it, I never would have heard of it otherwise.
Glad to hear it, Mark!
The only people I ever hear calling it snake oil are people who haven’t tried it. I just tell them… try it once. 😜
Nothing sucks more that losing a possible watts PB due to a mechanical.
Good thing, it’s not an injury, so you can go back and try again the next day with the previous equipment 😀
I felt strong and didn’t want a miss and early selection so went with break, which never works out well as I’m definitely a <2min power rider! If I had known the w/kg required I wouldn't have bothered! It was a struggle by the time the peloton caught us on the KOM, but managed to recharge for the sprint and get over ithe line in 4th on ZP.
Managed to get a new 20min PB at 3.67w/kg which goes to show how hard I hard to work to stay in the break! Two weeks in a row the race has been blown apart by a clearly much stronger rider! Makes it more interesting I suppose 🤦♂️
It’s possible the 15W difference between power-at-pedals and power-at-trainer is due to energy loss in the chain & drivetrain. It would physically make sense that power at pedals (input) would be a bit higher than at the output of the machine.
did you intentionally hang on to that last feather until the end? it seems like it could have saved you half a match if you had deployed in the “bumps” after the big climb, but maybe that’s not a good place either?
@eric Schlange, once a rider is past 90 days for all the numbers that fed the seed score, does the seed score start to decay? Does it just look for the highest values in a moving 90 day window and do a hard reset? I ask because I had major knee surgery in June, and I was just cleared to start easy riding on a trainer again, with a slow buildup. I have a high(ish) ZRS right now at 730, but there is absolutely no way I can (nor should) race with that group whenever I come back to racing. I actually set that score a few days before surgery and never actually raced the category.
As for how my score got that high, I can assure you it’s not because I’m that good (ha!). I just always had to race in small fields due to my schedule…missing out against racing the strong guys I should be racing (think B1 in ZRL). So my score was artificially inflated by good results against small fields with only a few riders in my general area for score (I’ll add that my Zwift racecraft is pretty good, too. I know how and when to conserve, and when to push…and also how to maximize my above average, but not great, sprint).
TLDR; am I going to have to suffer through a string of bad results until my ZRS finally meets my fitness?
Your score won’t change unless you race. Your seed will go to zero, or at least whatever low value gets calculated from your new 90 day PB. Your floor will be 15% lower than that for what it’s worth. As I understand it your minimum effort threshold for anti-tanking is also calculated from your current seed score.
So yes, you’ll have to have a string of bad results. But your score will drop pretty quickly if you keep finishing in last place, the trick is actually finishing last with all the others trying to tank their score.