How CastHaven works
Methodology
Every statistic on CastHaven traces back to tournament rows in our database — real events, real decklists, real results. This page explains where that data comes from, how decks get their archetype labels, what the numbers mean, and what doesn’t exist yet.
Where the data comes from
MTGO tournament results — events, decklists, and standings — sync nightly from the community-maintained MTG_decklistcache project. Card data syncs nightly from Scryfall’s bulk files. The data sources page credits every source we use.
Coverage starts June 1, 2026. A backfill of roughly two years of earlier events is planned; until it lands, history is shallow and the site says so wherever it matters.
Decklists that fail validation — wrong card counts, malformed entries — are flagged and excluded from statistics, never silently dropped. When two sources report the same event, the platform of record wins and the duplicate is excluded from every statistic.
How decks are classified
A rules engine assigns each deck an archetype using the community-maintained MTGOFormatData definitions. When no rule matches, the deck is not forced into a bucket: it gets a color-identity label such as “Izzet (unclassified)” and goes to a human review queue. Metagame breakdowns show the share of decks that were classified, so the unclassified portion is visible rather than hidden. New archetype names are added by people — software never invents them.
Windows and sample sizes
Statistics default to a rolling 30-day window, and every number is shown with its window and sample size (n). Below the sample threshold — currently 20 results — a win rate renders as “Insufficient data (n=X)” instead of a percentage. A weak number is worse than no number.
Two more honesty rules follow from the data itself. Because coverage starts June 1, 2026, a “last 30 days” label can currently hold fewer days of events than it suggests — n tells you exactly how much data sits behind each figure. And matchup win rates are computed only from events that publish round-by-round pairings; league results never feed them.
Prices
Card prices are daily snapshots of Scryfall’s price data, always cited with the date we checked them — “checked Jun 10, 2026 · Scryfall”. If there’s no price we trust for a printing, we say that instead of guessing. And if a buy link ever earns us a commission, the disclosure sits next to the price, not buried in a footer.
What doesn’t exist yet
Being honest about the numbers includes being honest about the gaps. Not live yet:
- Player ratings. Glicko-2 ratings shown with their deviation (±), computed only from real match pairings, and displayed only after 30 rated matches. Until they ship, players show “Not yet rated” — we never display a number we haven’t computed.
- Articles. The editorial pipeline checks every factual claim against database rows before anything publishes — no data row, no claim. It’s in development; nothing is auto-published today.
- Paper events. Coverage today is MTGO only. Paper sources will be credited on the data sources page when they come online.
- Deep history. The two-year backfill is pending; data currently starts June 1, 2026.