| Img | Product | Category | MSRP | Market | Sell @ 90% | Profit | Profit % |
|---|---|---|---|---|---|---|---|
| Loading prices… | |||||||
| Img | Card | Set | # | US Market | US Low | 70% US € | Cardmarket | CM Offers | CM vs US | CardTrader | CT vs US |
|---|
| Img | # | Card | Set | China ¥ | China $ | eBay $ | China/West | English $ | Eng/China | Grade EV | EV/China | 3mo |
|---|
| Img | ★ | # | Card | Listings | US Low | US Market | EU $ | EU profit | EU % | CN cost ¥ | CN cost $ | CN sell $ | CN profit | CN % | Mkt/CN |
|---|
| Loading prices… |
For each pack slot the model holds an expected number of cards per pack for each rarity. Value is the sum over all of them:
EV = Σ (cards per pack × average market price of the cards that slot can give you)
Expectation adds up regardless of how the slots actually interact, so writing the odds this way keeps the sum exact without having to guess the pack's internal wiring. It also matches how community data gets reported — "1 in 13 packs" is just 0.077 per pack.
No publisher releases pull rates — not The Pokémon Company, not Bandai, not Riot. What exists is counted packs, and how much has been counted differs sharply by game:
A measured badge means that set was counted; estimated means the odds were borrowed from neighbouring sets; thin means something else is wrong — the set is too new for its prices to have settled, it doesn't follow its era's structure, or the study left a tier unmeasured. Open a row to see which. Change any rate there and everything recalculates.
A listed price is not always a price you could get. Thin markets floor their commons at roughly what shipping costs, so a stack of near-identical foils can "price" at more than the pack they came in. The Weight column in every open row fixes that: it is the share of a slot's listed price the total counts. Set commons to 0% and bulk stops counting on every set in every game at once, because weights key off the slot name and that name is shared across the templates. Ignore bulk in the toolbar does commons, uncommons, reverse-holo and foil slots in one click. Weights live in the page only — reload and the published numbers come back.
The toolbar switches the whole table, and the breakdown inside each row, between the two. Per box is the default and the more honest comparison: single packs carry a large markup over the same packs bought by the box, and the per pack column there shows what a pack really costs you inside one. Fewer sets have a box price than a pack price, so the list is shorter this way.
Slots the set has no cards for are left out entirely — a Riftbound set with no Ultimate does not list one at 0.0005 a pack. The QC script still reports them, because a slot matching nothing is how a renamed rarity would show up.
| Img | # | Card | Rarity | Card total | % of set |
|---|