YGO Omega's Ranking Algorithm

The purpose of this article is not to dive deep into the rabbit hole of the delicate intricacies and mathematics behind ranking algorithms. Rather, it is to explain the ranking algorithm that YGO Omega is currently using, the reasons behind the values we chose and examples of how it works. We want to be transparent with our algorithm so it can be peer-reviewed and improved with player feedback.

How do other Games do it?

Before we get into the nitty gritty, it’s important to understand how other games in the past and present implemented rating systems.

Dueling Network:

One of the most popular simulators known for an accurate rating system was Dueling Network. It used a modified version of Elo. Each player would start with 100 / 0 where 100 represents the rating and 0 represents experience. They also factored in how much LP difference and card difference (hand+field) were extra compared to the opponent at the end of the duel. We know this from the faq published from Dueling Network forums shown below.

The successor to Dueling Network, Dueling Book, does not use Elo. It did try to emulate the system but the ranking algorithm used by Dueling Book awards base points calculated from the difference between each player’s rating and bonus points based on things earned during the duel. It is unknown how those points are calculated, but the players start again from 100 / 0 and the maximum rating is 2000. The matchmaking also is essentially the same. Even very high rated players >1800 still get matched with <1000 on Dueling Book, but the amount of points gained or lost is very small, so it is less sensitive to changes. That said, due to these “bonus points”, a high-rated (>1800) player can rank up relatively fast even by defeating multiple low-rated (<1000) players by meeting the conditions of those “bonus points” during a duel. This is easy to do if their opponents are weaker.

These “bonus points” add an element of bias. It’s equivalent to stating that a Chess player should get bonus points for each extra piece on the board at the end of the game. However, we know from Chess, that strategy is not necessarily dependent on which player has the most pieces. Rather, it’s possible for the player with less pieces to win by checkmate and that sacrificing pieces to win is also a strategy. In today’s metagame, one cannot judge who has the lead simply by counting the number of cards in the hand and field or even by looking at one’s LP. The game state is very complicated and the winner of a duel can turnaround at any time which is what makes Yugioh unpredictable and exciting. Hence, a ranking algorithm should not have any element of bias or subjectivity and only give points according to the difference between player’s ratings. In addition, it’s not good to start at the bottom (100 rating), but to start in the middle (1000 rating), as the algorithm will place a player better this way since it has no data for new players yet.

MTG Arena and Duel Links:

In MTG Arena and Duel Links, they count the number of steps. Each win is 2 steps in Bronze. A total of 6 steps allows you to advance to a new tier (Bronze->Silver). This means 3 consecutive wins in Bronze would mean you go to Silver. In Duel Links, it’s a total of 10 steps so 5 consecutive wins. The quality of those wins/losses don’t matter, only the quantity. This means all wins and losses are treated equal regardless of the strength of the opponent. This isn’t a rating system per se, but a level up or progression system. You can simplify this into a formula that just equals x*(Wins - Losses). These systems do not approximate a player’s rating but a player’s persistence (grinding) to get to the top. It’s inevitable that if a player regardless of skill, will eventually reach the top in these systems. It’s great for game companies since it causes more players to play and hence, they get more money in their pocket. In Elo, the strength of your opponent matters. A win against an opponent with Elo 1500 is different from a win against 1000 Elo.

Source: https://strategy.channelfireball.com/all-strategy/mtg/channelmagic-articles/how-many-games-do-you-need-to-play-to-hit-mythic-in-mtg-arena
The table below is the MMR step system used in MTG Arena.

The difference between Elo (used by DN) and MMR (used by MTG Arena & Duel Links), is that in Elo, the opponent’s strength matters. That is, in MMR, all wins and losses are treated equal. It is not a ranking system but a progression system like leveling up in an RPG. This motivates players to play more which is great for gaming companies. However, the purpose of a true rating system is to quantify a player’s skill. To do this, wins and losses cannot be treated equally because a win against a stronger player is not the same as a win against a weaker player. Hence, there is unequal weighting. This weighting is the basis of Elo.

Elo Rating System

YGO Omega uses the Elo algorithm. Arpad Elo, a Hungarian physicist, invented this algorithm in 1939 and it is still used in many games today like Chess and League of Legends. The latter of which has won esports game of the year from 2015-2020. There have been other algorithms invented like Glicko and Microsoft’s TrueSkill. These newer algorithms tried to add more accuracy to a player’s rating and added an uncertainty factor which would capture a player’s rating +/- around a number. In Elo, each player has an exact number. This number is calculated using a formula.

E_A = \frac{1}{1+10^{(R_B-R_A )/400}}
E_B = \frac{1}{1+10^{(R_A-R_B )/400}}

EA = The expected score of Player A.
EB = The expected score of Player B.
RA = The current Elo rating of Player A.
RB = The current Elo rating of Player B.


R’A = Player A’s new rating after the game.
R’B = Player B’s new rating after the game.
K = the K-factor. This value determines how fast a player will climb or fall.
SA = The match result for Player A. Win=1, Draw=0.5, Loss=0
SB = The match result for Player B. Win=1, Draw=0.5, Loss=0

K-factor and Brackets

In YGO Omega, the K-factor changes based on the bracket you are in.

Bracket Elo K-factor DP earned
Bronze 0 - 1149 50
Silver 1150 - 1499 42 30
Gold 1500 - 1849 34 60
Platinum 1850 - 2199 26 90
Diamond 2200 - 2549 18 120
Master 2550 or above 10 150

Notice how the K-factor gets smaller as you go higher. This is because it gets harder to earn more points. The K-factor is the slope that decides how easy it is to climb or fall. You can also think of it as the sensitivity. The higher the sensitivity, the greater swing in points. This is also why losing against a player in Bronze causes a higher loss of points because the K is 100. We may adjust them in the future with player feedback.

Let’s do a simple example. Let’s say Player A has 1500 Elo and Player B has 1200 Elo. We’ll use a K=32.

What happens when Player A wins?

E_A = \frac{1}{1+10^{(1200-1500)/400}} = \frac{1}{1+10^{(-300)/400}} = \frac{1}{1.18} = 0.85
E_B = \frac{1}{1+10^{(1500-1200)/400}} = \frac{1}{1+10^{(300)/400}} = \frac{1}{6.62} = 0.15
R'_A= 1500+32(1-0.85) = 1500+32(0.15) = 1500 + 4.8 = 1504.8
R'_B= 1200+32(0-0.15) = 1200+32(-0.15) = 1200 - 4.8 = 1195.2

Player A’s new rating went up by 4.8 points if they won and Player B’s rating also dropped by 4.8 points.

What happens when Player A loses?

R'_A= 1500+32(0-0.85) = 1500+32(-.85) = 1500 - 27.2= 1472.2
R'_B= 1200+32(1-0.15) = 1200+32(0.85) = 1200 + 27.2 = 1227.2

Notice in this case, Player A drops by 27.2 points if they lose. This is because the player they lost against was lower rated than them, so the amount won by defeating a weaker player is only 4.8 points but the amount lost by losing to a weaker player is 27.2 points.

What happens if a Player wins 5 times in a row and then loses once?

Everyone begins with a 1000 Elo rating. Now let’s do an example. Let’s say Player A starts with a winning streak of 5 wins in a row but lost the 6th match. Let’s also assume that all of Player A’s opponents had an Elo of 1000. What is Player A’s final rating?

Player A’s rating = 1000 -> 1025 (1st win) -> 1048 (2nd win) -> 1070 (3rd win) -> 1090 (4th win) -> 1109 (5th win) -> 1076 (1st loss dropped by 33 points).

The 1st loss after 5 consecutive wins drops Player A’s rating by 33 points with a K-factor=50. This may seem like a lot but it is because they lost to a weaker player with 1000 rating. The 1076 is also not like they started again from the bottom but it’s higher than 3 consecutive wins. They lost more points from a loss than they did from a win because of the difference in player’s rating.

We believe this system to be fair. It may seem harsh but that’s how Elo works and has worked for decades in many esport games. If you don’t agree with Elo, then you end up with a level up progression system which makes a rating system pointless. The tiered K-factor algorithm based on League of Legends.

The biggest argument against Elo is that it doesn’t work well in games with a high degree of randomness like a card game. That there’s too much fluctuation (variance) due to chance to approximate an individual’s rating for it to stabilize. The counter argument again here is what is that degree of randomness? Is it equal to 50% (a coin toss) or rock paper scissors? Because if Yugioh is truly that random, then it is pointless to make any ranking algorithm and in that case, the MMR algorithm used by Duel Links that awards the same points for winning and losing, should be used.

Each time a Player advances to a new bracket, they earn DP (Duel Points), which can be used in the shop. Duel Links, an official Konami simulator, does not use Elo or really any viable ranking system. In Duel Links, if you win 5 times consecutively regardless of the strength of the opponent, you will advance to the next bracket. This means winning 5 times against weak players is all you need. Only a winning streak rather than measuring the strength of the opponents. It rewards grinding. If you keep doing it, eventually you will get that 5-winning streak.


The minimum wait time after joining the queue is 1 minute. A minimum wait time is needed to build up the players in the queue to ensure better matchmaking so that players with the most similar Elo score are matched. This is why we don’t match immediately. The longer the wait time, the better the matching but it also means longer waiting. There will always be a trade-off.

Additionally, let’s say only 2 players are in the queue but their Elo difference is greater than 350. That would result in a large fluctuation of points if the stronger player loses. Therefore, any Elo difference greater than 350 is counted as 350. This is also consistent with official FIDE calculations. The reason we picked 350 is simple - it is the difference between our Elo ranges for each bracket.

Elo Decay

One of the drawbacks of the Elo system that mathematicians discovered was that there was no penalty for players who simply stop playing. That is, if a player were to reach the highest rating and simply stop playing, then they would also reduce the chance of losing. So simply by not playing once you get to the top would be a problem.

To rectify this, a Mark Glickman, a mathematician from Harvard University, added a decay factor along with a uncertainty factor. This was the Glicko rating system.

However, we can add a decay factor in Elo itself which is what many games like League of Legends do. In YGO Omega, a player that is inactive for 15 or more days and has a Elo of Platinum (1850+) or higher, will have their Elo decay by 50 points each week thereafter. So the top player can’t just park their car and not play. There is a penalty for inactivity.


Rankings are reset every new banlist. The question is should everyone reset to the start of the race or should those that are already ahead stay ahead? Currently, the reset will reset everyone to 1000 Elo. Another possibility is to subtract 400 Elo from all players above 1400, otherwise reset to 1000.