Charizard UnlimitedPSA 7$7230.2%
Charmeleon HoloPSA 10$5252.9%
Charizard ex HoloPSA 9$4371.4%
Blastoise UnlimitedPSA 8$4080.0%
Charizard ex HoloPSA 9$566.9%
Haunter HoloPSA 10$1,3091.4%
Pidgeot HoloPSA 9$1501.8%
Articuno HoloPSA 9$2845.7%
Nidoking HoloPSA 10$1773.2%
Pikachu HoloPSA 9$1031.3%
Aerodactyl HoloPSA 8$8311.9%
Venusaur UnlimitedPSA 8$3002.4%
Venusaur ex HoloPSA 9$1321.2%
Ivysaur HoloPSA 9$694.3%
Giovanni's Charisma HoloPSA 10$1360.2%
Wartortle HoloPSA 9$800.9%
Charmeleon UnlimitedPSA 9$480.2%
Squirtle HoloPSA 10$5281.4%
Machop UnlimitedPSA 10$984.1%
Mew ex HoloPSA 10$3257.1%
Mr. Mime HoloPSA 8$611.1%
Muk HoloPSA 10$4570.4%
Charizard 1st Edition ShadowlessPSA 10$9,21078.6%
Blastoise ex HoloPSA 10$6252.4%
Clefable PrereleasePSA 9$7,7750.0%
Gambler 1st EditionPSA 8$6266.0%
Charizard ShadowlessPSA 9$10,3542.4%
Vaporeon 1st EditionPSA 9$1,0180.3%
Magneton HoloPSA 8$6237.7%
Pikachu 1st Edition Red CheeksPSA 10$24,5740.4%
Blastoise 1st Edition ShadowlessPSA 10$20,40130.9%
Zapdos ex HoloPSA 10$4610.2%
Charmander Reverse HoloPSA 10$12530.8%
Dragonite 1st EditionPSA 9$2,4333.4%
Electrode UnlimitedPSA 9$5230.6%
Gengar 1st EditionPSA 10$28,1040.0%
Slowpoke 1st EditionPSA 8$3130.1%
Pikachu 1st EditionPSA 10$1,0471.2%
Ninetales 1st Edition ShadowlessPSA 10$15,17229.6%
Charizard HoloPSA 8$7302.1%
Computer Search 1st Edition ShadowlessPSA 9$45126.7%
Snorlax 1st EditionPSA 9$2,6581.2%
Basic Psychic Energy HoloPSA 10$10125.8%
Articuno 1st EditionPSA 10$11,5633.2%
Diglett Fight Symbol ErrorPSA 10$32324.3%
Flareon 1st EditionPSA 10$7,3090.0%
Electabuzz ShadowlessPSA 8$6422.7%
Zapdos 1st EditionPSA 10$4,0120.0%
Potion UnlimitedPSA 10$7821.1%
Moltres 1st EditionPSA 10$4,3720.5%

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.