How we calculate every number on this site

Every figure on TCGROI comes from published pull rates and daily market prices run through the same model. This page is that model in full, including the parts that make our numbers lower than other people's, and the places where we say TBD instead of guessing.

A pack is a set of slots, not a bag of lottery tickets

This is the assumption everything else rests on, and it is where the common approach goes wrong. A booster pack holds a fixed number of cards in fixed positions: some slots always contain a common, one always contains a reverse holo, and one or more resolve probabilistically into the higher rarities.

The tempting shortcut is to take every card in the set, multiply each price by that card's pull rate, and add it all up. That produces a number, and the number is wrong — it treats a pack as though every card in the set had an independent chance of appearing, which overcounts badly. We model the slots instead.

Pack shape is stored per set rather than hardcoded, because it genuinely varies. Vintage packs before 2003 have no reverse-holo slot at all. Japanese Scarlet & Violet packs hold five cards where English holds ten. Japan's High Class Packs hold ten cards in ten-pack boxes instead of five in thirty. Each of those is a different calculation, not a footnote.

Every card has two different odds, and both matter

Published pull rates are per rarity tier, not per card. A set's source will tell you the chance a pack contains any Special Illustration Rare. It will not tell you the chance a pack contains the one specific card you actually want.

So we derive the second number. The tier rate divided by the number of cards in that tier gives the specific-card rate, on an equal-distribution assumption — which is the standard approach when per-card data is not published, and we state it rather than hiding it.

Worked through on a real tier: if the chance of any Special Illustration Rare is 1.21%, that is about 1 in 83 packs. With six cards in the tier, one specific card is 1.21% divided by 6, or 0.20% — about 1 in 496 packs. The cross-check holds: 83 packs times 6 cards is roughly 496.

Both numbers appear on every card page, labelled, because they answer different questions. One in 83 is the odds of the tier feeling generous. One in 496 is the odds of the card you came for.

The equal-distribution assumption is the single largest source of imprecision in our per-card odds. If a set genuinely short-prints one card within a tier, our figure for that card is optimistic and our figures for its tier-mates are pessimistic. We use it because the alternative is inventing a distribution.

Commons and uncommons are counted, but never given a probability

No published source gives pull rates for commons and uncommons. The lowest tier anyone publishes is usually Double Rare.

We do not therefore ignore them, and we do not invent odds for them. The pack structure guarantees a fixed number of common, uncommon and — for sets whose packs have one — plain Rare slots. Each is valued at the set's average market price for that rarity, taken from the same daily price data as everything else.

Their contribution is small but real, and including it is what keeps the expected return honest rather than inflated by counting only the exciting cards.

A hit replaces a card. It does not arrive on top of one

This correction is subtle, it is easy to miss, and leaving it out inflates every expected value.

A pack contains exactly as many cards as it contains. When a pack produces a Special Illustration Rare, that card occupies a slot that would otherwise have held an ordinary card. It is not an eleventh card added to ten. So after valuing every guaranteed slot at full weight and adding the probabilistic value of the hits, we subtract back the ordinary value each hit displaced.

Without that subtraction, a pack is credited with more cards than it physically holds.

From one pack to a sealed product

A sealed product's expected value is its pack expected value multiplied by the number of packs inside it, plus the value of anything guaranteed alongside them — a promo card in an Elite Trainer Box, for instance, priced from the promo set it belongs to.

Pack counts are not guessed. Where a product's pack count is not published in structured data we confirm it against retail and manufacturer listings, and where we cannot confirm it the product is excluded from the site entirely rather than shown with an assumed count. Wholesale multipacks, cases and displays are excluded too, as are code cards.

Why we show expected return instead of ROI

Expected return is the expected value of a product's contents as a percentage of its price. 100% means a pack gives back exactly what you paid for it. Below 100% means you lose money on average by opening it, which is the normal case for sealed product.

The same figure is often written as ROI, where break-even is 0% and everything else is a negative number. We use the positive form because a wall of negative percentages is harder to compare at a glance and reads as editorialising. The arithmetic is identical.

Expected value and expected return are always shown together. Expected value alone is meaningless without the price paid; a percentage alone hides whether you are talking about a five dollar pack or a four hundred dollar box.

Cost to pull, and why it is usually the most useful number on the page

For any specific card, the average spend required to pull that card is the price of a pack divided by that card's specific-card rate. At 1 in 496 with a five dollar pack, that is about $2,480.

We compute it at the cheapest available per-pack price in the set, so it is always the best case rather than a flattering one.

It is the most useful number because it is usually enormous next to the card's actual market price, and that comparison is the whole point of the site: for the overwhelming majority of chase cards, buying the single is dramatically cheaper than chasing it in packs.

Where the pull rates come from, and the bar a source has to clear

Official rates come first. Where TCGPlayer has published a pull-rate analysis for a set — typically thousands of packs opened and counted by their Authentication Center — that is what we use, and the set page links the article.

Where no official article exists we use community sources, but only ones that disclose a real sample size. A source that says how many packs it counted can be judged. A source that offers ratios without a number behind them cannot, and we do not use it, however confident it sounds.

That bar has real consequences we accept. Several sources that publish complete-looking rate tables for every set ever printed were rejected because their numbers are templated or undisclosed. In one case the researcher whose work a site was republishing described his own figures for an era as a guess, so those sets stayed unrated rather than pass the guess along.

Every set page states which kind of source it used and the sample size behind it, and the two are visually distinguished so an official multi-thousand-pack count is never mistaken for a community estimate.

We never infer one set's rates from a similar set. Base Set (Shadowless) shares its card list with Base Set and still shows TBD, because nobody has separately counted the Shadowless print run.

Where the prices come from

All prices are TCGPlayer market prices, refreshed daily, and stored as a dated snapshot rather than overwritten. That means every figure on the site can be recomputed for any past day and audited against the prices that produced it.

Prices attach to a specific printing, not to a card in the abstract. A card that exists as both a Normal and a Reverse Holofoil is two separately priced things, and the model treats them that way.

Prices are shown in your chosen currency for convenience, converted from USD at daily reference rates. Everything is stored and calculated in USD.

What we exclude

Every calculation counts card value only. Coins, dice, playmats, sleeves, damage counters and packaging are excluded, and each stored figure records that it was computed that way.

The reasoning is that accessory value is neither liquid nor consistent, and including it would let a product's expected return be propped up by a playmat nobody sells.

When we say TBD

A set with no source that clears the bar shows its cards, its rarities and its live prices, and shows TBD everywhere odds and expected value would go. The same applies to individual cards whose tier has no published rate.

This is deliberate. A plausible-looking number with nothing behind it is worse than an admission, because it cannot be checked and it invites a purchase decision it cannot support.

When a number looks too good

Sealed product almost never has genuinely positive expected value. When our own figures say otherwise, that is usually a signal about the data rather than a find.

So a product is flagged when its expected return is implausibly high, when a single card accounts for an outsized share of its expected value, or when the card driving that value has moved sharply in the last week. The flag names the card responsible and appears alongside the figure rather than replacing it.

It is informational, not a block. But it means the one tool that could quietly show you an exciting number instead tells you why the number is fragile.

How often all of this updates

Prices sync daily, and the full calculation runs immediately afterwards, writing a dated snapshot for every product and every chase card.

Because results are stored rather than recomputed per visit, historical charts read directly from those snapshots, and any past figure can be reproduced from the inputs that existed on that day.

What this model does not do

Stated plainly, because a methodology page that only lists strengths is marketing.

  • Odds for a specific card assume rates are distributed evenly within a rarity tier. Genuine short-prints inside a tier would make our number for that card too optimistic.
  • Condition is not modelled. Market prices reflect the condition TCGPlayer's market price reflects, and a card pulled from a pack may not match it.
  • Grading upside is not modelled at all. A card worth more once graded is counted at its raw price.
  • Expected value is an average across many packs. It says nothing about a single pack, which can beat the odds or produce nothing of value.
  • Sealed product can appreciate. We price what is inside a product today, not what the sealed product itself might be worth to a collector later.
  • Some sets have no priced pack product at all upstream, so they show real card data and real odds while their per-pack figures stay blank.