About cedhstats

cedhstats tracks competitive EDH tournament results from Topdeck.gg. All statistics are computed from publicly available tournament data. This page explains every metric we use so you can verify and understand the numbers.

Points Per Game (PPG)

PPG measures how well a player performs per game played. It replaces simple win rate because cEDH pods have 4 players, making wins rare and draws meaningful.

PPG = (5 × wins + 1 × draws) / (wins + losses + draws)
  • 5 points for a win (you beat 3 other players)
  • 1 point for a draw (no one wins)
  • 0 points for a loss
  • • Scale: 0.00 – 5.00
  • • Expected random value: 1.25 (25% chance to win × 5 = 1.25)
  • • Values above 1.25 are highlighted in green

PPG is computed from actual game records (W-L-D), not from Topdeck's averaged win rate field.

Player Rating (Golf-Style Ranking)

The rating system is inspired by the Official World Golf Ranking. Tournament points are determined by the strength of the field — beating strong players at a large event earns more points than the same result at a weaker one.

Step 1: Base PPG

Every player gets an all-time PPG computed from their full career record.

Step 2: Field Strength

Each tournament's field rating is the average base PPG of all its participants. A tournament full of top players has a higher field rating.

field_rating = avg(participant base PPG)

Step 3: Max Points

The maximum ranking points available at a tournament depend on both field strength and size:

max_points = (field_rating / avg_field) × log₂(player_count) × 100
  • field_rating / avg_field — normalizes so an average-strength tournament has a multiplier of 1.0
  • log₂(player_count) — larger tournaments are worth more, but with diminishing returns
  • • A 64-player event with average field: 6 × 100 = 600 max points
  • • A 128-player event with 1.2× field: 1.2 × 7 × 100 = 840 max points

Step 4: Entry Points

Your points at a tournament are based on your percentile finish:

percentile = 1 - (standing - 1) / player_count
entry_points = max_points × percentile

1st place gets 100% of max points, last place gets ~0%.

Step 5: Player Score

player_score = sum of best 10 recent results (last 52 weeks)
  • • Only the 10 best tournament results count
  • • Only recent tournaments (last 52 weeks) are eligible
  • • This rewards consistency: you need strong finishes across multiple recent events
  • • Each player's profile shows exactly which 10 tournaments make up their score

Step 6: Bootstrap Refinement

The system runs 3 iterations. After each pass, player strengths are updated by blending their base PPG with their normalized ranking score. This means field ratings in later iterations better reflect actual player strength rather than just raw PPG.

Tournament Field Strength

Displayed on tournament pages, this measures how competitive the field was:

  • Field Strength — average PPG of all participants (after bootstrap refinement). Higher means a tougher field.
  • Max Points — the maximum ranking points the winner could earn. Combines field strength with tournament size.

You can sort the tournament list by "Field Strength" to find the most competitive events.

Top Cut Conversion

Shown on player profiles, this counts how many times a player made the top cut at a tournament. Each tournament defines its own top cut (e.g., top 4, top 10, top 16), so we use that directly rather than a fixed threshold.

top_cut = standing ≤ tournament.top_cut
conversion_rate = top_cut_count / eligible_tournaments × 100%
  • • Only tournaments that define a top cut are counted (some don't)
  • • The conversion percentage uses eligible tournaments as the denominator — not total tournaments attended
  • • Common top cut values: top 4 (~58% of tournaments), top 10 (~24%), top 16 (~15%)

Swiss WR vs Top Cut WR

Pod win rates computed separately for each phase of the tournament, using actual pod-level data:

  • Swiss WR — win rate in swiss-round pods (rounds labeled "1", "2", "3", etc.)
  • Top Cut WR — win rate in elimination-round pods (rounds labeled "Top 4", "Semifinals", "Finals", etc.)
win_rate = pods_won / pods_played × 100%

In a 4-player pod, random chance is 25%. These stats reveal whether a player performs differently against the general field vs against other top players in elimination rounds. Only pods with a known winner are counted.

Floor & Ceiling PPG

These metrics help answer: "How well can I expect to do with this deck?" by separating true beginners from experienced pilots.

Floor PPG

The field-strength-weighted average PPG of true beginners: players with ≤3 entries with this deck and fewer than 5 competitive tournaments (32+ players) overall. This captures players who are new to both the deck and the format.

Ceiling PPG

The field-strength-weighted average PPG of experienced pilots: players with 4+ entries with this deck and 10+ competitive tournaments overall. This captures players who know both the deck and the format well.

Field-Strength Weighting

Raw PPG doesn't account for opponent quality — a 3-1 at a weak local and a 3-1 at a stacked major would contribute equally. Since beginners tend to play at weaker events and veterans at stronger ones, this would systematically inflate floor and deflate ceiling.

To correct for this, each entry's PPG is weighted by its tournament's field rating:

weighted_ppg = ∑(entry_ppg × field_rating) / ∑(field_rating)

This keeps the same 0–5 PPG scale but gives more influence to results at stronger tournaments.

Statistical Significance

Floor and ceiling values are only shown for commanders with 100+ entries in the respective bucket. This prevents small sample sizes from producing misleading values.

On the commander list, you can sort by Floor (best decks for newcomers) or Ceiling (highest potential when mastered). Values are colored green if above the global average or red if below.

Commander Combo Validation

Some tournaments use special house rules that allow any two commanders to be partnered (e.g., "partner with anyone" events). These create illegal pairings like Etali / Kinnan that would never appear in standard cEDH.

Since the Topdeck API doesn't distinguish custom rulesets from standard cEDH, we validate partner combos using card data from Scryfall.

How it works

  • • We fetch all commanders with a pairing ability from Scryfall using the community-maintained oracletag:pair-commander tag
  • • This covers all pairing mechanics: Partner, Choose a Background, Friends forever, Doctor's companion, Character Select, and any future mechanics added to the tag
  • • A partner combo is marked invalid if either commander is missing from that list
  • • Invalid combos are excluded from commander rankings, search results, and player top deck stats
  • • Individual tournament results still show what was actually registered — nothing is deleted

Data Source & Limitations

  • • All data comes from the Topdeck.gg API v2
  • • Only tournaments with 16+ players are included by default
  • • ~12% of tournaments are missing location data
  • • Some decklists may be null or incomplete
  • • Region names are normalized where possible (e.g., "CA" → "California") but some international regions may still have inconsistencies
  • • Rankings are recomputed after each data sync
  • • Commander card data sourced from Scryfall