Pullnomics
As an eBay Partner Network affiliate, Pullnomics earns from qualifying purchases. Prices compared against TCGplayer market prices via TCGCSV; all figures can change at any time.

Methodology: how Deal Score and Sealed EV are computed

Pullnomics has one rule: a listing is a deal only when its shipping-inclusive price sits well below an external market price, never because a seller says so. This page shows the arithmetic, the thresholds, the data behind it and where it falls short. Every constant quoted here is read from the code that runs the site, so what you see is what the feed applies.

Deal Score

Every eBay listing we ingest goes through the same five steps: read the title, identify the card or sealed product, look up the TCGplayer market price, normalize the condition, and score the landed price against the adjusted baseline. The seller’s own “was $X” markdown is ignored entirely.

landed      = price + shipping           (calculated shipping → assume $4.99, lower confidence)
adjusted    = market × condition multiplier
discount    = 1 − landed / adjusted
raw         = 100 × clamp(discount / 0.50, 0, 1)
Deal Score  = raw × (0.5 + 0.5 × confidence) × format weight

A 50% discount earns the full raw score and smaller discounts scale linearly. Confidence then squeezes the range: at 100% confidence you keep the raw score, at 50% you keep three quarters of it. Auctions carry a format weight of 0.7 because the current bid is not the final price; fixed price and Best Offer listings carry 1.0. Before any of that, a listing must clear every qualifying rule below or it scores 0 and never enters the feed:

RuleThresholdWhy
Minimum discount12% below adjusted marketLess than that is noise between two price sources.
Minimum landed price$4.00Fees and shipping dominate; not worth a click.
Minimum market price$5.00Sub-$5 baselines are too noisy to compare against.
Minimum confidence50%Below this we are guessing which card it is.
Suspicious floorlanded under 10% of marketAlmost always a mismatch or a scam, so rejected on purpose.

Scores of 75 and above are labelled hot, 50 to 74 good. Worked example: a card with a $42.10 NM market, listed Lightly Played at $24.00 plus $5.00 shipping. Landed $29.00; adjusted market $35.79 (85% of NM); discount 19%; raw score 38; at 90% confidence the Deal Score is 36.

Condition multipliers

ConditionShare of NM market
Near Mint (NM)100%
Lightly Played (LP)85%
Moderately Played (MP)70%
Heavily Played (HP)50%
Damaged (DMG)35%
Not stated90%

Condition comes from eBay’s structured trading-card descriptors when the seller filled them in (certainty 1.0), otherwise from words in the title such as NM, LP or “played” (0.7), otherwise from the generic eBay condition id (0.35 to 0.4). An unstated condition is priced at 90% of NM because most raw cards sold without a grade sit between NM and LP, and the confidence penalty covers the rest. Sealed products are never adjusted.

Confidence

Confidence is one number from 0 to 1 answering a single question: how likely is it that this comparison is right? It starts as the match confidence, which depends on how the title was identified: 0.95 when set, number and card name all agree; 0.9 for number plus printed total plus name; 0.75 for number and name without a recognisable set; 0.6 for a bare name inside a named set or an ambiguous reprint; and 0.85 or 0.7 for sealed products. It is then multiplied by condition certainty (0.6 + 0.4 × certainty) and by these penalties, each applied only when it fits:

  • Shipping unknown (calculated at checkout): × 0.9
  • Wide market spread (TCGplayer high minus low more than three times the market price): × 0.85
  • Market price under $10: × 0.9
  • Seller with fewer than 10 feedback: × 0.8; feedback below 95%: × 0.8
  • Title implies more than one item: × 0.7

Labels: high at 80% and above, medium from 60%, low below that. Under 50% the listing is not called a deal at all.

Exclusions

Before matching, every title is screened for patterns that make a single-item price meaningless. Any one of these drops the listing:

  • Proxies, custom, replica, fan-made and orica cards
  • Digital codes and TCG Live / online code cards
  • Lots, bulk, “bundle of”, “collection of” and large quantities
  • You-pick and choose-your-card listings, where the price belongs to no particular card
  • Random, mystery, repack and grab-bag listings
  • Merchandise: stickers, metal cards, coins, pins, figures, plush, binders, sleeves, deck boxes, playmats
  • Display-only items, playsets and 2x/3x/4x multiples, empty packaging, opened, resealed or weighed product, jumbo cards, pre-orders

Non-English prints are not excluded but are never matched, because the baseline is an English-market price. Graded cards are matched and shown but not scored (see limitations).

Data sources

Market prices: TCGplayer market, low, mid and high prices for every English card variant and sealed product, fetched once a day through TCGCSV after its 20:00 UTC refresh. Each daily value is also written to a price-history table that drives the 180-day sparklines on card and product pages and the price movers on the home page.

Listings: the eBay Browse API, polled every 15 minutes across the Pokémon singles and sealed categories, newest first, within a budget of about 42 calls per run under the 5,000-calls-per-day quota. Active deals not seen for four hours are re-verified twice an hour, 20 items per call; sold or ended items expire immediately and listings unseen for seven days are removed. Every eBay link on the site is an affiliate link; the score never depends on it.

Catalog: sets, cards, numbers, rarities, artists and Pokédex numbers from the open pokemon-tcg-data project, keyed to TCGplayer product ids so prices and cards line up. Browse it under Sets, Pokémon and Artists.

Sealed EV

The Open or Hold board answers a different question: not “is this listing cheap” but “what is inside the box worth”. Expected value is computed per pack from the set’s pull rates and its current singles prices, then multiplied by the pack count.

EV(pack)    = Σ over hit rarities  (1 / packs per hit) × mean TCGplayer market price of that rarity in the set
            + baseline for the guaranteed rare, reverse-holo and common slots
EV(product) = packs × EV(pack)        (36 booster box · 9 Elite Trainer Box · 6 bundle · 1 pack · 216 case)
EV ratio    = EV(product) / TCGplayer market price of the sealed product
Break-even  = the product price at which EV ratio = 1.0

We use the mean, not the median, for hit rarities because EV is an expectation. The chase share tells you how skewed that expectation is: the fraction of hit EV that comes from Special Illustration Rare, Hyper Rare, Secret and similar tiers. When it is high, the median box lands well under the EV and a few boxes carry the average. P(≥1 hit) is the probability of at least one Illustration Rare or better anywhere in the product, from the per-pack odds; Double Rares and V-tier cards are frequent enough that they are not counted as hits for this figure.

Net EV is what you would clear by selling every worthwhile pull: a 15% marketplace fee on each sale, $1.00 shipping per card, and any rarity whose mean price is under $1.00 valued as bulk at two cents. The baseline slots are halved for the same reason. Net EV is the number to use if you plan to open and sell; gross EV is the number to use if you keep the cards.

Pull-rate sources

Pull rates (packs per hit, by rarity) come from the evolvault.com pull-rate calculator, which aggregates TCGplayer’s opening datasets of 1,000 to 8,000 packs per set together with community counts. We take the midpoint of each published range (fetched 15 September 2026) and cross-check the headline figures against PokeBeach (Ascended Heroes Special Illustration Rare 1 in 70) and TCGplayer’s own articles (Pitch Black SIR 1 in 80, Mega Hyper Rare 1 in 1,081). Sets with no published dataset yet, usually the newest, fall back to a conservative era average and are flagged era default on the board:

EraDefault odds (1 hit per N packs)
Mega Evolution (ME)Double Rare 1:5 · Ultra Rare 1:12 · Illustration Rare 1:9 · Special Illustration Rare 1:85 · Mega Hyper Rare 1:1200 · Mega Attack Rare 1:40
Scarlet & Violet (SV)Double Rare 1:6 · Ultra Rare 1:15 · Illustration Rare 1:12.5 · Special Illustration Rare 1:80 · Hyper Rare 1:140 · Ace Spec Rare 1:20 · Shiny Rare 1:4 · Shiny Ultra Rare 1:12
Sword & Shield (SWSH)Rare Holo V 1:8 · Rare Holo Vmax 1:22 · Rare Holo Vstar 1:30 · Rare Ultra 1:30 · Rare Secret 1:100 · Rare Rainbow 1:100 · Trainer Gallery Rare Holo 1:9 · Radiant Rare 1:22 · Amazing Rare 1:19

Per-set overrides can be stored when better counts are published, and EV is recomputed every day after the price sync so it follows the singles market.

Limitations

  • No eBay sold data yet. The baseline is TCGplayer’s market price. eBay clearing prices can sit above or below it, especially for high-end cards; a future version will blend sold comparables in.
  • Graded cards are displayed but not scored. Slabs trade at grade-dependent premiums and we have no graded baseline, so they show the raw NM market for reference only.
  • Shipping is estimated when the seller uses calculated rates ($4.99 to a US address). International buyers pay more; the confidence penalty is the only signal.
  • Auctions can still rise. The 0.7 format weight and the auction label flag the risk; they do not predict the closing price.
  • Market prices refresh once a day, so a sudden spike or crash can be up to 24 hours stale in our baseline.
  • Matching is title-based. Reprints, promos and similarly numbered cards occasionally produce a wrong match. Confidence is the safety valve, not a guarantee.
  • Sealed EV is an average. A real box has enormous variance, era-default rates can be badly off for sets with an unusual rarity mix, and there is no Monte Carlo band yet.
  • English cards only. Other languages have no baseline here.

Reporting a bad match

If a deal points at the wrong card, the condition is wrong, or a listing looks like a scam, send the eBay item number and what it should have been through the contact page. We deactivate the deal, and when a pattern is involved we add a rule to the parser so the same mistake does not recur. You can also test any listing yourself with Deal Check, which prints every intermediate number.