From the editor: since the first post introducing the ZwiftRacing.app ranking system, Tim Hanson has been hard at work iterating through many improvements that have been discussed with the racing community. Here, James Eastwood talks us through the recent changes, what’s up next, and a whole new format for the next trial race which is taking place on Sunday.
ZwiftRacing.app is now on v1.2, and there have been some significant changes based on feedback from the community.
Change 1 – New Ranking Algorithm
Previously the rankings used an exponential component which heavily weighted finishing position when assessing a rider’s race result. What this meant is that riders that finished highly typically ranked up, and those that finished towards the bottom of the field lost rank. This had some undesirable consequences:
- Riders could lose rank even if they overperformed versus expectation
- Riders that raced frequently in weak fields would be promoted far above their actual ability (cat C riders with Grand Champion status)
- In races with a large number of participants, ranking changes were inflated
The new algorithm uses a linear calculation so that in almost all cases you will rank up if you exceed expectation, lose rank if you perform below expectation, and have minimal change to your rank if you meet expectation. This will still promote riders that consistently win, but will further improve the accuracy of the ranking, which is critical if used for pen definition. Check out ZwiftRacing.app to see how your rank has changed from race to race. If you are the 7th highest ranked rider and finished 7th, you will see that your rank barely changes.
Here is a graph showing all changes to rank that have happened so far, based on how large the delta was that was applied. Occurrences is on the Y axis, and delta change on the X axis. As you can see, most riders are very accurately ranked, and typically only have small changes to their ranking applied.
Change 2 – New Initial Seeding Methodology
One of the most difficult choices with a ranking system is how to deal with new or returning riders. Whilst the algorithm can adapt a rider’s rank quickly in the first few races, it is still important to get that initial placing as good as possible.
The old system used 20m w/kg from 90-day race history. For new riders that may mean only 1 race, so often this would not be a very accurate initial placing. Alongside this, lightweight riders would end up with an overly high initial ranking, and heavyweight riders an overly low ranking.
In the new version, Compound Score is used. This is a calculation of 5m power using both raw Watts and W/kg to neutralize the weight element. 5m power is also much more reliable in terms of applicability to Zwift.
This is the only time power is used as a ranking component, and the rankings quickly adapt after initial placement.
Note that the ranking values and boundaries between ranks are now different. Check out the site for more information.
Change 3 – Podium Bonuses
There is now a small bonus applied to podium positions. This is to ensure that racers who typically race as the highest-ranked rider (for example always at the top of a power-based category, or at the very top of overall rankings) can still progress upwards. This is applied in an exponential fashion, where there is little bonus applied if the field is small.
Socks4Watts Mystery Matchmaking: 20th November 3pm UTC – Makuri 40km
The next trial race is now set up, and it’s a bit different! Sign up before the deadline (19th November 10PM UTC), and you will be sent the link to the race on the morning of the race. The split of riders between pens is decided after signup has closed. This is hopefully the first step in creating a fully automated matchmaking process.
Tim has a number of changes planned that I am sure we will see soon:
- Login functionality
- ZP-compliant points racing support
- iTT support
- Racing achievements
- New graphics-first approach for rank and progression
Have you checked out your ranking yet and how it is impacted as you race? Comment below!