- Fantasy Diamond League
- Posts
- Just how great was the Paris Diamond League -- and how can Oslo follow?
Just how great was the Paris Diamond League -- and how can Oslo follow?
Enter the Oslo Fantasy Diamond League by this Thursday

It’s a testament to the Diamond League that a meet with three world records is only the fourth best in series history
Enter the Oslo Fantasy DL by Thursday at 2pm ET here: https://hpr.github.io/oslo23
The Paris Diamond League surpassed all expectations — three of the four events mentioned in last week’s newsletter resulted in world records, including most surprisingly one by an athlete in Faith Kipyegon that had not raced that distance in seven years. You can re-watch them all here, here, and here — Congrats to the prediction contest winner SOGGY, and I’ll leave the recapping to LRC who wrote an excellent 5,000 words on the subject here.
The back-to-back action was so overwhelming, it led some to speculate whether this could have been the greatest regular-season track and field meeting ever. It’s a great prompt, so I set about solving it the way I know best — by writing a program to stack up Paris against every other Diamond League meet since its start in 2010.
You can read the technical details below, but the gist is that Paris 2023 actually only ranks 4th among all Diamond League meetings by the cumulative score of its top 3 events, with these ahead of it:
2021 Pre Classic (23.15m Men’s Shot +1309, 10.54 Women’s 100 +1302, 19.52 Men’s 200 +1297)
2011 Brussels (19.26 Men’s 200 +1339, 19.76 Men’s 100 +1291, 2.05m Women’s HJ +1269)
2022 Monaco (19.46 Men’s 200 +1306, 10.62 Women’s 100 +1284, 3:50.37 Women’s 1500 +1284)
2023 Paris (7:54.10 2-mile +1304, 7:52.11 Men’s 3KSt +1295, 14:05.20 Women’s 5000 +1272)
Interestingly, if you score Jakob’s 3000m split time of 7:24.00 as a separate race, it actually bumps 2023 Paris up to #3 on the list as even that en-route time scores better than the women’s 5000m. There are plenty of other quibbles to be had with this comparison method, namely that World Athletics tables may tend to favor the sprints and that they were never technically designed to compare performances across genders — but it’s still an interesting way of looking at things.
Ahead of us is Oslo this Thursday, and though Jakob Ingebrigsten says he isn’t going for the 1500 World Record there as the track is “too slow”, the Men’s 1500m is still one of the highlights of the meet including a rematch between Jakob and top American Yared Nuguse, who made a late charge on the Norwegian in Florence but came from too far back to contend for the win. There’s also another pair of DL season debutants and world record holders in Karsten Warholm (400H) and Wayde van Niekerk (flat 400), who both have fallen out of form in recent years but could be making a comeback, particularly in the case of van Niekerk who has already run some encouraging times this year.
I look forward to seeing your entries — feel free to reach out with questions or feedback as always by replying to this email, good luck and have fun!
Enter the Oslo Fantasy DL by Thursday at 2pm ET here: https://hpr.github.io/oslo23
Technical Details for the DL Ranking Program
The first task was to get a source for the data — after some detours I found it on the Results Archive “History” section of every DL meeting site, which is really just an iframe to the (defunct, now-acquired by World Athletics) All-Athletics site to query Diamond League results. There is no JSON API for this data — it’s all rendered server-side into HTML, so the best we can do is fetch and parse it with Typescript + JSDOM.
The first step is the fetching — there are approximately 200 meeting pages to fetch, which is basically just 13 years of data to fetch since 2010 multiplied by 15 unique “meeting IDs” for each meet. We can get the meeting IDs and their associated names like "21": "Meeting de Paris", by parsing (actually, executing) the JavaScript code on the all-athletics site — we store those results here.
Then we fetch each page in a loop and parse it with JSDOM — the headers in particular describing each event (i.e. Men’s 100m) and its category (i.e. Diamond League events versus non-DL events) were not very structured which made this difficult, so I ended up traversing the page like a linked list between category headings that I could identify. Once the data was all fetched and stored in easy-to-read but not-very-massaged JSON files — one for each instance of each meeting — it was time to actually score and rank the meets.
We do that in the rankMeets.mts file, with the help of the excellent @GlaivePro’s excellent wa-calculator library which already did the hard work of reverse-engineering the 2022 World Athletics scoring tables. This provides an authoritative way to compare performances across events — if we score the top 3 events at each meet and compare their sums, we can achieve an approximate ranking of the “best” Diamond League meets of all time.
But our data needed a bit of massaging before it could be used with wa-calculator — it expects very specifically formatted values for gender and discipline (i.e. event like 100m, 200m, etc). wa-calculator demands brief event codes like “2miles” instead of the more lengthy All-Athletics names like “2 Miles”, so I wrote a conversion table here. With all the parameters properly formatted, we can calculate the score with the help of a function “markToSecs” which I wrote previously to convert MM:SS times to their raw seconds values.
Finally, we can score and sort the meetings by taking their top 3 performances — or any number of performances for that matter. With all the Diamond League data now properly archived, there’s a lot more that can theoretically be done in the future — all my code is open source so I look forward to hearing from you if you decide to do anything with it!
Let me know if you made it this far and would like similar sorts of technical recaps — they can be difficult to write but fun to share!