Shohei Index

Index methodology

How the Shohei Card Market Index and its benchmark comparison are built, and what they are not. This page is about the INDEX; how an individual card is scored and valued is the scoring methodology.

Unvalidated methodology
The rules below have not been validated against any market history, because Shohei Index holds no market history yet. No backtest exists and none is implied. The index publishes nothing until the gates below are met with confirmed sales; until then every surface that would show it says insufficient evidence.

What data qualifies

Confirmed sold transactions only: witnessed sales in the comp ledger and provider rows the sold-data gate has confirmed (USD, price-confirmed, provider-final basis, not a currency mirror). Asking prices never qualify. A listing that merely disappeared is not a sale.

Each constituent is one exact card identity — year, product, card number, parallel, image variation, print run, signature status and physical form — priced at one grade. A raw card is never priced off a slab and a Topps Now #5 never prices a #23.

The constituent basket

7 series are defined in code (engine/benchmark.ts), each a named identity and treatment. A series is ACTIVE only with at least 5 comparable confirmed sales inside 365 days; an inactive series is shown with its reason and is never priced. Every series definition carries a version; changing a definition opens a new series and nothing is ever differenced across the change.

  • 2018 Topps Chrome RC #150 (raw)the canonical US rookie card in its rawest, most-traded form — the reference series everything else is read against
  • 2018 Topps Chrome RC #150 (PSA 10)the same rookie card as a PSA 10 slab — a separate market at a separate price level, never blended with raw
  • 2018 Topps flagship RC #700 (raw)the mass-market flagship rookie — the highest-volume, lowest-friction Ohtani market there is
  • Factory-certified autographs (raw base)the pack-issued signature market, kept apart from every non-auto series and from the aftermarket-signature flood
  • Japanese era 2013–2017 (BBM / Calbee, raw)the pre-MLB Japanese market — different sellers, different region, priced apart from every US series
  • Topps Now milestones (raw)the milestone-event market — print-to-demand cards whose supply is public and whose demand tracks the news cycle
  • Dodgers-era flagship 2024– (raw)the current-team flagship market — what the newest collectors buy first

Membership is documented in code and on the market page, which prints every series with its state.

Sample requirements

On a given day a series is an eligible constituent only when it is active, its latest price point is confirmed, that point rests on at least 3 sales, and it was observed within 45 days. Fewer than 3 eligible series and the day is not published — a one-card index is that card's price chart. A stale constituent drops out rather than carrying yesterday's number as today's.

The arithmetic, the base and rebalancing

The index is equal-weighted on returns, not on dollars: each constituent contributes the ratio of its price to its own price on the previous published day, and the index moves by the mean of those ratios. A dollar-weighted mean is exactly how one expensive autograph would drown a rookie card, and the brief names that failure.

The first published day is the base, 100. When the basket's membership changes, the level is chain-linked: the day's return is measured over the constituents present on both days, and a day with no overlap is not published. Constituents and weights behind every published value are stored with it (market_index_points.constituents), so any level can be audited.

Methodology version 1 is part of the stored key (shohei-card-market). A change to any rule above bumps it; the previous series stops and a new one begins. Historical values are never rewritten.

Update frequency

The per-series index is refreshed by the daily scan pass; the composite is recomputed after it and again in the evening (.github/workflows/market-journal.yml). Both are idempotent: the whole history is recomputed from stored points on every run, so a retry cannot inflate anything.

The benchmark comparison

“Shohei vs markets” rebases both series to 100 on the first day inside the chosen window (1M, 3M, 6M, YTD, 1Y, 3Y, 5Y). A side needs at least 2 observations inside the window to be drawn, and the comparison is drawn only when both sides have them; otherwise each side states what it lacks and no line is drawn. The S&P 500 series comes from a provider adapter that ships off by default — displaying index data on a public site is a licensing decision, recorded in docs/MARKET-JOURNAL.md.

Market movers

A mover is one exact identity whose median delivered confirmed price over the last 30 days differs from its median over the 90 days before by at least 5%. Both windows need at least 3 confirmed sales; medians, never means, so one odd sale cannot carry a headline. A card that traded on a smaller sample is counted and named as insufficient rather than silently omitted.

Limitations

  • Unvalidated: no history, no backtest. Every constant above is an unreviewed default (2026-09-01) and is marked so in code.
  • Small basket: 7 defined series, most of them expected to be inactive until real sold data flows. The index will be sparse before it is anything else.
  • Survivorship by construction: a series that stops trading leaves the basket. The chained level is continuous, but the basket the level describes is not the same basket over time; the stored constituents say which.
  • An index level is not a price and not a forecast. Confirmed sales are witnessed prices, not a valuation of any card you hold.
  • Evidence classes on every figure: confirmed, modeled, insufficient evidence, unavailable. A blank with a reason is always preferred to a number the evidence cannot support.