Skip to content
DataNeverLies

Methodology

How we calculate prices and changes

What the numbers on this site mean, where they come from, and when we decline to show one.

Where the prices come from

Trading card game prices come primarily from JustTCG, using its per-condition market prices keyed to the exact printing. That means a Near Mint copy of one specific printing is priced as that thing, not as an average of every version of the card. Where JustTCG has not priced a card, TCGplayer's sales-derived market price, which we read through TCGCSV, fills the gap. It fills gaps only; it is not a co-equal source.

Sports card prices come from recorded sold sales on eBay and the major auction houses. Every one is a completed transaction, never an asking price.

Two limits apply to the auction house records specifically, and we would rather state them than let you assume otherwise. Auction prices are the hammer price and do not include the buyer's premium, so the total a buyer actually paid was higher, typically by around twenty percent depending on the house and the year. And the date on an auction record is the auction session it belongs to rather than the moment that specific lot closed, so it can be off by a few weeks. Because of that, auction sales set prices on this site but are excluded from every figure that depends on a date: they never move a 7, 30 or 90 day change, and they are not counted in recent sales volume.

eBay sales carry both a real price and a real timestamp, and they are the large majority of our sports data.

Asking prices and active listings are never used, on any card, for any purpose. What a seller wants for a card is not evidence of what it is worth. Every number on this site traces back either to a completed sale or to a marketplace price that was itself derived from completed sales.

Two different things: a sale and a price update

A recorded sale is a card that actually changed hands at a known price, sourced from auction and marketplace sale records. A price updateis a marketplace's own market price for a card, derived from what has been selling there. Those feeds refresh daily whether or not anyone bought anything.

Both are useful, and they are not interchangeable. Most cards in the catalog are covered by daily price updates. Far fewer have a steady stream of recorded sales. When you see the word sales on this site it means recorded sales only. When you see price points it includes the daily updates.

When we show a 30-day change, and when we do not

A percentage is a claim about a market. Two data points are not a market. So a 30-day change is shown only once a card and grade has at least 5 recorded sales in the window. Below that we show what we actually have, labeled building history, and no percentage at all.

We would rather show you a smaller number of trustworthy figures than fill every row with something that looks precise. A card with two sales behind it is not a card with a weaker percentage. It is a card we cannot honestly quote a percentage for yet.

Minimum evidence required for each surface
WhereNeeds
Any 30-day change5 recorded sales in 30 days
The card featured on our home page8 recorded sales, a price of at least $50, and a sale in the last 7 days
Cards on the move5 recorded sales and a price of at least $10
A category index change25 sales across at least 10 different cards

The category rule asks for two things on purpose. Thirty sales of one card is that card's story, not the category's, so we ask for depth and spread before publishing a category number.

A category index is a measure of the category rather than of any one card in it. It tracks how the average price of the cards that make up the index has moved. Estimated prices are left out of every index. For categories priced from a marketplace feed, the index moves on that feed's daily market prices, not on recorded sales.

Prices, grades and outliers

Where a card is priced from recorded sales, the price for a grade is the median of those recent sales, not the average, so one unusual result does not drag the figure. We also discard sales that sit far outside the rest of the recent range before taking that median. Cards priced from a marketplace feed carry that feed's own market price for the condition instead, which is a different thing from a median of trades.

The 30-day change compares two medians of recorded sales: the last 15 days against the same stretch a month earlier. Each side needs at least 3 sales of its own, so the comparison has real prices at both ends rather than one recent sale measured against a stale reference. If the sales behind the change disagree with the price we are showing, which happens when two similar products get matched to the same card, we withhold the change rather than print a percentage that contradicts the price next to it.

We also check that a card and grade trades as one thing before comparing it across time. Ungraded cards are the hard case: a pristine raw copy and a worn one are the same row in our data but very different products, and a pristine 1989 Griffey rookie can fetch several times what a worn one does. When the bulk of a card's recorded sales span 2times or more from the low end to the high end, the middle of one month's sales and the middle of another's are not measuring the same thing, so we show no change rather than a number that mostly reflects which copies happened to sell. Graded cards rarely have this problem, because the grade already pins down the condition.

A price marked as an estimate is not a recorded market price for that exact grade. Most are grades with no market activity in the last 30 days, carrying their last known price forward. Some are derived from the nearest grade or condition on the same card that does have real pricing, projected along a standard curve. Some are real prices a check found unreliable, so we label them rather than present them as solid. They are labeled wherever they appear, are excluded from the market indexes, and never carry a change percentage. An estimate is our best read of where a grade sits on that card's curve, not a record of anything that sold.

A move of 1000% or more over 30 days is treated as a data artifact rather than a price move and is not displayed.

Everything recomputes nightly

Prices, the 30-day and other change windows, the category indexes and the trending lists are all recomputed every night against the newest sales. The numbers are not recalculated when you open a page; you are reading the result of that night's run.

So a sale that happened this afternoon is in tomorrow's numbers, not this minute's. We prefer that to a site where one figure updates ahead of the rest and the page quietly stops agreeing with itself.

Where this is still improving

Trading card games are well covered on price and thinly covered on recorded sales. The daily per-condition prices are solid; what is thin is the stream of individual recorded sales, and that is the thing that gates a percentage. Recorded-sale coverage is much deeper for sports cards. That is why many TCG cards show a price but no 30-day change. As sale coverage fills in, those changes will appear on their own.

Seven-day and ninety-day changes work the same way, with windows sized to the span they describe: a week compared against the week before it, and a month compared against the same month three months earlier. Each one needs its own sales, so a card can show a 7-day change and no 90-day change, or the reverse. Ninety-day coverage is the thinnest of the three, because our recorded-sale history does not reach as far back as we would like yet.

Raw and ungraded cards stay the weakest rows in the catalog, for the reason set out above: a pristine copy and a worn one share one row, so the price is a blend of conditions and the change is often withheld. A grade is partly a fix for this, which is why graded rows behave better.

Matching a sale to the right card is the other place we can be wrong. Sales are matched with guards for set, year, parallel, serial numbering, autographs and multi-card lots, and the matching is audited against the raw listing titles. When an audit finds a bad match, the sale is removed and the matcher is hardened so it cannot recur. Bad matches we have not found yet are still live.

A card that has not traded in months keeps its last known price with the date attached rather than a fresh-looking figure. Old is not the same as wrong, but you should know which one you are reading.

All prices are in US dollars and describe the US market, which is where the sales data comes from. A card that trades heavily in another market can be worth something quite different there.

Not financial advice

Market data may include estimates. Prices, indexes, trends and portfolio valuations on this site are informational estimates derived from tracked sales data. They are not appraisals, offers to buy or sell, investment advice, or financial advice, and we are not a broker, dealer, or investment adviser. Collectibles are volatile and illiquid, and past performance does not predict future results. What you buy and what you sell is your decision and your responsibility.

Questions

If a number here looks wrong, tell us and we will look at that specific card. Get in touch, or read the FAQ.

This page covers how we arrive at a price. For the AI pre-grade, we keep the same kind of record: our estimate against the grade the card actually came back as, misses included, in the accuracy log.