Skip to content

Methodology

How SilphCo Price works — and why you can trust it

Last updated:

SilphCo Price is the canonical valuation you see across the platform — on card pages, in your portfolio, and over the API. It is produced by SilphCo's Live Mark pricing engine, which uses a structured selection hierarchy (the "pick ladder") to choose the most accurate price from recent transaction history (last sale), liquid volume-weighted averages (TV-WAP), and robust fallback medians — adapting to each card's real-time liquidity while filtering out outliers.

What Is Live Mark Pricing?Link copied!

Most price sites show the last sale or a simple average — both of which can be noisy or misleading for illiquid collectibles. Live Mark Pricing resolves this by employing a multi-tier selection hierarchy (the "pick ladder") that dynamically chooses the most transaction-honest price source based on volume, recency, and liquidity. It incorporates verified last sales, robust time-value weighted averages (TVWAP), and median fallback pricing to provide a stable, reliable market mark.

Selection Hierarchy (Pick Ladder)Link copied!

To ensure reliability, our system calculates candidate prices from multiple methodologies and selects the final Live Mark using a prioritized decision tree:

Liquidity StateCondition / RuleSelected Price Source
Liquid Market (n ≥ 5 sales)Active trading within lookback windowTVWAP (recent sales weighted exponentially; outlier-filtered)
Thin Market (n < 5 sales)Limited sales historyMedian Price (to avoid weighting outliers or single extreme sales)
Recent ActionVerified recent trade-floor signal existsLast Sale (always preferred when present to reflect real-time pricing)

By combining these methodologies, the Live Mark avoids "TVWAP pollution" (when an old or thin TVWAP average overstates/understates the current market) and ensures that both illiquid vintage cards and high-velocity modern cards are priced appropriately.

Adaptive WindowsLink copied!

A Charizard Base PSA 10 trades dozens of times a month; a vintage PSA 10 might trade once a year. A single fixed window would overreact for one and ignore the other. SilphCo Price uses an adaptive half-life based on trailing 30-day volume to scale the lookback window automatically:

30d SalesWindowWhy
10 or more14 daysFast-moving; recent prices matter most
3–930 daysSteady; balanced view
1–260 daysSparse; need more history
090 daysFloor fallback only

Outlier RejectionLink copied!

A $50,000 Charizard sale might be a wash trade, a typo, or a bundled deal. SilphCo Price uses a modified Z-score filter to detect and exclude these outliers before averaging — conservative enough to catch genuine anomalies without discarding legitimate market moves.

Confidence LevelsLink copied!

Every SilphCo Price carries a tvwap_confidence label. This tells you how the price was derived and how much weight to give it.

direct
Measured from verified on-chain sales (Courtyard, Collector Crypt, Phygitals, Beezie, Magic Eden). The strongest signal.
direct_offchain
Measured from verified off-chain sales (eBay, PokemonPriceTracker). Also strong.
adjacent_1
Inferred from 1 grade step away (e.g., PSA 9 inferred from PSA 10 using historical premium).
adjacent_2
Inferred from 2 grade steps away (e.g., PSA 8 inferred from PSA 10). Less precise.
set_estimate
Inferred from set-level median premiums when card-specific data is too sparse.
grader_estimate
Inferred from cross-grader premiums (e.g., CGC price estimated from PSA sales).

direct and direct_offchain prices are backed by actual sales. set_estimate and grader_estimate are directional only — useful for trends, not for setting exact listing prices.

Grade InferenceLink copied!

Not every grade trades regularly. A PSA 10 Charizard sells weekly, but a PSA 8 can go months between sales. Rather than showing a stale price, SilphCo infers it from nearby grades using historical premiums — computed from 90-day co-occurrence data, falling back to set-level medians then global defaults.

Rules of thumb:

  • We never infer across more than 2 grade steps (PSA 10 can infer PSA 9 and PSA 8, but not PSA 7).
  • Collectible grades (8–10) never mix with low grades (1–6) — the markets behave differently.
  • Inferred prices never feed further inference. A PSA 9 inferred from PSA 10 will not be used to infer PSA 8.

On-Chain vs Off-ChainLink copied!

SilphCo blends two sources of sales data:

On-Chain Sales

Sales recorded on the blockchain via Courtyard (Polygon), Collector Crypt, Phygitals, Beezie, and Magic Eden (Solana). These are cryptographically verified — the transaction hash proves the sale happened at the stated price. On-chain data is our primary source when it is fresh.

Off-Chain Sales

Sales from eBay, TCGPlayer, and PokemonPriceTracker Business. These represent the traditional paper market. Off-chain data fills gaps when on-chain sales are stale or missing, especially for vintage cards that rarely trade on-chain.

On-chain is primary. If it is fresh, we use it. If stale or missing, off-chain fills the gap. Both sources run through the same TV-WAP engine so they are directly comparable.

StalenessLink copied!

Every SilphCo Price carries a staleness score from 0 to 1:

  • 1.0 — Very fresh. Sales within the adaptive window.
  • 0.5 — Borderline. Sales exist but are aging.
  • Below 0.5 — Stale. The UI shows "Estimated" to warn you the underlying data is old.

Staleness is the weighted average age of sales relative to the adaptive half-life. A 14-day-window card with its last sale 10 days ago is fresher than a 90-day-window card with its last sale 60 days ago.

MomentumLink copied!

When a card shows a statistically significant trend, SilphCo attaches a momentum signal.

We reconstruct weekly TV-WAP snapshots going back twice the adaptive half-life and fit a trend line. If the slope is strong enough to distinguish from noise, we label it Up or Down. If not, we label it Flat with no directional signal.

The forecast horizon matches liquidity: fast-trading cards get a 7-day forecast, sparse cards up to 45 days. Confidence bands widen with less data — wide at 4 snapshots (reflecting genuine uncertainty), narrowing as more history accumulates.

Technical SummaryLink copied!

For developers and data scientists who want the exact formulas:

  • TV-WAP uses exponential decay weights w = exp(-ln(2)/H * age) where H is the adaptive half-life in days.
  • Outlier rejection uses modified Z-score with median absolute deviation (MAD), threshold = 3.5.
  • Grade premiums are computed from 90-day card-level co-occurrence, falling back to set-level medians and then global defaults.
  • Cross-grader premiums are era-aware (pre-2010, 2010-2020, 2021-plus) with same-era pairs weighted 2x.
  • Momentum uses decay-weighted least squares (WLS) on reconstructed weekly TV-WAP snapshots. Significance gate: |t-statistic| >= 1.5.
  • Prediction bands use the t-distribution with n-2 degrees of freedom, converging to +/- 1.96 sigma as data grows.