The number you see, fully sourced
Every fair value carries its receipt.
The price at the top of every card page is built from real sales over a real time window with a real confidence band. Hover the comp footer on any card and you’ll see the same numbers we used to compute it: how many sales, how recent, what window, what source. Below is every formula and every default we apply along the way — auditable, not marketing.
The headline number
What “fair value” actually meansWe compute fair value from two complementary signals — vendor consensus quotes over 60 days, and realized sales over 30 days. They measure different things, and we surface them on different surfaces deliberately. Both apply the same trimmed-median + 95% CI math so the number is robust to a single $0.01 typo or a $99,999 listing typo regardless of which path you read.
- Card detail pagerenders the realized-sales signal — what cards actually changed hands for in the last 30 days. We anchor the on-page hero to this because realized sales are the most honest answer to “what’s it really worth?”
- Public API and embed widget return the vendor-consensus signal — what the wider pricing market currently quotes over 60 days. External consumers ask for a stable, broad number; the longer window with vendor quotes is the right shape for that. The response carries
window_daysexplicitly so consumers can never accidentally treat one window as another. - Confidence tier always derives from the realized-sales signal — we trust a price more when actual cards have changed hands recently than when vendor quotes have just sat on listings.
fair_value = trimmed_median( weighted_comp_prices,
trim_lower = 5%, trim_upper = 5% )
weighted_comp = comp_price × source_weight × condition_factor
ci_lower / upper = central 95% of the trimmed distribution
· n < 30 → Student-t with df = n-1
· n ≥ 30 → normal-approx ± 1.96·σ/√n
card-page hero window_days = 30, source: realized sales
(vaultstore_order / vaultstore_auction / vaultstore_sale,
plus pricing_events with metric='sold')
api + embed widget window_days = 60, source: vendor consensus
(pricing_events with metric='market')
sample_size comp count after trim
last_sale most recent observation in the windowSources & weights
Live snapshot · refreshes within 5 minutes of an accepted brain proposalEach comp is multiplied by the weight of its source before going into the trimmed median. VaultStore-internal sales are always weight 1.0 — they are the source of record. External graph weights are tunable: when the brain detects a vendor source consistently drifting from cross-vendor consensus, it proposes a weight adjustment that the operator can accept from /admin/brain. Accepting writes back to
app_runtime_config and this table reflects it on the next read.VaultStore
1.000Sales / auctions / trades inside the platform. Always weight 1.0 — this is the source of record.
VaultStore TCG graph
1.000Aggregated trading-card-game vendor graph. Weight tunable by the brain.
VaultStore sports graph
1.000Aggregated sports-card vendor graph. Weight tunable by the brain.
Self-reported
1.000Self-reported by the lot owner. Falls back to seed reference if no sale signal exists.
Seed reference
0.500Static reference price baked into the catalog. Used only when nothing better exists.
Confidence tiers
When we trust a number — and when we say soEvery fair value carries a confidence tier alongside it. The tier is a function of three things: comp volume in the last 30 days, how many distinct sources contributed those comps, and how recently the most recent sale landed. When the math says “insufficient” we render an honest empty state — never a fabricated number. The minimum sample size for a tier above “insufficient” is 5.
high if volume_30d ≥ 5 AND sources ≥ 2 AND last_sale < 14d medium if volume_30d ≥ 2 AND last_sale < 45d low if volume_30d ≥ 1 OR (sources ≥ 2 AND last_sale < 90d) insufficient otherwise — fair value suppressed, "no fair value yet"
Anomaly threshold
Live · 10.0% from fair valueSingle comps that fall more than 10.0%outside the trimmed window are still recorded but not allowed to drag the headline number. They surface in the recent-sales feed so a buyer or seller can see them; they don’t quietly redefine the market. This threshold is brain-tunable and reflects the current value as of this page load.
Temperature & velocity
Where the price is going, not just where it isFair value is a snapshot. Temperature and velocity describe motion. Neither replaces the other — they sit alongside the price so the reader can decide whether to act on it now.
- stable — the trimmed median is within ± 5% of where it was 14 days ago. No badge.
- heating_up — fair value moved up between 5% and 15% over 14 days. Yellow chevron badge.
- on_fire — fair value moved up more than 15% over 14 days. Red flame badge.
- cooling — fair value moved down more than 5% over 14 days. Blue snowflake badge.
- velocity_per_week — average sold-comp count per week over the window. Surfaces in the price API. A high-velocity card with a tight CI is a liquid card; a low-velocity card with a wide CI is illiquid even if the median looks confident.
The drift watchdog
Daily · methodology integrityEvery 24 hours an internal brain loop compares the prices we publish against external pricing comparables on the same catalog cards over the last 30 days. When the headline number we publish averages more than 5% above or below external comparables across 50+ cards, the loop surfaces an action-tier insight to the methodology team. This is the watchdog behind the Pricing Authority claim — the number we publish at the top of every card page must match what those cards sell for elsewhere. When the watchdog is silent, the gap is below threshold; when it fires, we investigate before the next price refresh ships.
What we will never do
- Fabricate a sale. Every comp ties back to an observation in
pricing_events. - Render a number with no provenance. If we can’t cite at least one comp, the fair-value field is suppressed and we say so.
- Stamp a number as “AI-generated” to evade scrutiny. The math is deterministic and runs on the server before any model touches the page.
- Adjust a card’s fair value to favor a particular seller, including VaultStore. Listing prices on the marketplace are independent of the published fair value; you can list above or below it freely.
- Quietly change a methodology constant without a brain proposal + operator accept + a row in
brain_applied_changes. Every change is auditable and one-click revertable.