The Taste Index

The Taste Index is the pricing engine behind every market on Taste Markets. It converts real-world social signals into a single tradeable number. This page documents the exact formulas used.

Note: Weights, sources, and scoring parameters may vary from market to market. Please check the sources tab or the market rules before placing any trades.
Core Transform

Every raw metric is passed through a log transform before weighting. This stabilizes variance so that a viral video with 10M views doesn't dominate a score the same way raw counts would.

log(x) = ln(x + 1)

Social metrics (Reddit, YouTube, TikTok) are also normalized by dividing by 96 (the number of 15-minute intervals in 24 hours) before the log transform to account for data collection frequency.

normalize(x) = x / 96
Data Sources & Scoring

Google Trends

Search interest over time, measured relative to a set of stable control terms. Already normalized by Google, so no division by 96.

Strends = ln(interest + 1)

Reddit

Post volume, comments, and upvotes from relevant subreddits.

Weights & formula
MetricWeight
Posts0.50
Comments0.30
Upvotes0.20
Sreddit = 0.50 · ln(posts/96 + 1) + 0.30 · ln(comments/96 + 1) + 0.20 · ln(upvotes/96 + 1)

YouTube

Search result count, comments, likes, and views from recent videos.

Weights & formula
MetricWeight
Search results0.50
Comments0.30
Likes0.15
Views0.05
Syoutube = 0.50 · ln(results/96 + 1) + 0.30 · ln(comments/96 + 1) + 0.15 · ln(likes/96 + 1) + 0.05 · ln(views/96 + 1)

TikTok

Video count, comments, shares, likes, and views.

Weights & formula
MetricWeight
Videos0.35
Comments0.25
Shares0.20
Likes0.10
Views0.10
Stiktok = 0.35 · ln(videos/96 + 1) + 0.25 · ln(comments/96 + 1) + 0.20 · ln(shares/96 + 1) + 0.10 · ln(likes/96 + 1) + 0.10 · ln(views/96 + 1)

X (Twitter)

Post volume, replies, likes, retweets, and impressions. Coming soon for select markets.

TCGPlayer & eBay (via Poketrace)

Card sale data aggregated across TCGPlayer and eBay via the Poketrace API. Tracked across a basket of cards from popular sets.

Weights & formula
MetricWeight
avg7d (7-day average sale price)0.30
saleCount (completed transactions)0.30
avg1d (24h average sale price)0.20
high (highest recent sale)0.10
low (lowest recent sale)0.10
Scards = 0.30 · ln(avg7d + 1) + 0.30 · ln(saleCount/96 + 1) + 0.20 · ln(avg1d + 1) + 0.10 · ln(high + 1) + 0.10 · ln(low + 1)

Metrics are averaged across all tracked cards in the basket, weighted by rarity. Prices are in USD. Sale count is normalized by 96 (collection intervals per day) like other volume metrics.

Box Office Mojo & The Numbers

Cumulative worldwide box office gross in USD. Updated daily during theatrical run.

Formula
SboxOffice = ln(revenue + 1)

Rotten Tomatoes & Metacritic

Critic and audience review scores, normalized to a 0-100 scale.

Weights & formula
MetricWeight
Critic score0.55
Audience score0.45
Sreviews = 0.55 · ln(criticScore + 1) + 0.45 · ln(audienceScore + 1)

Screen count

Number of theaters showing a film, sourced from Box Office Mojo.

Formula
Sscreens = ln(screens + 1)
Raw Index Calculation

Source scores are blended into a single raw index. Social sources are first combined, then mixed with Google Trends.

Social blend

If a source is unavailable, its weight is excluded and the remaining weights are re-normalized so they sum to 1.

Weights & formula
SourceWeight
YouTube0.40
Reddit0.30
TikTok0.30
Ssocial = (0.40 · Syoutube + 0.30 · Sreddit + 0.30 · Stiktok) / activeWeightSum

Final raw index

Iraw = 10 × (0.30 · Strends + 0.70 · Ssocial)

If only Google Trends or only social sources are available, the available component is used alone (still scaled by 10).

Composite Markets

Some markets go beyond pure social attention by blending in domain-specific data. Each composite market defines its own extra data sources and weights. The general formula is:

Icomposite = wattention · Iattention + w1 · Sdomain1 + w2 · Sdomain2 + …

Where the domain components and their weights vary per market. Below are the composite markets currently available or coming soon.

Esports (e.g. FAKER)

Blends social attention with competitive performance data. Currently covers League of Legends players.

Tournament performance

Sourced from live tournament stats (gol.gg). Uses 17 metrics including win rate, KDA, CS/min, gold/min, damage/min, kill participation, solo kills, and early-game differentials. Each metric is log-transformed and weighted.

All 17 tournament metrics
MetricWeight
Win rate %0.12
KDA ratio0.10
Kill participation %0.08
Damage / min0.08
CS diff @ 150.08
CS / min0.06
Gold / min0.06
Damage share %0.06
Ahead in CS @ 15 %0.06
KA / min0.05
Solo kills0.05
Gold diff @ 150.05
XP diff @ 150.05
Gold share %0.04
Pentakills0.02
First blood participation %0.02
First blood victim %0.02

Differential stats (CS diff, gold diff, XP diff) are offset before the log transform to handle negative values. First blood victim % is inverted (lower is better).

Soloqueue performance

Sourced from ranked match data via the Riot Games API.

Weights & formula
MetricWeight
Win rate %0.45
KDA0.55
Ssoloq = 0.45 · ln(winRate + 1) + 0.55 · ln(kda + 1)

FAKER blend weights

Component weights & formula
ComponentWeight
Social attention0.20
Tournament performance0.65
Soloqueue performance0.15
IFAKER = 0.20 · Iattention + 0.65 · Stournament + 0.15 · Ssoloq

Collectibles (e.g. POKEMON)

Work in progress - weights and sources are subject to change before launch.

Blends social attention with collectible card market activity from TCGPlayer and eBay. Unlike esports composites where competitive performance dominates, POKEMON gives social attention a larger share because cultural hype is the primary price driver for collectibles.

Card market data

Uses the same base metrics from TCGPlayer & eBay (via Poketrace) described in the Data Sources section above. See that section for the full scoring formula (Scards).

POKEMON blend weights

Component weights & formula
ComponentWeight
Social attention0.40
Card market data0.60
IPOKEMON = 0.40 · Iattention + 0.60 · Scards

Entertainment (e.g. DUNE3)

Work in progress - weights and sources are subject to change before launch.

Blends social attention with entertainment industry data. For a movie like Dune 3, social hype drives most of the pre-release index, while box office revenue becomes the dominant signal after release.

Entertainment data

Box office revenue

Cumulative worldwide gross in USD from Box Office Mojo and The Numbers. Updated daily during theatrical run.

Critic score

Normalized 0-100 aggregate from Rotten Tomatoes (Tomatometer), Metacritic, and Letterboxd.

Audience score

Normalized 0-100 aggregate from Rotten Tomatoes (Audience Score), IMDb user ratings, and Letterboxd.

Screen count

Number of theaters showing the film, sourced from Box Office Mojo.

Before theatrical release, box office and screen count are unavailable. The entertainment component falls back to trailer engagement (views, likes, comments) as a proxy.

Weights & formula
MetricWeight
Box office revenue0.40
Critic score0.25
Audience score0.20
Screen count0.15
Sentertainment = 0.40 · ln(revenue + 1) + 0.25 · ln(criticScore + 1) + 0.20 · ln(audienceScore + 1) + 0.15 · ln(screens + 1)

DUNE3 blend weights

Component weights & formula
ComponentWeight
Social attention0.40
Entertainment data0.60
IDUNE3 = 0.40 · Iattention + 0.60 · Sentertainment
EMA Smoothing

The raw index is smoothed with an exponential moving average to prevent manipulation and reduce noise. The half-life is 12 hours, meaning after 12 hours the EMA has moved 50% toward a new sustained value.

α = 1 - 2(-dt / 12)

EMAnew = EMAprev + α · (Iraw - EMAprev)

Where dt is the time elapsed in hours since the last update. On the first data point, the EMA is seeded with the raw value.

Alpha values by time elapsed
Time elapsedαEffect
30 min~0.028Almost entirely previous EMA
12 hours0.50Equal weight old / new
24 hours~0.75Mostly new value
Pipeline Summary
  1. Fetch - Collect data from all sources in parallel (Google Trends, Reddit API, YouTube Data API, TikTok, plus domain-specific APIs for composite markets)
  2. Score - Apply per-source scoring formulas (log transform + weighted sum)
  3. Blend - Combine source scores into a raw index using source weights
  4. Smooth - Apply 12-hour half-life EMA
  5. Publish - Write smoothed value to the database and serve as the on-chain oracle price