# How many rounds should a swiss tournament have?

3 Likes

EGS

2 Likes

I changed the scenario a little bit:

• Tournament with 32 players;
• Players Îą, Î˛ and Îł have Elo 300, 200 and 100 respectively;
• All other playerâs Elo are evenly distributed between 0 and -2000;
• At each round, players are ordered by number of victories. Among players with the same number of victories, ordering is random. Then player 1 is paired with player 2, player 3 with player 4, player 5 with player 6, etc.
• I estimated the probability that after r rounds, players Îą, Î˛ and Îł get the first three places in that order with no ties (Îł is not tied with any other player).

This doesnât converge to 1. I was surprised by that result at first but I think I understand the reason. If Îą is first and Î˛ is second, then they are paired together so Î˛ has less than 50% winrate, while Îł is paired with a weaker player and has more than 50% winrate. This continues until Îł (or maybe Î´) becomes second and Î˛ becomes third, and then Î˛ starts to have a winrate over 50% again and can climb back to the second placeâŚ

Interesting. The numbers in the top graph are implausibly low. But then I realised youâre simulating the wrong thing. With your random matchups, you allow repeated pairings. So the top 3 players will be repeatedly playing each other, with gamma struggling to get above 50%, while the bottom 29 players will be repeatedly playing each other and frequently getting above 50% by luck.

In a real swiss, you would not ever play the same opponent twice (and a 32-player tournament couldnât go past 31 rounds). So if youâve got a top group who are much stronger than everyone else, then in a long enough tournament they would claim the top places by beating up on weaker opponents. Your simulations are missing the âbeat up on weaker opponentsâ factor, hence the numbers are too low! (My recollection of chess tournaments is that in amateur events, about a third of games were savage maulings on this basis. In go, weâre kinder and tend to use mcmahon to prevent this. Less rough, but you miss the thrill of the occasional accidental game with a grandmaster.)

And exploring a bit more: to my surprise, there seems to be no R or python library (or in fact any open source library) for calculating Swiss pairings correctly! There are plenty of âtournament helperâ apps with graphical interfaces, but nothing you can plug into a script for this kind of repeated simulations. And coding up a correct Swiss pairing algorithm from scratch is a fairly big piece of work. So of course youâve taken what looks like a reasonable shortcut. But I think it has a big impact on the results.

I just coded up the same scenario for a round-robin tournament, which is much much easier (about 20 lines of code in R). The probability of places 1-3 being correct is about 46%. Not 100% because a 300 elo player will only beat a 200 elo player around 64% of the time, not 100%, and similar for the other top pairings. And indeed your simulations seem to be converging on close to 46%.

I donât plan to code up a fully correct Swiss any time soon. But thanks for taking a look!

2 Likes

This thread fizzled out. IMO, the formula @xela points at is easy to implement and obviously better than the status quo. Do others agree?

## What should we do in the short term?

One change possibility is to use the âChess Organizers Handbookâ suggestion, which is intuitive.

• Effectively, do an elimination tournament without eliminating any players
• If there are 3+ players, add two rounds to collect data on 2nd place
• Maybe: If there are âenoughâ players, add extra rounds to collect data on 3rd place

EDIT: deleted original poll to add @Samrakuâs option. The results look nice enough compared to the simple formula from the chess handbook.

• Chess handbook adds rounds in increments of 2. This gets better results for 1st place, per @jltâs graphs above in the thread.
• @Samrakuâs `*1.4` gives a progression of rounds that feels more natural.

I think either is fine and better than the status quo.

Should we make a change (new poll)?

Formula to use for number of rounds, v2, where `P` is the number of players
• `floor((P + 7*2)/5)`; Mr. Model; status quo
• `ceil(lg2(P)) + (2 or 4)`; Chess handbook; extra data for 2nd and/or 3rd
• `ceil(lg2(P) * 1.4)`; standard in chess
0 voters

If we make a change to âChess handbookâ, whatâs the cutoff for collecting extra data on 3rd place? 4+ players? 8+?

When to add two rounds to collect data on 3rd place
• Never
• 4+ players (always)
• 8+ players
• 16+ players
• 32+ players
• 64+ players
0 voters

(Whatever the choices, we can change in the future if someone does research and establishes a new consensusâŚ)

For reference, hereâs what the number of rounds looks like compared to Mr. Model:

Players Mr Model 3rd never 3rd if 4+ 3rd if 32+ `* 1.4`
2 2 1 1 1 1
3 3 4 4 4 2
4 3 4 6 4 3
8 4 5 7 5 5
16 6 6 8 6 6
32 9 7 9 9 7
64 15 8 10 10 9
128 28 9 11 11 10

IMO, just collecting data on 2nd place is fine. But maybe others want the extra rounds.

EDIT: Added poll to include @Samrakuâs âstandard from chessâ option. Also added to the table. The numbers look pretty nice to me. Iâve switched my vote to that.

1 Like

I think `ceil(lg2(P) * C)` where `C` is a constant (`1.4` is a popular value) deserves to be in the poll. Itâs the standard in chess afaik and itâs what Iâd vote for

1 Like

Sure. It was too late to edit the old poll, but Iâve closed the old one and opened a new one.

1 Like

Hmmm, usually we have a lot more people dropping out than in live tournaments. So maybe just using C=1 would be fine.

Three things I like about the `*1.4`:

• Itâs standard somewhere
• The progression in the number of rounds âfeelsâ natural.
• Seems in practice to be pretty close to the âchess organizerâs handbookâ, which itself makes intuitive sense to me.

One thing I donât like:

• Number of rounds arenât always at the peaks from @jltâs graphs. The peaks happen at â# rounds for single eliminationâ plus âmultiple of 2â. This method only hits the peaks some of the time.

I think either is a good option.

Swiss doesnât mean correspondence. There are live Swiss tournaments too.

EDIT: or maybe by âliveâ you meant âin-personâ? In any case, doing the same number of rounds as single elimination seems like a more dramatic change. Maybe better to consider that later as a second step, after experience with something more standard.

I like having a bit more games than the bare minimum, which `1.0` gives. with `1.0` it just feels like an elimination Tournament in disguise

1 Like

If you have a dropout rate of 20% per round you may easily end up in a situation where all players left in the final round have basically played all other players left, making it a round robin in disguise.

But I donât really care that much tbh.

You need a much higher factor for that to be a concern. And even if so, the problem with a Round Robin is not that itâs bad, itâs that it has too many rounds to be practical with large numbers of players: the exact situation where `C = 1.4` will be far too small to cause that problem `lg(16) * 1.4 = 5.6; ceil(5.6) = 6` a Round Robin for 16 players has 15 rounds, 2Â˝ times as many

With a dropout rate of 20% there will be 5 players out of 16 left in round 6. That is my point. A 5 player round robin has 4 rounds, not 15.

20% dropping out per round!? who are you playing with!? even so, itâs highly unlikely to reduce to Round Robin, and even if it does, it didnât run into the main reason not to use round robin: obscene numbers of rounds

Umm, with other OGS players. Hereâs a swiss tournament Iâm playing in: Make a decision that you will never stop learning! Rate is closer to 15% though, but still.

BTW: the entire discussion is entirely irrelevant, because the pairing logic in Swiss seems to be as broken as the one in McMahon. In the tournament linked I had 3 points before the current round, my opponent had 1, yet we were paired. Iâd strongly suggest to fix that first.

It still never got remotely near as few rounds as Round Robin would have, not to mention that Round Robin wouldnât have been able to predict how many people would drop, and so would have 52 rounds youâd be stuck playing

And to repeat, even if it got down to the same number of rounds as a prognosticating Round Robin would have had, and even if you take the completely unreasonable assumption that this would simulate a round robin (everyone would play eachother (or in this case those that are left) once, or at the very least would not play another player twice until they had played all other players once), it still isnât as big a problem as simulating elimination, because the problem with Round Robin is not that itâs a bad format, itâs that it has too many rounds, a situation which would not be the case here

Well, Iâm not arguing that swiss is bad with more rounds than I argue for. The discussion was about how many rounds do wee need, because we want to determine the winner (and maybe 2nd and 3rd). All Iâm saying is that because of dropout weâd need less that one might think. But again, itâs not much of an issue anyway.

Repeating my other point though (and not directed at you, @Samraku): without fixing the pairing we need n-1 round in swiss to determine a winner. Because the top 2 players might not be paired in the first n-2 rounds. So please fix that first.

You have to assume 0 dropouts for this calculation. And if your goal is just to determine the top n players, n-le elimination or `ceil(lg2(P))` for the top 1 case will be close to equivalent, but Elimination is likely to be preffered in that case as itâs easier to understand

However, if one picks Swiss, one does not just want to determine the top n players, so the calculations shouldnât be built around that beyond using `lg2(P)`, the number of rounds necessary to find the top player, as a base point. The extra rounds beyond that are what makes Swiss swiss. If youâre trying to have only the number of rounds you need in order to find the top n players, Swiss is not what youâre looking for

Let Swiss be Swiss, donât coerce it into budget Elimination

You make it sound like Iâm fighting for something here. Really, all I wanted to point out is that people dropping out changes the math a bit. Iâm not advocating for anything (in that respect).

Yes, fully agreed with that. Letâs START doing that by pairing people with the same amount of points, which is NOT happening atm. We never had Swiss tournaments so far!