Skip to main content
Submit Results
Back to Blog

Inside the DigiLab Rating System

How your competitive rating is calculated, why big events now count more, and the math behind it all.

A player places 9th out of 234 at a regional. Another player wins a 12-person weekly local. Under the old system, both gained roughly the same amount of rating. That didn’t feel right because it wasn’t right.

This post is the definitive guide to how DigiLab calculates your competitive rating: the full methodology, the tradeoffs, and the change we just made to fix how large events are weighted.

The Basics: Modified Elo

DigiLab uses a modified Elo rating system, the same family of algorithms used by FIDE chess, competitive gaming platforms, and sports leagues worldwide. The core idea is simple: your rating goes up when you beat players rated higher than you, and down when you lose to players rated lower.

Every player starts at 1500. From there, the system adjusts based on results.

How a single matchup works:

  1. The system calculates an expected score based on the rating gap between two players
  2. If your actual result exceeds that expectation, your rating goes up. If it falls short, it goes down
  3. The size of the adjustment depends on how surprising the result was

Beat someone rated 200 points above you? Big gain. Lose to someone 200 points below? Big drop. Beat someone at your level? Small nudge in the right direction.

K-factor: How fast ratings move

The K-factor controls how much weight each event carries. DigiLab uses two tiers:

StatusK-FactorEvents Played
Provisional48Fewer than 5
Established245 or more

New players move fast. Their first few events teach the system where they belong. Once established, ratings settle down, and each event becomes a refinement, not a reset. This is standard practice in Elo systems. Chess uses a similar provisional period.

The Standings Problem

Here’s where DigiLab diverges from textbook Elo.

In chess, every game is recorded individually. Player A beats Player B in round 3, and that’s a concrete result you can feed directly into the formula.

In the Digimon TCG competitive scene, we don’t have round-by-round match results for most tournaments. What we have are final standings. Player A finished 3rd. Player B finished 7th. Player C finished 12th.

So we do something clever: we create implied matchups from those standings. If you finished 3rd and someone else finished 7th, the system treats that as a win for you. Same placement? That’s a draw. Higher placement than you? That’s a loss.

For a tournament with 20 players, that means 19 implied matchups per player. For a tournament with 234 players, that’s 233 implied matchups. Without any correction, those 233 virtual games would produce rating swings of ±200 points from a single event. That’s chaos.

The fix: normalization. We divide the total rating change by the number of opponents. This brings the implied matchups back to a single representative result, as if you played one game that captured your performance against the entire field.

It works. Ratings are stable, predictable, and converge on real skill levels across 2,100+ tournaments and 4,300+ players.

But it has a side effect.

The Size Blind Spot

The normalization perfectly cancels out tournament size. Mathematically, the rating change for a 1st place finish simplifies to:

change = K × (1 - avg_expected_score) × round_multiplier

The number of opponents appears in both the sum and the denominator, and they cancel out entirely. Tournament size is a non-factor. Winning a 12-player local and winning a 200-player regional produce nearly identical rating gains, assuming similar opponent ratings.

That’s the tradeoff. The normalization is necessary, because without it, large events would produce absurd swings. But it means the system can’t distinguish between a local and a major.

Enter the round multiplier.

The Round Multiplier

Tournaments with more rounds of Swiss pairing produce more meaningful standings. After 3 rounds, the standings are rough. After 8 rounds, they’re deeply refined: players have been tested against opponents at their level, bubble matches have been played, the cream has risen.

The round multiplier is DigiLab’s way of encoding this. More rounds = more competitive signal = more rating weight.

Until now, the formula looked like this:

round_multiplier = min(1.0 + (rounds - 3) × 0.1, 1.4)

A 3-round local gets 1.0× (baseline). Each additional round adds 0.1, up to a hard cap of 1.4 at 7 rounds. An 8-round regional with 234 players got the same 1.4× multiplier as a 7-round event with 20.

That cap was the problem. The round multiplier is the only lever that differentiates event sizes, and it stopped working exactly where it matters most.

What Changed: Curve B

We’ve replaced the capped formula with a progressive one. Events with 4 or fewer rounds are completely unchanged. Above 4 rounds, the multiplier grows faster and has no cap.

New formula:

rounds ≤ 4:  round_multiplier = 1.0 + (rounds - 3) × 0.1     (unchanged)
rounds > 4:  round_multiplier = 1.1 + (rounds - 4) × 0.2     (steeper, no cap)

Here’s the full comparison:

RoundsOld MultiplierNew MultiplierChange
31.0×1.0×
41.1×1.1×
51.2×1.3×+8%
61.3×1.5×+15%
71.4×1.7×+21%
81.4× (cap)1.9×+36%
91.4× (cap)2.1×+50%
101.4× (cap)2.3×+64%

The key insight: rounds correlate strongly with event size. 3-round events average 9 players. 5-round events average 28. 8-round events average 181. By scaling the round multiplier more aggressively, we’re reintroducing tournament size as a meaningful factor, without touching the normalization that keeps everything stable.

The Regional Example, Revisited

Remember our 234-player regional? Here’s how the change plays out for real results:

PlayerPlacementOld Rating ChangeNew Rating Change
1st place (provisional)1st / 234+34+46
taikamiya (established, 1613)9th / 234+10+14
Last place (provisional)234th / 234-33-45

Winning a regional now means something meaningfully different from winning a local. That 9th place finish at a stacked regional, grinding through 8 rounds of Swiss against strong competition, is properly rewarded.

Who’s Affected

Most players won’t notice a thing.

90%+ of events have 4 or fewer rounds. Those events are completely unchanged. If you only play weekly locals, your rating is identical.

The change affects 133 tournaments (6% of all events) involving about 1,151 players (27%). Most of those players will see their rating shift by 1-5 points. The biggest movers, up to about 24 points, are players with strong results across multiple large events.

ImpactPlayers
No changeThe majority (4 rounds or fewer only)
±1-5 pointsMost affected players
±6-10 pointsPlayers with several 5+ round events
±10+ pointsA handful of top large-event performers

This is a calibration, not a reset. The March rating system overhaul was the reset. This is a targeted fix for a specific blind spot.

Achievement Score: The Other Number

Your tamer profile shows two numbers. We’ve been talking about your competitive rating, the Elo-based skill measure. The other one is your achievement score.

Achievement score is simpler and serves a different purpose. It rewards participation, consistency, and variety.

How it works:

  • Placement points: 1st place earns 50 points, 2nd earns 30, 3rd earns 20, down to 5 points for participating. These are scaled by tournament size (2× for 32+ player events).
  • Diversity bonuses: Play at multiple stores? Bonus points. Use different decks? Bonus. Play multiple formats? Bonus.
  • Never decays: It’s purely cumulative. Every event you attend adds to it, always.

Achievement score includes all event types: casuals, release events, everything. Competitive rating only counts rated events (no casuals, no regulation battles, no release events).

Think of competitive rating as how good you are and achievement score as how involved you are. Both matter. They measure different things.

Why I Made These Choices

A few design decisions are worth explaining.

Why not just multiply by tournament size directly? Because the implied matchup system already normalizes by opponent count. Adding a raw size multiplier would double-count. Rounds are a cleaner proxy: they reflect competitive depth, not just headcount.

Why not remove the normalization? I considered it. Standard Elo systems don’t normalize because they process real games. Removing normalization from the implied matchup system would multiply all rating changes by 3-8× across every tournament. That’s a complete disruption of existing ratings for a marginal accuracy gain.

Why no rating decay? The old system had a 4-month decay window that punished players for taking breaks. I removed it in the March overhaul. Standard Elo doesn’t decay: your skill is assumed unchanged until you play again. If you won a tournament six months ago, that result counts at full value.

Why K=48/24? Higher K-factors let new players find their true rating quickly. Lower K-factors keep established ratings stable. The 48/24 split with a 5-event threshold is well-tested in competitive gaming systems.

Help Us Make Ratings Even Better

You might have noticed the core challenge here: we’re working with final standings instead of actual round-by-round results. The implied matchup system works well, but real match data would always be better.

If your store or tournament organizer tracks match-by-match results (round pairings, win/loss per round), we’d love to have that data. The more real match results we have, the less we need to rely on implied matchups, and the more accurate everyone’s rating becomes. You can submit results or reach out on Discord if you have match data to share.

What Changed

This update is live now. Every player’s rating has been recalculated from scratch with the new round multiplier formula. Your rating history on your tamer profile reflects the updated multipliers.

If you play mostly locals, you won’t notice. If you’ve been grinding regionals and majors, check your profile: your work is now properly recognized.

Questions? Feedback? Come find us on Discord.