Charizard ex HoloPSA 10$1,6110.4%
Cubone NormalPSA 10$3366.5%
Charmander HoloPSA 10$6690.3%
Ivysaur HoloPSA 10$3553.2%
Squirtle HoloPSA 10$5292.9%
Poliwrath UnlimitedPSA 10$8890.8%
Clefairy UnlimitedPSA 9$2574.0%
Vulpix UnlimitedPSA 10$1130.1%
Nidoqueen HoloPSA 9$1253.6%
Hitmonlee 1st Edition GalaxyPSA 9$2854.9%
Arbok ex HoloPSA 10$922.6%
Gengar GalaxyPSA 8$3310.3%
Blastoise ex HoloPSA 9$1752.6%
Venusaur ex HoloPSA 10$4950.2%
Zapdos UnlimitedPSA 9$2003.3%
Mew ex HoloPSA 10$2212.1%
Venusaur UnlimitedPSA 9$6412.5%
Magikarp UnlimitedPSA 9$625.2%
Machoke HoloPSA 10$1890.1%
Clefable HoloPSA 9$1310.5%
Alakazam UnlimitedPSA 7$821.4%
Venomoth HoloPSA 9$850.0%
Venusaur ex HoloPSA 10$1343.1%
Charizard 1st Edition ShadowlessPSA 10$58,20135.7%
Zapdos ex HoloPSA 10$4610.7%
Clefable PrereleasePSA 9$7,7750.0%
Flareon NormalPSA 10$32232.2%
Dragonite 1st Edition GalaxyPSA 9$2,4950.2%
Gengar 1st EditionPSA 10$1,39920.0%
Pikachu HoloPSA 10$6002.3%
Item Finder 1st Edition ShadowlessPSA 8$13731.1%
Gengar 1st Edition GalaxyPSA 10$28,1040.0%
Nidorino UnlimitedPSA 9$4623.5%
Alakazam ex HoloPSA 10$3561.5%
Voltorb UnlimitedPSA 9$5521.2%
Charmeleon HoloPSA 10$5253.3%
Potion UnlimitedPSA 10$7821.1%
Pikachu 1st EditionPSA 10$1,0472.0%
Jolteon 1st EditionPSA 10$72620.3%
Bulbasaur HoloPSA 10$3382.3%
Vulpix 1st Edition ShadowlessPSA 8$6919.3%
Snorlax 1st EditionPSA 9$2,6571.3%
Squirtle 1st Edition ShadowlessPSA 6$11219.2%
Articuno 1st Edition GalaxyPSA 10$11,2090.0%
Raichu GalaxyPSA 6$417.0%
Flareon 1st EditionPSA 10$7,3090.0%
Magikarp 1st Edition ShadowlessPSA 6$13318.6%
Zapdos 1st Edition GalaxyPSA 10$4,0120.0%
Mr. Mime HoloPSA 6$3517.9%
Moltres 1st Edition GalaxyPSA 10$4,3940.0%

Market Cap Methodology

Market cap is TCGBerg's aggregate measure of value at the atom level and above. For a single atom (printing x grader x grade), market cap = fair value x graded population. For any rollup (by set, by grade, by print run) market cap is the sum across atoms. The atom is the unit; the rollup is the sum. Population comes from grader population reports; fair value comes from the fair-value engine. This page documents how the two combine to produce the rollups visible on every set page and the discovery views.

Download PDF spec

The Per-Atom Calculation

For atom A with fair value FV_A and population POP_A, market_cap_A = FV_A x POP_A. The fair value comes from the fair-value engine documented in the prior article. The population comes from the grader's published population report, ingested and normalized into our population tables.

A worked example from the spec: a Charizard 1st Edition Shadowless PSA 9 with fair value $13,000 and a PSA population of 1,200 implies a market cap of $15.6M, the total value of all known PSA-9-graded copies if each were valued at the fair-value price.

Each market cap row caches the fair value, population, and fair-value confidence that produced it, plus the as-of date of each input, so any number on the site can be audited without joins. Computation is gated on real inputs only: if either the fair value or the population is missing (or the population is zero), no market cap is written. Never invent data: every published market cap is a genuine product of two real inputs.

Population Sourcing

Populations are sourced from the graders' public population reports, ingested and normalized into our population tables. PSA publishes population updates on its own cadence (roughly monthly); fair value updates daily. The market cap engine pairs today's fair value with the most recent population reading on or before the compute date, so a population reading can be up to a few weeks old. Both input dates are persisted on the row, making the staleness auditable.

A few wrinkles:
  - Pop is not surviving copies. Population reports count every grading event, including cracked-out resubmissions. The true surviving slab count is lower by an unknown factor. We do not correct for this; market cap is computed against the reported pop, which may overstate true cap by that margin while leaving the relative ordering across atoms meaningful.
  - Cross-grader populations. PSA, BGS, and CGC populations are tracked separately. A card with 100 PSA 9 copies and 30 BGS 9 copies has two distinct atoms with distinct market caps; populations are never pooled across graders.
  - Raw cards. Raw atoms have no graded population, so no market cap is published for raw; raw shows a market price only and stays out of cap rollups.
  - Coverage skew. Older or recently onboarded printings can have sparse population coverage; their market caps appear once both inputs exist.

Rollups

Rollups are simple sums computed at query time from the atomic rows. For a given dimension D (set, grade, print run):

  rollup_mcap_D = sum(market_cap_A) for all atoms A in dimension D

The set rollup for a set is the sum of market cap across every (printing x grader x grade) atom whose card belongs to that set; the live figure is on each set page and the /sets overview.

Four standard rollup views are published on /discovery/market-caps:
  - By set: sum across all atoms within a set.
  - By grade: sum across all atoms at a given grade tier (PSA 9 across all sets).
  - By print run: sum across atoms with a specific print-run name (1st Edition Shadowless, Unlimited, ...).
  - Top atoms: the largest atoms by market cap, regardless of dimension.

Aggregates are computed from the atomic rows at read time rather than pre-stored, so every consumer sees the same canonical definition.

Known Limitations

Market cap as computed has known limitations:
  - Pop overcounting, as discussed above: resubmissions inflate reported pop.
  - Liquidity assumption. Market cap is implied, not realizable. Selling every copy of an atom simultaneously would crash the price; market cap captures aggregate notional value at today's fair value, not an exit price.
  - Population staleness. A weeks-old population reading multiplies the same as a fresh one. The cached input dates make this auditable but do not change the value.
  - Cross-grader double counting. A physical card regraded by another company (crossed) appears in both graders' populations. This is a data-quality reality of the source reports, not correctable at this layer.
  - Confidence rides along, unaggregated. Each row caches its fair-value confidence; consumers that need trustworthy inputs (indices, screeners) filter or weight on it downstream rather than this layer gating anything.

For the full technical specification including the schema and aggregation helpers, see the methodology PDF linked at the top.

Frequently asked

How is market cap different from a stock's market cap?
Both are price x units-outstanding measures. For TCGBerg, the units are the grader-reported population of an atom and the price is the TCGBerg fair value. The interpretation matches equities: implied aggregate dollar value at current prices, not realizable exit value.
Why does pop overcounting matter?
Population reports count every grading event, including cracked-out resubmissions of the same physical card. The true surviving slab count is somewhat lower. Reported market cap will overstate true cap by that margin, but remains a meaningful relative ordering across atoms.
Can I get market cap for individual print runs?
Yes. Every set page exposes its print runs with a total market cap per run, each linking to a dedicated print-run page, and /discovery/market-caps exposes by-print-run rollups across all tracked sets.
Are BGS and CGC populations included?
They are modeled as separate atoms in the schema. Current live coverage is PSA-first; BGS/CGC population ingestion extends the same pipeline, after which rollups will sum across graders.
How often does market cap update?
Daily, right after fair values recompute. Fair value drives the day-to-day moves; the population factor changes only when the grader publishes an updated report, which lands as an occasional step rather than a daily drift.
Is low-confidence data excluded from market cap?
Not at this layer. Market cap is computed for every atom with real inputs, and the fair-value confidence is cached on the row. Downstream consumers decide: indices dampen low-confidence atoms by weight, and screeners can require a confidence floor.