How we measure set heat
What the number is, which cards it covers, why it is shown against a set's age, what we tested and chose not to ship, and every limit in the data behind it.
What the number is
Heat is the share of listed supply that sells in a day, measured on the chase cards we track from each set: units sold over the trailing seven days, divided by seven, divided by the count of active listings. A set at 3%/day is turning over three percent of what is listed for sale each day across those cards.
It is not the whole set. A set's bulk commons trade in enormous volume at a few cents each, and pooling them in would swamp the number with penny-card churn. So the measurement covers the chase cards — the rares, ultra rares and secret rares we already track — where collector and investor demand actually shows up. Wherever this page says "set", read it as the cards we track from that set.
It is measured on one venue — TCGplayer sold against TCGplayer supply — so it is a read on that venue's float, not on the whole market. Across the cards we track we pool: total units sold over total listings. That is deliberately not an average of the per-card ratios, which would let a single thin card with two listings swing the set.
It is an activity measure, not a value one. A set can turn over briskly and still fall in price.
Release age explains most of it
Across the 61 sets we can measure, how long ago a set came out explains 81% of the variation in log heat (R² = 0.807). So a chart of raw sell-through is, to a first approximation, a chart of release dates — the raw ordering tracks age at a rank correlation of −0.86. That is the whole reason the board opens on For its age rather than Overall.
That R² is leverage-sensitive, and we would rather you heard it from us. Age is spread very unevenly across the sets we can measure: a handful of very new sets sit far to the left of everything else and carry most of the horizontal spread. Drop the single youngest set and the fit falls to R² 0.751; drop the youngest three and it is 0.669. Refit on the 48 sets older than 2 years alone, it is 0.587 — below the quality bar we require of the full fit before we will publish this board at all.
The slope holds up much better than the R² does: it is -0.574 with a standard error of 0.0365, a 95% interval of [-0.647, -0.500]. Heat really does fall with age. How tightly age alone pins a given set is the part you should hold loosely.
Rank sets by raw sell-through and you have mostly ranked them by birthday.
The relationship is a power law, not a straight line: log(heat) = 3.01 − 0.574 × log(age in weeks). In plain terms, a set loses somewhere around 29–36% of its heat every time its age doubles (33% at the fitted slope; the range is the 95% interval above, not a rounding). Fitted across the current cross-section, that works out to roughly:
- 2 weeks old
- 14%/day
- 6 months old
- 3.1%/day
- 1 year old
- 2.1%/day
- 5 years old
- 0.8%/day
This is a snapshot, not a life cycle
Across the sets measured today, older sets sit lower, with no visible floor out to about 9.6 years. We have not watched a single set age through this curve. Every point on it is a different set, measured this week, so it is a cross-section and not a trajectory. It tells you where a 2-year-old set sits relative to other sets right now. It does not tell you what any particular set will do as it gets older, and we do not have the history to say.
The cohorts also differ in more than age. Old and new sets are not the same product with different birthdays: print runs, product formats, how much sealed stock is still around, and which of a set's cards we track all changed over the years the board spans. Some of what looks like decay with age is really those differences lined up in age order, and nothing in this fit can separate the two.
And older sets are represented by their survivors. We drop 940 cards for trading too thinly to measure, and a set only qualifies at all if enough of its cards still trade on most days of the 45-day window. For a recent set that is nearly every card; for a set from 2017 it is the handful people still buy. That selects old sets on their liveliest cards, which biases their measured heat up and the age slope flatter than the truth. It is not a bias we can correct for — only one we can tell you about.
The curve is refit daily on the current cross-section, which makes the adjusted number market-relative rather than absolute. When the whole market gets busier, both a set's raw sell-through and its expected sell-through rise together, and its ratio barely moves. The board answers "unusual for its age, today", not "unusual against history".
What we tested and did not ship
The obvious next feature is a movement signal — "heating up", "cooling off" — with an episode timeline and a badge. We built one and tested it, including the specific rule a competitor publishes: a move of ±10% on three of five days, or ±15% on two of three, against the level seven days earlier.
We compared it against a phase-randomized surrogate — the same series with its timing scrambled but its statistical shape preserved. At every threshold we tried, the detector fired no more often on the real series than on the surrogate: 75 episodes against a surrogate rate of 0.92×, 39 against 0.89×, 8 against 0.68×. So we did not ship it.
What that does and does not establish. Phase randomization keeps the series' autocorrelation intact by construction — that is the point of it — so a detector whose trigger is built out of recent levels has very little it can find that the surrogate does not also contain. A ratio near 1.0 is close to the expected outcome, not a shock. It refutes this detector, as specified, on this series. It is not evidence that demand has no episodes, and it is not evidence about anybody else's data or product.
We also ran the specific rule a competitor publishes — ±10% on three of five days, or ±15% on two of three, against the level seven days earlier — and it scored 0.90× here. Read that narrowly. We tested their rule on our series, and our supply denominator is unchanged from the previous day about 74% of the time. A stale denominator mechanically damps exactly the kind of ±10%-over-a-week move that rule is looking for. The honest conclusion is that the rule does not work on our data, which is a statement about our data at least as much as about the rule.
One thing does point the same way on its own: the seven-day autocorrelation of the age-adjusted residual is −0.26, measured against a shuffled null rather than a phase-randomized one, which is the null that can actually test it. Moves bounce rather than persist. A set that jumped last week is, if anything, slightly more likely to give it back than to continue.
Every figure in this section, with the episode counts behind each ratio, is produced by a re-runnable analysis and written to a dated artifact we keep. None of it is a number we typed once and left here.
So there is no heating-up badge, no episode timeline and no movement signal on this board. There is a level, and there is the level a set of that age normally runs at.
One thing we want to be precise about: whether elevated heat precedes price moves is untested, not disproven. Zero qualifying price takeoffs occurred inside the 45-day window where a valid series exists, so there was nothing to test against. We will retest when we have more history.
What the data can and cannot support
This is a young series and it has real defects. In full:
- It covers 3,247 cards across 61 sets, not the sets themselves. That is a median of 50 cards per set, ranging from 12 to 154 — in most cases a minority of what the set printed. Coverage is uneven between sets, so a heat figure is a statement about the cards we track from a set and not a statement about everything printed in it.
- The window is 45 days, 2026-07-30 to 2026-09-12, across 61 sets. That is all the history there is.
- Earlier supply history is excluded. Before 2026-07-30 our supply figures were a backfilled placeholder rather than a daily capture, so we do not use them — even though it would make the chart longer.
- Every window ends 3 days back. Sales days publish late; about 99.6% of a day's units are visible three days later. Reading a trailing seven days up to yesterday instead would report roughly 16% too low.
- A day with no sales is missing, not zero. The source omits it rather than recording it, which we cannot distinguish from an outage.
- The supply series is coarse. The listing count is unchanged from the previous day about 74% of the time. We began banking a finer one on 2026-09-13, so this improves from here but has not yet.
- Week-on-week change is shown against the market median, never raw. A single market-wide day moved 59 of the 61 sets together by about +49%; presented unadjusted, that common move would read as news about each individual set.
- Below a couple of dozen sales in seven days we show no change figure at all, rather than a percentage built on a handful of transactions.
- 61 sets are not 61 independent observations. The point above is the reason: when one market-wide day moves almost every set together, the sets share most of their variation. Any interval quoted on this page — including the one on the age slope — is computed as though they were independent, and is therefore narrower than the truth.
- What is dropped before anything is fitted. 440 cards have no usable release date for their set; 1,251 sit in pooled buckets (promos, League, Jumbo) where "age since release" is meaningless; and 940 trade too thinly to measure. That is the raw count, published because a coverage figure with no denominator is not disclosure.
- A long leading run of identical supply readings is cut off each card's history. That is real data surgery, not a filter: our earliest supply numbers were a backfilled constant, and a card whose series starts with a long flat run has that run removed outright. A card that is genuinely flat end to end is left alone, because we cannot tell it apart from a real one.
- This board can go dark, and that is deliberate. If too few sets clear the coverage bar, or the age curve comes back flatter than the quality bar we set for ourselves, the build refuses to write a new file at all and the previous day's board stays up. A degraded board is worse than a stale one.
What is not on the board
The whole method rests on a single release date, so anything without one is excluded: promos, League and Jumbo products, and the EX-era buckets. Sets too thin to measure are excluded too. Within the sets that do appear, cards outside the chase rarities we track — bulk commons and uncommons above all — are not counted, for the reason given at the top. Seven of the 61 measured sets are sub-sets with no set page of their own, so they appear on the board but have nowhere to link to.
Absence from this board means unmeasured. It never means quiet.
What we don't claim
Nothing here is a forecast. Heat describes the last 45 days of trading in the cards we track, on one venue, and says nothing about the next ones. It is not a price call, it is not a buy or sell signal, and we have not demonstrated that it leads price. The bands on the board are regions cut from the spread of the fit, not a score — a set sitting just over a boundary is not meaningfully different from one sitting just under it.