We’re four meets into the six-meet regular season of the International Swimming League. Combining those four data points gives us a projection on how the ISL Championship could turn out.
The DC Trident have a much better shot than Iron do. In order to make Vegas, they need to beat the LA Current by two places. They could also make it by beating LA by exactly one spot while also outscoring them by 211 points, but this specific scenario seems impossible (in the sense that if DC outscores LA by 211 points, they they almost surely beat them by more than one place), so their most likely route to Vegas is a two-place victory. The most likely of those outcomes would be a Cali-DC-NY-LA finish. It’ll be very hard for DC to do this, but it is technically feasible.
Definitely the expected participants in the Vegas final are the Cali Condors and LA Current from the US and the London Roar and Energy Standard from Europe. The question is – who will take home the inaugural victory? I don’t know. But I can try to do some projections.
There are lots of approaches that we could take to do projections, I’ll go roughly from least to most complicated (though not necessarily from least to most accurate). Any approach I take though will have the same big caveats:
– I’m taking times of different people who aren’t necessarily racing each other, and having those other competitors would certainly change their behavior.
– I’m taking lineups of teams that were made with their competition in mind, and just using them for other competition.
– I’m trying to simulate skins. That’s just a caveat all on its own.
– I’m also going to be trying to guess lineups and times, based on not too much information.
FIRST, following the same way I did the initial Oct Meet results, we could just take all the Cali, LA, London, and Energy results from Indianapolis and Dallas and pretend they all raced each other. As with the Oct Meet, I’m going to simulate skins by just taking the top 4 of the 8 results, and then the top 2 of the round 2 results, and then the winner of the round 3 results. If a particular swimmer didn’t make the round that I need a time for them, I’m just going to assign them a time of 60s. For instance, with the Indy/Dallas times, the top four men after round 1 would be Adrian (LAC), McEvoy (LON), Manaudou (ENS), and Chalmers (LON) – but Chalmers didn’t make the 2nd round in Dallas, so he automatically finishes 4th. The simulated top two would then be Adrian and McEvoy – but McEvoy didn’t make the final in Dallas, so Adrian wins by default.
The Indy+Dallas scoring ends up:
Final Scores
476.5 – London Roar
404.0 – LA Current
388.0 – Energy Standard
353.5 – Cali Condors
With Emma McKeon and Cate Campbell tying for MVP (it should be McKeon on her own, but ISL changed how they do MVP scoring because reasons).
Likewise, the Naples+Budapest scoring ends up:
Final Scores
503.0 – London Roar
399.0 – LA Current
375.0 – Cali Condors
346.0 – Energy Standard
With Dressel dominating the MVP scoring.
There’s our starting gambit. Just taking the two meets pairwise, London wins going away, with the other three teams in a fairly close race for 2nd, with LA getting it both times.
We can also mix/match. Indy/Budapest ends up:
Final Scores
513.5 – London Roar
417.5 – LA Current
370.0 – Energy Standard
325.0 – Cali Condors
And Naples/Dallas is the closest of the bunch and the only version of this approach where LA doesn’t get 2nd, although London still wins:
Final Scores
435.0 – London Roar
421.5 – Cali Condors
387.0 – Energy Standard
375.5 – LA Current
Of course this approach hurts Cali quite a bit, since Dressel didn’t make Indianapolis but many of their other top swimmers didn’t make Naples. A SECOND approach would be to take the top two times from each event across both meets so far. For the relays, I’m taking the top relay and then the 2nd relay that has none of those four people on it. That gives us the following scores:
Final Scores
491.0 – London Roar
396.5 – LA Current
377.0 – Cali Condors
367.5 – Energy Standard
Still London ahead by a lot, very close race for 2-3-4.
What if we added some normal distribution worth of noise. That is, pick some percentage, centered at 0 with a standard deviation of 0.5% and apply that to every time, and run it 1000 times. 0.5% doesn’t sound like much, but that’s still a quarter of a second out of 50 — much larger than the difference in the men’s 100 fly there. Additionally, rather than choosing specific lineup orders for relays based on history, I’m also going to randomly assign people between the “A” and “B” relays (not like, completely random – I’m still picking the top 8 people, I’m not a monster). This can act as a proxy for wanting to decide whether to split or stack relays.
At 0.5%, we get average scores of:
1. 482.1 – London Roar
2. 400.3 – LA Current
3. 376.0 – Cali Condors
4. 373.6 – Energy Standard
This is similar to the above as expected, but the more interested aspect of this kind of simulation is what it can tell us about places:
1. London Roar (99.9%), LA Current (0.1%)
2. LA Current (82.7%), Energy Standard (10.2%), Cali Condors (7.0%), London Roar (0.1%)
3. Cali Condors (48.6%), Energy Standard (37.9%), LA Current (13.5%)
4. Energy Standard (51.9%), Cali Condors (44.4%), LA Current (3.7%)
That is, London still wins going away, but you can see how close the battle is between the other three teams. LA is the favorite for 2nd place, coin flip for 3rd and 4th.
The relay selection does make a difference here. Completely randomizing the relays gets LA to get 2nd place more than 4 times in 5. Stacking every relay gives us this distribution:
1. London Roar (100.0%)
2. LA Current (70.2%), Cali Condors (24.9%), Energy Standard (4.9%)
3. Cali Condors (57.5%), LA Current (24.7%), Energy Standard (17.8%)
4. Energy Standard (77.3%), Cali Condors (17.6%), LA Current (5.1%)
If we widen the noise out to 0.8%, while randomizing relay selection:
1. London Roar (99.5%), LA Current (0.5%)
2. LA Current (57.4%), Cali Condors (23.8%), Energy Standard (18.4%), London Roar (0.4%)
3. Cali Condors (41.3%), LA Current (30.1%), Energy Standard (28.6%)
4. Energy Standard (53.0%), Cali Condors (34.9%), LA Current (12.0%), London Roar (0.1%)
Little more noise opens up the race for 2nd a lot. That promises a lot of excitement.
FOURTH, these actually still aren’t complete rosters. Duncan Scott and Siobhan-Marie O’Connor have not yet competed for London (as if they needed any more strength). Cali Condors recently added sprinter Tate Jackson. Most intriguingly, Energy Standard just recently signed Daiya Seto. Let’s look at Seto’s impact first.
Energy’s top two 400 IMers so far are Max Stupin (4:09.6) and Mykhailo Romanchuk (4:12.2), and the top ranked swimmer in the final would be Andrew Seliskar (4:03.2). Seto just swam a 3:55.5. Likewise, their two top 200 IMers have been Stupin (1:57.0) and Kolesnikov (1:57.1), whereas Seto just swam a 1:55.7 and was 1:51.0 last year (the top time amongst the finalists so far is Mitch Larkin’s 1:52.9). Incidentally, he’s the world record holder in the 200 fly (1:48.2) although Energy also has le Clos in that event. Seto is not only a potential 3-event winner, but in two of those he would replace a likely 8th place finisher. That is a large swing.
Let’s see what happens when we throw Seto in the mix, giving him a 1:49.5 fly, and 1:52.0/3:56.0s in the IM. Those numbers are somewhat arbitrary, but definitely realistic. With 0.5% noise and randomizing relays:
1. London Roar (99.8%), Energy Standard (0.2%)
2. Energy Standard (50.1%), LA Current (39.8%), Cali Condors (9.9%), London Roar (0.2%)
3. LA Current (40.8%), Energy Standard (30.3%), Cali Condors (28.9%)
4. Cali Condors (61.2%), Energy Standard (19.4%), LA Current (19.4%)
That is a huge swing for Energy. They move up to a slight majority for second, pushing Cali down to favoring 4th place. But very much a tossup. Widen the noise out to 0.8%:
1. London Roar (99.0%), Energy Standard (0.7%), LA Current (0.3%)
2. Energy Standard (43.7%), LA Current (41.2%), Cali Condors (14.3%), London Roar (0.8%)
3. LA Current (35.1%), Energy Standard (33.4%), Cali Condors (31.3%), London Roar (0.2%)
4. Cali Condors (54.4%), LA Current (23.4%), Energy Standard (22.2%)
Now, let’s see what we can do with Tate Jackson. Cali has Caeleb Dressel, the favorite for both the 50m and 100m freestylers but their second swimmer in those events (Justin Ress and Kacper Majchrzak) are ranked 8th. It’s hard to know what Tate can do in SCM, he was 18.7/41.0 in yards and 22.3/47.8 in LCM this season. That’s converts somewhere between 20.8 and 21.5 for the 50m and 45.5 and 46.5 for the 100m. I’m going to go very conservative here and assume that Tate can throw down a 47.0 flat start in the 100m and not even put him in the 50. How much would that help Cali?
At 0.5% noise, randomizing relays:
1. London Roar (99.9%), LA Current (0.1%)
2. Energy Standard (43.8%), LA Current (40.1%), Cali Condors (16.0%), London Roar (0.1%)
3. LA Current (36.2%), Energy Standard (31.9%), Cali Condors (31.9%)
4. Cali Condors (52.1%), Energy Standard (24.3%), LA Current (23.6%)
At 0.8% noise, randomizing relays, they even have a shot at winning. And with Tate, a full 22 percentage points higher a shot at finishing second:
1. London Roar (99.0%), Energy Standard (0.5%), LA Current (0.3%), Cali Condors (0.2%)
2. Cali Condors (36.7%), Energy Standard (32.9%), LA Current (29.5%), London Roar (0.9%)
3. Cali Condors (35.2%), LA Current (32.4%), Energy Standard (32.3%), London Roar (0.1%)
4. LA Current (37.8%), Energy Standard (34.3%), Cali Condors (27.9%)
All of which is to say, it seems like London is the clear favorite here (I haven’t even added Duncan Scott or Siobhan-Marie O’Connor to their lineup), but it’s really anybody’s game for 2nd.
Interesting! Did you add the noise to the combined results from the four meets?
London Roar is so strong. 99.9% win rate even after adding the noise is ridiculous. I guess it’s not too surprising given the predicted points differential for their win (around 80-100 points higher than second for every comparison except Naples/Dallas). I wonder what happened in the points distribution for those few runs that Roar lost. Do you have the code up on github or somewhere?