POKECA PSA INDEX is a daily Jevons-style price index for PSA 10 graded Pokemon cards. The headline index is equal-weighted (等加重 1/N): every constituent priced on both days contributes equally to a chain-linked geometric mean of daily log returns. It uses SNKRDUNK PSA 10 sales history and quarterly constituent rebalances. A liquidity-weighted series (price times a sales-count proxy, capped) is shown only as a dashed reference line on the main chart.
The index is divided into 3 sectors based on card release era. Each sector is tracked as an independent sub-index, plus a TOTAL index computed across all cards.
| Sector | Era | Set Codes |
|---|---|---|
| VINTAGE | 1996 - 2016 | Base Set, Neo, e-Series, PCG, DP, BW, XY, L |
| MODERN | 2016 - 2023 | SM, S series (including S-P promos) |
| CURRENT | 2023 - | SV, M series |
The index is updated daily by applying the equal-weighted geometric mean of day-over-day price changes to the previous index value.
INDEX(t) = INDEX(t-1) * exp( Σ ln(Pi(t) / Pi(t-1)) / N ) where: Pi(t) = SNKRDUNK rolling-median price of card i at time t (JPY) Pi(t-1) = SNKRDUNK rolling-median price of card i at time t-1 (JPY) N = constituents priced on both t and t-1 (each weighs 1/N) exp/ln = chain-linked geometric mean of returns
The geometric mean handles multiplicative price changes naturally and reduces the impact of outliers compared to arithmetic mean.
主指数は各構成銘柄に均等なウェイト 1/N を与えた等加重指数です。 ヒーローの指数値・セクターカード・期間リターン・上昇銘柄比率はすべてこの系列に基づきます。 1銘柄の値動きが指数へ与える影響は全銘柄同じで、高額・高流動性カードへの偏りがありません。
W_i = 1 / N (N = 当日と前日の両方に価格がある構成銘柄数) INDEX(t) = INDEX(t-1) * exp( Σ ln(Pi(t) / Pi(t-1)) / N )
両日に価格がある銘柄の日次対数リターンの幾何平均を前日の指数値に連鎖させて算出します。 ウェイトは毎日 1/N に再設定されるため、ディバイザー調整は行いません。 起点は流動性加重系列と最初に重なる日の水準に揃えており、両系列は同じ尺度で読めます。
メインチャートの点線は、価格 × 構成時の売買件数プロキシで重み付けした「流動性加重(参考)」系列です (1銘柄の上限は 3%、ONE PIECE は 5%)。時価総額ではなく実際の取引頻度に基づく重みで、参考としてのみ表示します (「比較線」ボタンで非表示にできます)。構成銘柄一覧の「参考ウェイト」列はこの重みです。
sales_proxy_i = selected PSA10 sales count for card i raw_weight_i = price_i * sales_proxy_i W_i = raw_weight_i / Σ raw_weight_j Cap: max 3% per card (iterative redistribution) INDEX_LW(t) = INDEX_LW(t-1) * exp( Σ Wi * ln(Pi(t) / Pi(t-1)) / Σ Wi )
Excess weight above the cap is redistributed proportionally to uncapped cards; this iterative capping runs up to 10 rounds until convergence. The reference series starts at 10,000 on its first day; the equal-weight headline is anchored to its level on the first overlapping day.
Cards are selected from SNKRDUNK's PSA 10 market data. Selection thresholds vary by sector to account for differing liquidity levels:
| Sector | Min Sales | Min PSA10 Median | Floor |
|---|---|---|---|
| VINTAGE | 1 | 3,000 JPY | 80 cards |
| MODERN | 3 | 5,000 JPY | 80 cards |
| CURRENT | 3 | 5,000 JPY | 80 cards |
Target: 500 constituents. Each sector gets at least 80 cards (floor). Remaining slots are allocated proportionally to each sector's total PSA 10 sales volume. Within each sector, cards are ranked by liquidity score = sqrt(sales x price). The basket stays fixed between quarterly rebalance dates.
The current production index derives daily prices from SNKRDUNK PSA 10 sales history only. Each card price is computed from a tiered rolling median:
Tier 1: median of sales in the last 14 days Tier 2: if empty, widen to 30 days Tier 3: if still empty, widen to 90 days Tier 4: if no recent sale exists, exclude the card for that day Outlier filter: keep only prices within [median / 3, median * 3] before final median
eBay and Mercari rows may still appear on individual card pages when historical records exist, but they are not used in the current daily index calculation.
The index is a chain of daily returns, so there is no divisor to adjust. On any day, only constituents that have a price on both that day and the previous day contribute to the return; a card that enters or leaves the basket is simply excluded on the day it has no comparable price and starts contributing the next day.
r(t) = Σ Wi * ln(Pi(t) / Pi(t-1)) / Σ Wi over i with Pi(t) and Pi(t-1) INDEX(t) = INDEX(t-1) * exp(r(t)) Added card: no Pi(t-1) → excluded on day t, included from t+1 Removed card: no Pi(t) → excluded on day t onward
Because the previous index level is carried forward unchanged, a membership change never produces a jump on its own. Constituents are re-selected quarterly; each re-selection is proposed as a reviewed pull request so the basket change is auditable before it takes effect.
| Source | Data | Role |
|---|---|---|
| SNKRDUNK | PSA 10 sales history, rolling-median price, sales counts | Current production source for selection, pricing, and volume proxy |
| eBay | Historical PSA 10 reference prices (when stored) | Displayed on card detail pages only when archived rows exist |
| Mercari | Historical PSA 10 sold prices (when stored) | Displayed on card detail pages only when archived rows exist |