How the numbers are made

HorrorStock is an attention index for horror. Prices are index points, not money. Nothing can be bought or sold, and nothing here is investment advice. Every number on the site is calculated from rows stored in the exchange's own database, by the rules below.

Sources and schedule

SourceWhat is storedRefreshed
RedditPosts from horror subreddits, with their score and comment countevery 15 minutes
YouTubeHorror videos with their view and like counts (YouTube Data API and channel feeds)every 15 minutes
NewsHorror outlets in full; general trades filtered to horror headlinesevery 15 minutes
Box officePublished weekend and daily box-office chartstwice an hour
Listed studiosDelayed exchange quotes for the listed parents of tracked titlesevery 5 minutes
Films (TMDB)Horror release slate: dates, credits, countries, keywords, reported gross and trailers. Reference data only; it never counts as a mention or moves a pricedaily
Creator audienceYouTube subscriber counts (rounded by YouTube); other platforms have no public audience sourcedaily
Feeds tapeNews, Reddit, Mastodon and podcast items for the feed pages, screened for horror relevance by Claude Sonnetevery 5 minutes

Pages read only the stored rows. Opening a page never fetches an outside source and never changes a price.

Engagement

Engagement sets how much an item counts. It is measured differently per source:

  • Reddit: post score plus 3 x the number of comments.
  • YouTube: views plus 5 x likes (YouTube Data API), or views alone for items read from channel feeds.
  • News: a fixed weight per outlet set by the exchange (for example Variety 3,000, Bloody Disgusting 2,400, Morbidly Beautiful 1,000). It is not a measured audience.
  • Box office: reported gross divided by 1,000.

Each item adds log10(1 + engagement) to its ticker's weight, so one huge item cannot dominate.

Matching and sentiment

An item counts toward a ticker when the ticker's name, a distinctive word of the name, or one of its sub-genre tags appears in the item as a whole word or phrase.

Each item gets a sentiment from -5 to +5. Recent news, Reddit and YouTube items are scored by an AI model; the rest use a keyword list. An AI score, once stored, is kept.

Prices and the HXI index

  1. Share = the ticker's engagement weight in the last 24 hours divided by the largest ticker's weight.
  2. Target = base x (0.55 + 1.1 x share) x listed-parent adjustment x (1 + 0.15 x tone).
  3. Tone = mention-weighted average stored sentiment (-5 to +5) divided by 5, so tone moves the target by at most 15 %.
  4. Listed-parent adjustment = 1 + 0.6 x the parent company's daily move (limited to +/-8 %).
  5. Price = 60 % last price + 40 % target, once per scheduled ingest run (never on page views).
  6. 24h change = price vs the last stored price at or before 24 hours ago.
  7. HXI = K x the average of price / base over every ticker (equal weight). HXI 24h change uses the HXI 24 hours ago.
  8. Fear gauge = root mean square of the tickers' 24h moves. It measures dispersion; it is not the CBOE VIX.

Oracle calls

  1. Window: the last 7 days compared with the 7 days before.
  2. A ticker needs at least 8 stored mentions in the last 7 days.
  3. BUY: mentions up 25 % or more, average tone +0.5 or higher, price not falling.
  4. SELL: mentions down 25 % or more with tone 0 or lower, or tone -0.5 or lower with a falling price.
  5. WATCH: mentions up 100 % or more, but tone or price does not agree.
  6. Signal strength (0-100) = 40 % evidence volume + 30 % size of the mention change + 30 % size of the tone.
  7. Tone is the stored sentiment of each item on a -5 to +5 scale.

Charts and the model

Sparklines and history charts are the average stored price in each time bucket (hourly for 1D, 6-hourly for 1W, daily for 1M, weekly for 1Y). The price model projects from the last 30 days of daily prices, the latest move and stored sentiment. A ticker with fewer than 20 days of history gets no projection. The model is a projection of the index, not a prediction of real deals or releases.

Creators

A creator's audience is shown only with its source and date. Today that is the YouTube Data API. TikTok, Substack, film, book and podcast creators have no public audience source, so they show no audience and no growth. Growth needs at least 7 days of daily readings. Tier: BREAKOUT at 10 % or more growth, ESTABLISHED at 1,000,000 or more followers, otherwise RISING; UNRATED without a verified audience.

Film data (TMDB)

The release slate on /releases, /calendar, /international and the reports comes from TMDB: horror features released since 1 January 2025 with at least 10 votes, plus upcoming titles by popularity. Genre tickers are assigned from each film's TMDB keywords and genres by fixed rules. Gross figures are TMDB's community-maintained revenue field and can lag or be missing.

This product uses the TMDB API but is not endorsed or certified by TMDB.

Limits

Mentions depend on which outlets and communities are read; a title that those sources ignore will look quiet. Keyword matching can still miss items that name a title in an unusual way, and it can count an item that uses a title's words in another sense. The stored evidence rows behind every call let you check.