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%

Index Methodology

TCGBerg indices are cap-weighted, confidence-dampened, divisor-adjusted benchmarks of the trading card market. Each index tracks either a whole set or a print run within a set (for example Base Set 1st Edition Shadowless), at a single grade tier or as a composite across grades. Indices are denominated in points, base 100 at inception, so a level of 138 reads directly as up 38% since inception. The level moves only with constituent fair values: population growth and composition changes are absorbed into a continuous divisor, the same mechanism major equity indices use, so they never introduce artificial level jumps. This page documents the construction, maintenance, and limitations of the index family.

Download PDF spec

Construction

Indices are auto-derived from the data, not manually curated. Each index is uniquely defined by two parameters:
  - Scope: a set (Base Set) or a print run within a set (1st Edition Shadowless across all Base Set cards). Print runs are discovered systematically by grouping printings on their attribute flags; no set-specific logic, so new sets get their index family automatically when they onboard.
  - Grade variant: a single grade tier (PSA 10, PSA 9, ...) or the composite across tiers.

The index level is:

  level(t) = aggregate_effective_market_cap(t) / divisor(t)

where the aggregate is the sum of each constituent's confidence-dampened market cap (next section) and the divisor is maintained so the level reflects only fair-value changes. At inception (the first date an index has enough eligible constituents) the divisor is set to aggregate / 100, so every index starts at exactly 100.

Eligibility and Weighting

An atom is eligible to be a constituent when it has a fair value for the date, a non-zero graded population, and it matches the index's scope and grade filter. Confidence is deliberately NOT an eligibility gate: filtering on confidence would churn constituents in and out as their scores fluctuate. Instead, every eligible atom is included and weighted by its effective market cap:

  effective_market_cap = market_cap x sqrt(confidence_score / 100)

The square root gives a gentle penalty: an atom at confidence 90 contributes about 95% of its raw cap, one at 50 about 71%, one at 10 about 32%. High-confidence atoms pass through nearly unchanged while noisy ones contribute proportionally less, without ever being excluded outright.

An index publishes only when it has at least 5 eligible constituents; below that it pauses rather than print a statistically meaningless level. An atom that loses eligibility (fair value disappears or population drops to zero) is not yanked immediately: a single missing date never causes removal, only sustained ineligibility does, with the removal applied at the next scheduled rebalance.

The Continuous Divisor

The fundamental rule: population growth must not inflate the index. Only price action moves the level.

Each day, before computing the level, the engine checks whether any constituent's population changed. If so, it recomputes yesterday's baseline using today's fair values with yesterday's populations, compares it with today's actual aggregate, and scales the divisor by the ratio. The result is that the level is identical before and after the population step; the change shows up only as a redistribution of constituent weights for future moves.

The same trick handles composition changes at rebalances. When constituents are added or removed, the divisor is adjusted so the level is unchanged at the rebalance moment:

  new_divisor = new_aggregate_market_cap / current_level x 100

This is the standard continuous-divisor mechanism used by major equity indices. Every index page exposes its rebalance log: divisor before and after, aggregate cap change, and the exact constituents added and removed, so the level series is fully auditable and replayable.

Rebalances

On a scheduled cadence (currently weekly), the constituent universe of every index is re-evaluated:
  - Re-discover print runs from current data, so newly onboarded sets and printings join automatically.
  - Re-check eligibility for every atom in the index's potential universe.
  - Add newly eligible atoms; remove atoms whose ineligibility has persisted since the prior evaluation window.
  - Adjust the divisor to preserve the level across the change, and persist the rebalance event with its full diff for audit.

Most rebalances change little: a handful of additions or removals at most, with the divisor moving fractionally. The cadence is a deliberate middle ground; rebalancing on every data tick would churn membership on temporary data droughts, while waiting too long would leave a newly tracked atom outside its index for weeks.

Limitations

Known limitations of the current index family:
  - Single-grader scope. Published indices are PSA-based. BGS and CGC atoms exist in the market cap layer but are not yet index constituents; cross-grader indices are a future enhancement.
  - Half-grades excluded from composites. Half-grade sales (PSA 8.5 style) contribute to fair values at the parsing level but do not form their own atoms in the index engine.
  - No concentration caps. A single dominant atom can carry a large share of its index. Capped variants are a possible future addition.
  - Historical population is snapshot-based. Population history inherits the market cap layer's use of the latest known reading for past dates, which biases old absolute levels slightly upward; relative moves are unaffected.
  - No raw (ungraded) indices. There is no clean raw fair value or population analog yet; raw indices wait on that methodology.
  - Inception-relative levels. Each index starts at 100 on its own inception date (the first date it had enough eligible constituents); levels before inception are not published.

Frequently asked

Why cap-weight instead of equal-weight?
Cap weighting reflects market-implied importance: cards the market values more contribute more to the index. Equal weighting would over-weight low-cap cards and under-weight the major positions, producing a benchmark that does not match how value is actually distributed.
How does confidence affect the index?
Every constituent's market cap is dampened by the square root of its confidence score over 100. A $100M atom at confidence 90 contributes about $95M effective; the same cap at confidence 30 contributes about $55M. Noisy fair values therefore move the index less, without the churn that a hard confidence cutoff would cause.
What is the divisor for?
The divisor isolates the level from everything that is not price action. Population growth and constituent additions or removals scale the divisor so the level is continuous through the event; afterwards, only fair-value moves change the level. It is the same mechanism the S&P 500 uses for membership changes.
Why did an index jump or pause on a given day?
It should not jump from composition or population changes; those are divisor-absorbed and recorded in the rebalance log on the index page. An index pauses (publishes no value) on dates when it has fewer than 5 eligible constituents, and resumes when breadth returns.
How often do rebalances change much?
Rarely. Most scheduled rebalances see zero to a few constituent changes and a fractional divisor move. Every event is listed on the index page with constituents added and removed plus the divisor before and after.
Can I see the historical level series?
Each index page charts its weekly level history since inception, with the constituents and rebalance log alongside. The full construction spec is in the methodology PDF linked above.