What is currently wrong with ZRS and how to improve it? Q&A session

They are upgrading accounts to sell so you’d think it was taken seriously

The consistent problem is that:

One set of people don’t want to be upgraded so they will game whatever system you put in place.

Another set of people want to feel special by blowing up a race - on a fake account or new account.

And a third set of people aren’t really racing in races

You can’t really score that. If someone wins because no one was trying should they be upgraded? If someone has higher power but sucks at racing should they be downgraded or upgraded? If someone loses a lot intentionally should they be downgraded, and how do you know

So on top of not giving a seed score for 2000W for 5mins, prevent them accumulating everything that goes with distance elevation?

there is no decay on scores, so if you don’t race for 4 months you are still going to be 359

edit : zwift did have a decay on scores of something like 0.25 per day or two for a short while but decided to remove it for some reason

1 Like

The link calculates roughly what your seed score is, according to the power data you give (zwifthq looks at 90 days).

If you tend to finish more often in the top half of pens, your Racing Score will be higher than your seed score.

Let’s say you don’t use Zwift at all for five months. Your Racing Score won’t drop in that time, but there is no 5min power data for your seed score, so you will be prevented from racing until you do a single 10min+ ride iirc.
Let’s say you do ~100W throughout your 10min ride, well below your ability. ZwiftHQ doesn’t flag this low effort, even though you have data from five months ago saying you could do ~350W for 5mins.
You can now “race” in pens according to your Racing Score at ~100W, finish last and drop your Racing Score.
Eventually, your Racing Score will drop enough to allow you to enter lower pens.

1 Like

It would be interesting to see how quick that could be achieved..

It’s certainly possible, but to meet the minimum threshold and come last isn’t a given in every race.. so it would take some manipulation.

The easier way of manipulating scoring appears to be what m @Tom_Shelton has pointed out, set initial score using an incredibly inflated weight which then gives you quite a bit of wiggle room around setting pbs and therefore a new seed.

At least for me as someone who raced (at the time) at most once a week, often once every two weeks, the decay at .25 per day mostly negated all the small increases from being above half in those races. The score movements for me were always trending back to seed, and from their data most people don’t race that often, so my guess is seed was doing the same for others who do not race that much.

I think the biggest issue with ZRS is that a feature like this needs iteration, and Zwift has not been able to provide many iterations. The amount of iteration that was done on zwfitracing app to get to what they had was substantial, and continuous, and Zwift basically launched this and hasn’t made improvements in a long time. There are clear things that can be done to improve it (discussed in multiple threads), but no changes have happened for some time.

1 Like

What’s the next iteration change you would make?

Probably one of the following:

  • Iterations to make sure points movements make logical sense: Today you can tank by going into a mass start race as a cat C or D rider and predictably end up in the bottom half of the field, or if you win/lose in a small field at any category range you gain/tank score way faster than winning/losing in a big field as two obvious examples - but there are more. In general that does not make sense. I would have them figure out why small races give you more points that larger fields, or why you can so easily tank when your “skill” (i.e. mu) says you landed where you should have. The algorithm should not work that way. I actually think there’s a bug here somewhere.
  • Iterate on what is displayed as your racing score: Right now I believe what they are showing in the UX for racing score is not mu, but actually mu-3*sigma, this is from prior discussions on the racingapp discord - but it does explain a lot of things so I tend to believe it’s true. I think that actually needs to be tweaked to make the scores make sense to people (mu what the system thinks your score actually is, and sigma is a variability factor, so you can have someone with “better skill” show up with a lower ZRS if they have a higher variability factor). Edit: Not to say there should be no variability factor, but the system already knows a lot about you compared to other games with your 5min power, so you probably do not need a -3sigma in Zwift’s case.
  • Iteration on seed: Lots of things that can be done here, could use the algo that racingapp uses to better seed both light and heavy riders, but to start I would probably have new personal best efforts set a new floor rather than the -15% thingy they have since that also does not make sense. Also you can work on extending the seed duration so you can get people’s efforts from the past season to start the new season. The ‘iteration’ here can be on a suitable degradation factor, suitable time horizon etc.
  • Iterate on closing sandbagging/cheating loopholes: There are a few folks who have shown some easy exploits for how to tank, and how to manipulate the system, this is more of a consistent cat and mouse game that has to be a side thread for something like this that can work in parallel with the above.

Anyhow, after they have score movements that make sense, seeds that work more consistently, and shown they are willing to keep the system healthy by responding to clear exploits they can then work on other things such as variable racing score depending on the terrain etc.

Edit: Another thing that is tangentially related, I personally think they should also change-up the category boundaries more fluidly so there isn’t an easy target for sandbaggers to skirt below to stay in cat B, C, or D. The “Range 1/Range 2” change is a pretty good start. They could also look at experimenting with some races using real-time categories (segment the races just before the race starts after everyone is in the pen) so in some races people don’t even know which category they are in until the race starts - this one is probably controversial, but in general it’s harder to sandbag effectively the more fluid the category boundaries are.

2 Likes

Wouldnt the sandbaggers just skip these races ?

That would be fine with me :slight_smile:

2 Likes

But even that would still not fix the problem.

Although I kinda think there will always be a way to play the system. No matter what they come up with when you take into acount that it also has to be playable for all others.

Yeah, I don’t think there is ‘one fix’ that will just work, which is why I think there are a few angles they should work on. My opinion is they would be better served by assuming iteration will be needed rather than one major change that stays static for a year given the variables at play will change once something is put into practice.

Theres much, much more variation in how to win under ZRS.

People who do well in races (often with short duration power) get moved up to race with people who can blow them away on long power. And even if they make it to the end they have less short term power left in thr tank

I’m not sure why you and peter have similar zrs (its hard to see any course you do better than him on except AdZ) but i know that around ZRS introduction you were getting high power readings so could have an overstated ZRS.

Edit : i now see why your ZRS have been similar…

Please enlighten me.

My power numbers were reset about 5 months ago so my ZRS is based upon what I’m truly capable of. The best example of how the current ZRS is flawed is in the C pen Tiny Race results. Go take a look and explain how riders with that kind of short power are penned with others who have nearly identical FTP numbers. Makes no sense whatsoever…

Simple fix here is to not allow mass start races that are only single category entry.

For one thing, ZRS isn’t directly impacted by your power numbers dropping off, so unless you’ve had bad results since then, your ZRS will still reflect that prior power.

But your results are solid regardless. You’re always going to do better in long races with lengthy climbs given your power profile and tiny races are always going to be a challenge. That is unless zwift introduce multiple ZRS for different course type/race duration.

In the CE world, without the faulty trainer you’d be a back marker most races in “B”, so ZRS has surely made the experience more enjoyable for you.

It is still open to manipulation, and Tiny races are notorious for this - as per various other discussions, because in one hour you can move points a lot.

That looks totally broken. 800 watts for 5 minutes is superhuman and if it is legit (it isnt) even with the 15% discount it would mean their floor was 826, when in reality it would be close to 999.

I’d report to zwift as its both a ZRS issue and a faulty power issue.

Those should be the only mass-start races. vELO deals with them fine, they should be the highest-quality data for ZRS.

(Note - I want ZRS to work right, but it doesn’t right now.)

1 Like

Indeed. A search on ZHacks didn’t return any ‘same time start’ races with only single cat 1-1000 setup. I don’t suppose though that Zwift enabled any controls to stop someone entering one of these races to choose a cat that is multiple levels above their ZRS? Or at least disables any ZRS score decline if doing so?

The upside of this race format, is that anyone can likely enter and have a fun and engaging experience even if ZRS has miscategorized them. The downside is for the same reason – anyone can enter one of these race formats, and despite selecting and racing up 2-3 cats, can also have a fun and engaging experience, yet effectively guarantee themselves a decline in their ZRS if that’s what they’re seeking.

1 Like