← Back to blog
DataJan 12, 2026 · 6 min read

Understanding GrailData's Demand Score

The demand_score field on every sneaker object is a composite signal designed to surface which shoes are generating the most market attention right now — not historically, but in the current 30-day window.

What goes into it

The score is a weighted average across four signals:

  • Sale velocity (35%) — How many transactions happened in the past 7 days relative to the shoe's trailing 90-day average. A shoe selling 3× its baseline scores high here.
  • Bid depth (25%) — The number of active bids and how close the highest bid is to the last sale price. Deep bid books at tight spreads signal strong buyer conviction.
  • Price trajectory (25%) — Whether the last-sale price is trending up, flat, or down over 14 days. We use a linear regression slope normalized to the shoe's own price range.
  • Search and media mentions (15%) — Aggregated from sneaker news sources. A shoe getting covered by SneakerNews, Hypebeast, or Kicks on Fire in the past week gets a bump.
  • Range and calibration

    Scores run from 0–100. Median is around 42. Anything above 70 is in the top 10% of the catalog by demand. Scores above 85 are rare and usually indicate a release week or a major resale spike.

    How to use it without over-indexing

    The score is a triage tool, not a verdict. A high demand score doesn't mean a shoe will keep climbing — it means buyers are paying attention *right now*. Combine it with price_premium_pct and volatility_score to get a fuller picture:

  • High demand + high premium + low volatility = stable grail
  • High demand + low premium = potential entry point
  • High demand + high volatility = hype play, watch carefully
  • Ready to start building?