One Piece TCG only. Every published number traces to a formula and a dated artifact — no hype, no buy calls. · Home · Leaderboards · Data status
Pack EV is the expected value E[X] of singles value returned by one randomly opened pack, under a pull-rate model and listed market prices. It is a population mean, not a forecast for one pack. Opening outcomes are highly skewed: most packs return far below EV; a tiny fraction carry the chase hits that pull the average up. By the law of large numbers, realized value per pack approaches EV only over many independent opens (hundreds+), and even then only if market prices match realized sale prices.
We use arithmetic means within rarity tiers and do not model card-to-card covariance, print-run scarcity beyond the slot model, or buyer/seller fees.
Each booster pack is modeled as independent slots (commons, rares, alt-art slot, DON slot, etc.).
For slot s with expected_cards_per_pack = nₛ, configured tier weights are
renormalized over tiers that have at least one priced card in that set (unpriced tiers
drop out of the active pool).
Stored as ev_math.slot_breakdown in set metrics. Rounded to 2 decimals for display;
reconciliation gates allow ≤ $0.01 drift vs the unrounded sum.
Pack cost source is shown per set (tcgplayer_market, box_derived, etc.).
No pull-rate weighting — checklist liquidation fantasy, not rip value.
Uses the same slot contributions as EV. Tiers with tier-average ≥ $15 (alt arts, manga, SP, etc.) are “chase” tiers. High % = lottery-style set where a few hits carry most of E[X].
Expected packs to pull a specific card at modeled rates (not a guarantee). Ultra-chase EN-only slots may be suppressed when no EN pull slot exists.
Built from dated set_metrics snapshots — one value per calendar day (latest file wins).
Like-for-like only: same set, same formula era, TCGplayer NM market inputs. Missing days are skipped;
we never interpolate prices between snapshots.
Card profile pages show TCGplayer Near Mint market snapshots, not individual eBay or auction sales.
card_metrics row per priced card each pipeline run.avg7 / avg30 are simple arithmetic means of snapshot prices in the last 7 / 30 calendar days (not volume-weighted).Cardmarket prices may appear on card pages for reference; they are not used in EV math.
| Input | Source | Refresh |
|---|---|---|
| Card prices (EV) | TCGplayer market from one_piece_pricing_real.json (NM listing feed) |
Daily |
| Sealed prices | TCGplayer market for booster packs, boxes, starter decks (sealed_prices_one_piece.json) |
Daily |
| Price history | Nightly snapshots + TCGplayer infinite-api backfill (see above) | Nightly |
| Pull rates | Versioned slot models in pull_rates_one_piece.json (sourced / estimated / community) |
On change |
Pull-rate quality and price coverage are separate dimensions — the UI surfaces each independently.
Live audit: status page · data/evidence/op_pull_rate_openings.json
Promo pools and other products with catalog_only: true skip the pack model entirely.
We show total raw value only and exclude the set from EV leaderboards.
Known gap: DON!! / Gold DON chase slots in some modern sets carry pull weight but often have $0 priced
listings — contribution is $0 (conservative) and flagged by the op_pure_math_tier_coverage gate.
verification_gates.py runs before publish. Deploy approved when all
critical gates pass; some non-critical FAILs (e.g. DON tier coverage, TCGplayer scrape gaps)
are documented but do not block deploy.
| Check | Threshold |
|---|---|
| Pricing artifact freshness | WARN if > 72h old |
| Global pricing coverage | ≥ 85% of catalog cards priced (critical) |
| EV formula reconcile | UI vs computed within $0.01 per set |
| UI/API coherence | Leaderboard top rows within $0.02 of source metrics |
| Image coverage | ≥ 98% of cards have image_url |
| Rarity completeness | ≥ 95% of cards have valid rarity labels |
Live results: status page.