Position Score – the Column Formerly Known as Position Percentile

Segment StatsYour leaderboard positions on Strava segments can be a bit of a badge of honour but the significance of each of those positions can vary wildly. If you are 6th placed out of 3000 riders then that is pretty good going but 1st place out of just 2 riders is less so. In steps an suggestion from a forum to include a position percentile column and corresponding graphs, a few minutes later and the first incarnation of the position percentile appeared.

Based on my fairly basic experience with stats and percentiles in particular (baby sizing), the bigger the number the higher the percentile, so that is what I went with and people were immediately comparing their best values with each other. However I have recently been educated in how percentiles should be used (think of it like exam grades, you are in the top percentiles the better you perform) so I tweaked it round to work the other way so now the higher the value the better.

One of the potentially confusing results in doing this is the graphs relating to this value have now been switched round which I’m not too sure about just from a consistency point of view. When dealing with absolute positions then it’s obvious that the first column is your number of 1st places which puts the priority on the left hand side of the graph, so it would probably be best to keep that same target distribution curve for this data as well to ensure the majority of users understand what is a good distribution to aim for.

A comment I’ve had a couple of times since reversing the value of this column has been that their 1st of 1 segment positions are showing up with a value of 0% rather than 100%. Once again I’d have to leave it to a stats expert to educate me as to what that should be from a technical perspective seeing as the rider is in first place, but is also in last place!

My viewpoint is that this column should show the value of each of your PR’s in terms of position on the leaderboard and so a 1st of 1 is actually of no value at all and so should show 0.

Suggested solution

So, the easiest solution I can see is to ditch the term “percentile” from this column and replace it with something like “Position Score” with the higher the value the better. It will remain to be calculated as it is now (100 * ([number of riders] – [position]) / [number of riders]). This will make it simpler for more people to understand, especially if they know it is between 0 and 100. It should also remove the confusion for the real statisticians out there. I’ll also remove the % as well and just provide am “out of 100” type description.

I’ll spin the graph round so the bigger your values on the left of the graph the better to be consistent with the positions.

Having a “higher the better” score for these values also allows us to sum them up to give some more interesting stats. What I can now do is add a column to the rides list which sums up the scores of PR’s for each ride to provide a potentially better ride “score” than just the count of positions as it currently does. Trying to maintain a value for your non-PR’s would be far too labour intensive in terms of getting data from Strava so I won’t even think about trying that.

On the summary page I could also add some best segment position scores for each climb category or over different distances/speeds etc.

What do people reckon?


Following further comments from users the equation used to generate this score has been tweaked again to become:

100 * ([number of riders] + 1 – [position]) / ([number of riders] + 1)

The adding of the 1 above the divide means that if you are right at the top of a leaderboard (most obvious if KOM/QOM) then the score will still reflect the number of athletes on the segment – so if you are 1st of 10 you score less than being 1st of 1000.

The adding of the 1 below the divide means that if you are right at the bottom of the leaderboard then the score will once again be reflected by the number of athletes. Being last of 10 scores higher than being last of 1000.

Your top 100 Position Scores (or top 25% of Scores if < 400 segments) of segments with a grade >= 0% are averaged to provide your VeloViewer Score.

0 thoughts on “Position Score – the Column Formerly Known as Position Percentile

  • Taking off the ‘percentile’ term would work just fine, its still a useful number either way.

    I could see changing the 1/1 positions to show 100 instead of 0. Thinking of it like this: If you’re 1/10, you’re better than 90% of the folks out there. 1/2 and you’re better than 50% out there. But 1/1, really you’re better than everyone else, since they haven’t even tried yet. Or, just leave it at 0. 😉

    That comment mentioned, I’ve a few segments that show me in a negative position percentile. (athlete id 503319)

    • I’ve got one of those negative “position scores” as well. Haven’t looked into it yet but will do. Thanks for your feedback.

      • I also have a negative score on one segment. I think it’s a flagged ride with dodgy data on a very short segment. Strava’s web site doesn’t show my KOM but the API maybe does.

        • James, did the “update segment details” link on the Segment Details page resolve this? It checks for deleted/flagged state as well as getting other stats. If not then let me know the segment Id.

        • Fixed a bug in placing check process that wasn’t saving new value for number of riders ridden each segment. Updating your placings will now save this value and remove your negative values (and give a better value for all your scores).

    • Hi Ian, If you go to the segment details page for each of your segments that have a negative “position score” then press the “Update segment details” link at the bottom right. This, as well as checking changes to elevation data, also rechecks the number of riders ridden so will sort out these negative scores. When you check your placings it should also check the number of riders ridden but it seems it isn’t working 100% right at the moment but at least you can sort out these specifics as it stands.

  • I think that the position score should equal 100 if you are the KOM? I guess that calculation should be somehting like: (Total – Position) / (Total – 1) …?

    • But does that not remove the ability to compare your segments effectively? Check out my segments ordered by the Position Score: http://veloviewer.com/AthleteSegments.php?athleteId=306128&order=PosPercentile If you look at just the categorised climbs (those with VAM set) then my 2nd best scoring climb is when I’m in 3rd place despite there being a number of other KOM’s scoring less. I think that is right as that 3rd place is out of 3 times as many people as most of the others at the top of the list and so has much more value to me. I’ve got a number of KOM’s where I’m the only person to have ridden the segment and so they are right at the bottom of the list as basically I’m also in last place! These definitely aren’t as important as my 3rd place on that Winnats Pass segment.
      I’m not saying there isn’t a better way to “score” a segment result but it would need to take into account the context of that segment in terms of the relative competition.

  • Hi Ben, well done with this great site. The segment page and sorting by Pos Score is very helpful, helping me to find the segments in most need of improvement. I had a thought about a tiny change you could make to the Pos Score calculation. The change is simply to add 1 to the number of people in the table, before doing the calculation in the same way as before. To explain : I like the feature that a KOM never gives 100% (because it’s better to be 1st of a greater number of people). But similarly, at the other end of the table, for example, it’s really “worse” to be last of 60 people than last of 2, although both cases would currently give the same zero Pos Score. The small change would handle that, and also it would have the effect that 1st of 1 would return 50% instead of zero. That would be helpful for me, as I always want to get rid of any zero results, but can’t do anything about my zero score if I am 1st of 1. Other examples, 1st of 2 would be 66.67% and 2nd of 2 would be 33.33%.

    Modified Pos Score = 100 * (1 – (Pos / (Num + 1) ) )

    By the way, I’m not sure if Pos Score needs the two decimal places. Anyway, thank you very much!

  • I just found your website tonight, great job, very interesting information. While trying to understand why I would want a POS score, I read this page. Using a segment that I have ridden with over 40 riders, I have found a formula that may give you the results you are looking for. Basically, (rider’s average speed – slowest rider’s average speed) / (fastest rider’s average speed – slowest rider’s average speed) this gives the KOM a 1.0 and last place a 0. You could then multiply the result by the total number of riders, or use if statements to bracket bonus points or penalties based on the total number of riders.

    • I think the position score is pretty much as useful as it can be as it is. Using time of the slowest wouldn’t be that much use (as well as very awkward to find!) as if someone stops at a cafe mid segment (which I have been known to do) then the slowest times for those segments can be a massive amount more than what is average and skew all the other figures.

  • Wesley Van den Berg says:

    As the number itself doesn’t have an actual maximum its hard to interpret (its great for comparison with others, but hard to interpret as stand alone number for me). So I was trying to visualize the number in Excel and while playing in Excel I got a thought to create a standalone number to complement the VV score;

    (Max VV based on your segments – Actual VV based on your segments) / Max VV again = Your (%) place in your cycling world while.

    I’m not 100% sure if my trail of thought works…it has my brain wrapped at the moment, but I think that this is what I want my VV score to tell me.

    • That maximum possible score is a very interesting idea and yeah, I’d like to know that too for my own score. 2 choices on that value though:
      1. display the maximum possible score from the 100 segments that make up your current score.
      2. display the maximum possible score from the 100 segments that have the highest possible score from your entire segment collection.
      I’m erring on the 2nd option (which would be based on the 100 segments with the highest number of athletes having completed it).
      What do you think?

      • Wesley Van den Berg says:

        Instinctively I was also leaning towards the 2nd option as that shows how well you’re performing as opposed to how well you could be performing. However, while typing a response, one objection did come to mind…. the “cafe break” segments some of us (me including) have… I usually don’t do the MTB trails here in one go as I’m waiting on a colleague I always go MTBing with, the sections do however have some of the highest densities and are far away so I can’t just go and beat my times. So these will probably cloud my (and others) results…

        Option one does not have this problem, even though it does challenge you less.

        • Sounds like you should get out for a MTB on your own and record a proper time on those segments!

          I think it is more of an issue if you live in the (relative) sticks like myself and do a one-off trip to a big city and complete a number of segments on a leisurely ride with 1000’s of athletes on them with no intention of ever heading back to that city then the high potential scores of those segments will forever skew your result. I think there will be a lot of people in that situation.

          I’m not overly convinced about the final calculation though. Not because there is anything wrong with it and it would potentially give a better comparison between areas but it would just take too much explaining for people to understand. I’ll look at calculating the best potential score and see how that looks.

          • Wesley Van den Berg says:

            Wish I could, but he has the car…I do everything by bike. Sounds like you should do more big city trips! 😉 But yeah, thats the problem with calculating with the full potential of your segments.

            Maybe it doesn’t need a final calculation seeing “VeloView score 98.5 out of a maximum score of 99.7” might be clear for everyone.

          • Check out the summary screen, I added it in this morning. Shows the correct values when you flick between the different filtering options too.

Comments are closed.