How we built the 2026 Pokémon price report
We published a report on where Pokémon card prices went over the last year. This post covers where the data came from, how the index is built, and the two corrections we had to make before any of the numbers meant anything. The short version is that the...
We published a report on where Pokémon card prices went over the last year. This post covers where the data came from, how the index is built, and the two corrections we had to make before any of the numbers meant anything. The short version is that the interesting work was in deciding what to throw away.
Read the report: The State of Pokémon Card Prices, 2025 to 2026
What the data actually is
TopVault records a daily price snapshot for every card in its catalog. For Pokémon that comes to 29,079,811 price reports across 457 daily snapshots, running from 6 May 2025 to 21 August 2026.
Each snapshot is a JSON blob holding an ungraded price estimate, a PSA 10 estimate, and a handful of fields for other grading services that are still empty. The first step is flattening all of that into a plain columnar table, which takes about three and a half minutes and turns a 27 GB database into something you can query interactively.
Two details in the raw data will produce a completely wrong timeline if you miss them.
The first is that the write timestamp on a row is not the date the price applies to. A single backfill on 30 October 2025 wrote 6.3 million rows covering 168 different report dates. Grouping by write time puts a third of the year into one afternoon. The report date lives inside the JSON and that is the only field worth trusting for this.
The second is that the backfill collided with the live writes, so every row from May through October 2025 exists twice under different report IDs. They agree on price, so collapsing them is safe: 29 million raw rows become 22,638,041 unique card-days. From November 2025 onward there is exactly one row per card per day.
Building an index that measures prices
The naive approach is to take the average price of every card each day and watch that number move. This does not work, because the set of cards being averaged changes daily. New sets arrive, cards get added to the catalog, and the average moves for reasons that have nothing to do with prices.
The report uses a fixed basket instead. Pick every English single that had a real price observation in both the first ten days and the last ten days of the window, hold that list constant, and follow only those cards. That gives 8,398 cards, and every movement in the line is a movement in price.
Prices also update in bursts rather than continuously. The typical card changes price on about 20% of days, so roughly four days in five are a repeat of the previous value. The panel forward fills, meaning a card holds its last known price until a new one arrives. This matters for a subtle reason: if you skip the fill and average whatever happened to report that day, you end up measuring which cards the pricing pipeline visited rather than what the market did.
The correction that changed everything
Here is the result that nearly went into the report as a headline. Grouping the basket by starting price produces this:
start price cards median return
$0.25 to $1 1,921 -72.5%
$1 to $5 24,061 -38.5%
$5 to $20 5,639 +61.0%
$20 to $100 2,161 +71.7%A collapse in cheap cards during a year when everything else nearly doubled is a genuinely interesting story. It is also completely false.
Tracking the low end of the price distribution day by day shows what happened. Through early November 2025 the 5th percentile price sat at $0.99 and the 10th percentile at $1.14, and only 5% of cards were priced under a dollar. Those numbers do not look like a market. They look like a floor.
Between 7 November and 3 December 2025 the floor was removed, and it rolled through the catalog in batches over four weeks. By 3 December the 5th percentile was $0.12, the 10th percentile was $0.19, and 36% of cards sat under a dollar. Nothing about the market changed. The pricing model stopped clamping inexpensive cards and started reporting what they were actually worth.
Every card that began the year under about $5 has a fake 40 to 70 percent loss recorded across that boundary. The fix is a $5 price floor on everything, which is why the report says nothing about bulk.
The check that matters is confirming the change left the rest of the data alone. Across all 359 days there is no single day where the median of the $5 and above basket moves more than 0.8% against its neighbouring days, and the largest single day move in the whole index is 1.09%. Above $5 the series is clean.
The second correction
The PSA 10 column has a different problem. It contains occasional extreme errors, and they are large enough to dominate any average.
One promo Kyogre ex goes from $997 to $988,609 in a single day while its ungraded copy sits near $80. A Stormfront Gengar reads $156,000 against a raw copy worth $82.50. Run a straightforward value weighted calculation over that column and it reports that PSA 10 cards gained 227% on the year and that the grading premium nearly doubled. Both numbers come from a handful of broken rows.
Filtering on two plausibility rules cleans it up. Reject any card whose graded price moves more than 100% in one day, and reject any card whose graded to raw ratio ever leaves the range of 1.5 to 100 times. That keeps 5,923 of 8,167 cards, so roughly a quarter of the paired graded data fails a basic sanity check. On what survives, PSA 10 gained 73.2% against 55.7% for raw, and the premium widened by about a fifth. Those are the numbers in the report.
The general lesson is to prefer medians over averages anywhere the input might be dirty. A median does not care that one card is off by four orders of magnitude.
What we deliberately did not claim
A few things came up that the data cannot support, and leaving them out is part of the method.
Seasonality is the big one. A year of data gives exactly one observation per calendar month, so any monthly pattern is indistinguishable from the overall trend. November happens to be the flattest month in our window and it is also the month the price floor was being removed, which makes it doubly useless. One more year of collection makes this the first question worth asking.
Japanese cards are another. The catalog holds 36,998 Japanese items and 335 Japanese sets, and since May 2026 they get a daily row like everything else. Only 209 of them have ever carried a price. The Japanese release of a set typically leads the English one by three to five months, which would make it a natural leading indicator, and it stays untested until those rows have prices in them.
Finally, everything in the report is a modelled price estimate rather than a record of completed sales. The index has an annualised volatility of 4.26% and its worst peak to trough fall over the whole year is 1.56%. Real markets are bumpier than that. The smoothness is a property of the estimate, and it means the report is reliable about direction and relative comparison while any single day's level should be read as approximate.
Read the report: The State of Pokémon Card Prices, 2025 to 2026
