SlabPulse 30 Index (SP30) – Official Methodology
The SlabPulse 30 Index (SP30) is a weighted benchmark designed to track the performance of 30 cornerstone Pokémon slabs. It is built for serious collectors, analysts, and partners who want a transparent, auditable view of the graded card market – not just a feeling.
1. Objective
The objective of SP30 is to provide:
- A transparent, rules-based benchmark for the graded Pokémon market.
- A single reference value collectors can watch over time.
- A defensible series that can be audited, back-tested, and used in research.
- A foundation for future analytics: category indices, rarity indices, volatility measures and more.
2. Index Universe
The eligible universe includes slabs that meet all of the following conditions:
- Asset type: Pokémon Trading Card Game slabs.
- Grade status: Professionally graded (e.g. PSA, BGS, CGC, SGC or equivalent).
- Transparency: Price and population data are reasonably observable.
- Demand: Evident and repeatable collector demand, not one-off anomalies.
Exclusions:
- Ungraded cards or raw cards.
- Slabs with unclear or disputed grading.
- Extremely illiquid items with no meaningful price history.
3. Component Selection – The 30 Slabs
SP30 contains 30 named components. Each component is identified in the system by a
stable slug (for example: 1999-BASE-CHARIZARD-PSA10).
The selection process looks at:
- Liquidity: how often the slab actually trades.
- Long-term demand: how central it is to collector interest.
- Price stability: whether the card behaves like a benchmark, not a lottery ticket.
- Cultural significance: relevance to the franchise and community.
- Grader consistency: recognition and quality of the grading company.
3.1 Category balance (guideline)
- Vintage / WotC era anchors.
- Modern chase and alt-art slabs.
- Promos and collaboration cards.
- Low-pop and symbolic “grail” pieces.
Exact components may change over time, but the spirit of the index is consistent: 30 cornerstone slabs that matter to the market.
3.2 Storage in the database
Internally, SP30 components are stored in:
| Table | Field | Purpose |
|---|---|---|
slab_index_components | index_name | Always 'SP30' for this index. |
slab_index_components | slug | Identifies the slab being tracked. |
slab_index_components | weight | Assigned weight in the index calculation. |
slab_index_components | active | Whether the component is currently included. |
4. Weighting Methodology
SP30 is a weighted index. Each component slab has an explicit weight wᵢ.
Weights are determined using a combination of:
- Liquidity: more active slabs can receive higher weights.
- Market depth: deeper, more robust markets are favoured.
- Volatility: extremely volatile slabs may be capped.
- Collector relevance: long-term importance to the hobby.
Weights are normalised so that the sum of all active component weights equals 1.0:
Σ wᵢ = 1.0
4.1 Index formula
At each calculation time, the SP30 index value is:
SP30 = Σ ( priceᵢ × weightᵢ )
where priceᵢ is the latest observed price for component i from the SlabPulse
pricing engine, and weightᵢ is the configured weight stored in the database.
4.2 Missing prices
If a component does not have a usable price at a given calculation time:
- It is flagged as missing in the calculation metadata.
- Its weight is not redistributed to other components in v1.0.
- The index still proceeds with the subset of components that have valid prices.
This conservative approach keeps the methodology simple and auditable, while clearly marking any gaps in the underlying data.
5. Calculation Frequency
SP30 is calculated automatically by the SlabPulse backend:
- Intraday: every 10 minutes.
- Daily close: once per day at 00:00 UTC.
Each calculation run:
- Reads the list of active SP30 components and weights.
- Fetches latest slab prices from the internal API.
- Computes the weighted index value.
- Appends a new, immutable record to the history table.
- Writes a small JSON snapshot for the public website.
6. Data Storage & Immutability
Every calculation of SP30 is stored in an append-only history table:
| Table | Key fields | Description |
|---|---|---|
slab_index_history |
index_name, index_value, calc_timestamp |
Stores each computed value of SP30, with a UTC timestamp. |
slab_index_history |
component_prices (JSONB) |
Full list of components, weights and prices used in that run. |
slab_index_history |
metadata (JSONB) |
Methodology version, missing components, diagnostic flags. |
Historical rows are never overwritten or edited. If the methodology changes, a new version tag is recorded in metadata, and subsequent calculations use the updated rules.
7. Frontend Display
The public website does not re-calculate SP30 in the browser. Instead, it reads a small snapshot:
/data/sp30_latest.json– latest value, count, timestamp.
This snapshot is generated by the backend script every time the index is recalculated. It ensures that what users see is always:
- Backend-calculated.
- Consistent with the database.
- Traceable back to a specific history record.
8. Rebalancing & Changes
SP30 is reviewed on a periodic basis (for example, quarterly or when the market changes materially). During a rebalance, the following may be adjusted:
- Component list (additions and removals).
- Weights and caps.
- Handling of new eras, sets, or grading dynamics.
Any future methodology changes will be:
- Documented as a new version (e.g. v1.1, v2.0).
- Tagged in the metadata of historical records from that point onward.
9. Future Extensions
SP30 is the foundation. The same framework can support:
- Broader indices (e.g. SP100).
- Segment indices (Vintage, Modern, Promos, Low-pop).
- Volatility measures and drawdown tracking.
- Strategy back-tests based on index behaviour.
10. Disclaimer
SP30 is an informational index. It is not investment advice. Slab prices can rise or fall, and past behaviour is not a guarantee of future results. Collect responsibly.
Methodology version: 1.0 · This page describes the current rules used by SlabPulse to calculate and store the SlabPulse 30 Index.