Period

Tracking retail investor sentiment on Reddit with R-RISI.

R-RISI turns the full corpus from 14 finance, investing, and crypto subreddits (full sample) into a daily sentiment signal. GPT models classify each post; engagement weights and rolling z-scores aggregate the labels into the indicator introduced in the accompanying working paper.

Latest snapshot
Core indicators

Subreddit sentiment, topical drivers, and comparison series

The wide chart decomposes a selected subreddit’s R-RISI—or either the four-investing-community aggregate or the ten-community non-crypto aggregate—into topic contributions. The lower panels compare a selected R-RISI series with rolling market-price, uncertainty, or risk z-scores and show how discussion topics change within any of the 14 subreddits. Switch the driver chart between daily unsmoothed, weekly 7-day-smoothed, and monthly 30-day-smoothed views. Use the Period slider, calendar inputs, or Range buttons to set a common time window. Range shortcuts through 6M use unsmoothed sentiment; 1Y through 5Y use 7-day smoothing; horizons longer than 5Y use 30-day smoothing. Open Source & notes for definitions, date range, frequency, smoothing, and downloads.
See more on topics across subreddits →, more on sentiment →, or how to interpret R-RISI →.

Explore the dashboard

Explore R-RISI in depth

Explore the conversations, sentiment, tickers, methods, external benchmarks, data, and research behind R-RISI.

Subreddit topic composition

How discussion topics evolve across 14 communities

GPT assigns each post to equities, funds, options, macro, commodities, crypto, geopolitics, tariffs, or other. The charts are grouped into Finance, Crypto, and Other communities and report each topic’s share of posts. Short range presets switch to Weekly. Weeks and months are labelled by their start date, and the current period includes posts available through the Reddit data date above.

Experimental classifications

Other insights (BETA)

These exploratory charts describe the regional focus, market emotion, implied trade direction, and implied time horizon of Reddit posts. Each panel reports the share of posts assigned to every category, so the stacked bands sum to 100%.

BETA Interpret with particular caution

All four dimensions are inferred by GPT from the language of each post. They are substantially more interpretative—and harder to infer reliably—than sentiment, broad topic, or explicit ticker mentions.

They are provided for exploratory information only. Regional focus is not the author’s location; trade direction is not an observed position; time horizon is not a verified holding period; and market emotion is an interpretation of wording rather than a psychological measurement.

Regional focus

Which part of the world is being discussed?

The label describes the geographic focus of the post—not the residence or location of its author.

Market emotion

How is the market mood framed?

Posts are classified from panicked and fearful through neutral to optimistic and euphoric language.

Trade direction

Does the post imply a directional stance?

Long, short, and hedged labels capture inferred positioning language; neutral and unclear retain posts without a sufficiently interpretable stance.

Time horizon

What investment horizon does the post imply?

Intraday, short-, medium-, and long-term labels describe the inferred horizon of the discussion; unclear retains posts without a reliable horizon signal.

R-RISI indicators

Retail sentiment across communities, topics, and assets

Each indicator compares standardised, engagement-weighted positive and negative daily totals. Use the panels below to test whether a change in aggregate sentiment is broad-based, concentrated in one subreddit or topic, or tied to a particular market or ticker basket. Smoothing and date controls apply consistently across the page. How to interpret R-RISI →

Sentiment vs comparison series

Subreddit R-RISI overlaid on market, uncertainty, and risk z-scores

The default combines r/wallstreetbets, r/stocks, r/StockMarket, and r/investing against the S&P 500. Select an individual subreddit or the four-community aggregate, choose a comparison series, and apply the same smoothing to both z-score series. Selecting r/Economics defaults to the daily US Economic Policy Uncertainty index; selecting r/geopolitics defaults to the daily Geopolitical Risk index.

By community

Sentiment per subreddit

Fourteen subreddit-level indicators show whether sentiment shifts are widespread or concentrated in a particular community.

By topic

Sentiment per topic

Eight topic-filtered indicators compare sentiment in equities, funds, options, macro, commodities, crypto, geopolitics, and tariffs.

Asset filters

Sentiment by company, thematic basket, and asset

Compare net sentiment for heavily discussed companies, the Magnificent Seven, semiconductors, crypto-linked equities, Bitcoin, gold, silver, and oil—alone or alongside a selected market-price z-score.

Looking for which names the crowd talks about? See the Tickers page →.
Cross-community correlation

How closely do subreddit sentiment series move together?

The upper triangle groups the four investing communities first, the four crypto communities second, and the remaining six communities alongside them. The investing-versus-crypto square reports their cross-group correlations without duplicating the lower half of the matrix.

Ticker attention

Which assets dominate Reddit discussion?

GPT extracts tickers from each post’s context, capturing explicit symbols as well as company or asset names written out, common slang, and recognisable misspellings. Rankings and frequency-scaled word clouds then count distinct posts containing each extracted ticker across selectable windows, community aggregates, and individual subreddits.

Community aggregates

Finance and crypto ticker attention

Side-by-side word clouds compare the four investing communities with a crypto mix containing only r/CryptoCurrency and r/CryptoMarkets.

Subreddit detail

Ticker mentions for each community

Select any of the 14 subreddits and a time window to inspect its most-mentioned tickers.

Ticker-count ranking

Most-mentioned tickers by period

Select a period from the latest available day to the full sample and compare the leading tickers by distinct post count.

Methodology

From a Reddit post to a daily signal

The five-stage indicator pipeline collects Reddit submissions, assigns GPT labels, filters the observations used for sentiment indicators, weights engagement, and aggregates the results into daily signals. Topic-composition and descriptive-data charts retain the complete corpus.

Transparency acknowledgement. The principal API-based data labelling was performed with the European Central Bank's LLM API. The outputs generated therein and the subsequent views reflected in the paper are solely those of the authors and do not reflect those of the European Central Bank.
Five-stage pipeline

Collection, classification, cleaning, weighting, and aggregation

1

Reddit posts

Public posts from 14 finance, investing, and crypto subreddits
r/wallstreetbets, r/stocks,
r/StockMarket, r/investing,
r/Bitcoin, etc.
2

AI classification

AI
GPT assigns three dimensions to each post:
Sentiment: Positive, Neutral, Negative
Topic: Equities, Funds, Macro, Options, Commodities, Geopolitics, Tariffs, Crypto, Other
Ticker / asset
3

Cleaning

Clean for relevance
For sentiment indicators, require both sentiment and topic confidence of at least 70% and remove topic “other” (e.g. investing-unrelated posts such as moderator announcements).
4

Weighting

More attention =
more weight
Based on Reddit score and number of comments.

Logarithmic weighting.
Score is Reddit’s displayed net post score at the observed snapshot; it is not a raw upvote count. Comments is the observed number of comments on the post at that snapshot.
5

Daily indicators

Aggregate into daily sentiment and topic indicators
Filter for different asset groups, topics, or specific tickers
MAIN OUTPUT
Broad retail investor sentiment

Aggregate sentiment across the investing subreddits.

Topic indicators

Sentiment by topic (e.g. Equities, Macro, Crypto, Geopolitics).

Ticker / asset-group indicators

Sentiment by ticker or asset group (e.g. TSLA, semiconductors, gold, Bitcoin).

Detailed methodology (broad indicator): sum post-level engagement weights by day, subreddit, and sentiment label; standardise each series using its previous 365 days; then compute R-RISI = positive z-score − negative z-score.
Model and data provenance

Data sources and labelling models

The dashboard uses a monthly Pushshift data set and a scraped interim update. The table records the source and exact model used for each.

Data vintageCoverageReddit sourceLabelling modelDashboard use
Monthly data set
Final
Through the latest complete monthly archive Pushshift archive via Academic Torrents ↗ Through December 2025: GPT-5.1 via the OpenAI API. From January 2026: GPT-6.1 Sol. Final monthly dashboard data.
Scraped interim data
Preliminary
After the latest complete monthly archive Reddit Data API collection documentation ↗ From October 2026: Codex with GPT-6.1 Sol. Current update until the next monthly data set replaces the overlapping period.
Scraped interim counts can be lower because the live Reddit listing does not reproduce every post retained by the monthly archive. Each new monthly data set replaces the overlapping scraped period.
From 1 January 2026 (UTC), all dashboard statistics exclude posts with the title [ Removed by moderator ].
Indicator definitions

From engagement weights to the daily R-RISI

Engagement weight
w(react)i = ln(1 + scorei) + ln(1 + commentsi)
Each post i receives a logarithmic reaction weight based on its Reddit score and number of comments.
Daily engagement-weighted sentiment total
W(react)t,s,l = ∑i ∈ (t,s,l) w(react)i
For each day t, subreddit s, and sentiment label l, sum the reaction weights of all posts assigned to that combination. The same definition applies when s is an aggregate of selected subreddits.
365-day rolling z-score standardisation
z(react)t,s,l = W(react)t,s,l − μ(react)t,s,l,365σ(react)t,s,l,365 (4)
μ(react)t,s,l,365 and σ(react)t,s,l,365 are the rolling mean and standard deviation of the weighted daily totals over the previous 365 days, calculated within subreddit s or the selected subreddit aggregate.
Net sentiment: R-RISI
R-RISI(react)t,s = z(react)t,s,positive − z(react)t,s,negative
Net sentiment is the standardised positive total minus the standardised negative total. Neutral-labelled posts remain in the corpus but do not enter this positive-minus-negative calculation. Topic-, ticker-, and asset-specific indicators repeat the same construction after filtering the posts.
The reference window contains the 365 preceding UTC calendar days and excludes the current day; no-post days enter as zero, and the sample standard deviation is used. A complete reference window is required. Very new or low-activity communities can produce unusually large z-scores when their historical variance is close to zero; interpret these values relative to that community’s own history.
Full definitions, validation and results are in the working paper “When the Crowd Speaks: AI-based retail investor sentiment indicator with Reddit data” ↗.
🕒 Daily time convention. Reddit posts are assigned to full UTC calendar days using their submission timestamps, and market observations are aligned to the corresponding UTC date. Every post within the 24-hour UTC day is retained; no market-hours filter is applied.
How to interpret R-RISI

Reading the indicator

R-RISI measures whether engagement-weighted positive discussion is unusually strong or weak relative to engagement-weighted negative discussion, compared with the series’ own recent history. Positive and negative engagement totals are standardised separately using their preceding 365 days; R-RISI then subtracts the standardised negative total from the standardised positive total.

Above zero

Positive engagement is stronger relative to its historical norm than negative engagement is relative to its norm.

Below zero

Negative engagement is stronger relative to its historical norm than positive engagement is relative to its norm.

Near zero

The two standardised components broadly balance. This does not imply neutral discussion, no activity, or an even split of positive and negative posts.

Larger magnitude

A larger absolute value indicates a more unusual imbalance relative to recent history.

Smoothing

Smoothed series emphasise persistent changes. The unsmoothed series reacts faster to individual days but is more volatile.

Reading topical drivers

Each segment is a topic’s exact additive contribution to the selected R-RISI value. For topic k, the contribution is its positive engagement surprise scaled by the aggregate positive-series volatility, minus its negative engagement surprise scaled by the aggregate negative-series volatility:
Ct,s,k = Wt,s,k,+ − μt,s,k,+,365σt,s,+,365 − Wt,s,k,− − μt,s,k,−,365σt,s,−,365
R-RISIt,s = ∑k ∈ K Ct,s,k   and   C(h)t,s,k = 1h ∑j=0h−1 Ct−j,s,k,  h ∈ {1, 7, 30}.
W is the topic-specific engagement-weighted total; μ is that topic total’s preceding-365-day mean; and σ is the preceding-365-day standard deviation of the corresponding positive or negative total across all included topics. This shared denominator makes the topic contributions sum exactly to R-RISI.
A negative contribution means that the topic pulled the indicator lower relative to its historical pattern. It does not mean that every post in that topic was negative, and it is not a causal effect.
Example: R-RISI = 1.2. Positive engagement is 1.2 standardised balance points stronger than negative engagement relative to their respective recent norms. For example, this could result from a positive z-score of 0.8 and a negative z-score of −0.4. It does not mean that sentiment is 1.2 standard deviations above the mean or that 60% of posts are positive.
Example: macro contribution = +0.02. Macro discussion adds 0.02 R-RISI index points to that observation. If total R-RISI is 1.20, the remaining topics sum to 1.18. It is not 2% of posts or a 2% change in sentiment. In a smoothed view, 0.02 is the macro contribution averaged over the selected 7-day or 30-day window.
Classifier comparison

Why GPT-5.1 was chosen for the pre-2026 corpus

We benchmarked three classifiers for the historical corpus. In this comparison, FinBERT assigns a substantially larger share of posts to neutral, while GPT-4o (titles only) and GPT-5.1 (titles + body) produce more differentiated sentiment distributions. By default, all three classifiers are shown from their common starting point in 2015. FinBERT and GPT-4o are available through December 2025. The GPT series uses GPT-5.1 through December 2025 and GPT-6.1 Sol from January 2026, and continues through the latest dashboard week. Moving the Period start before 2015 reveals the available earlier GPT-5.1 observations.

Confidence

Label confidence & the 0.7 filter

The distributions report model-assigned confidence for sentiment and topic labels. The 0.7 filter applies to sentiment indicators only; topic-composition and descriptive-data charts remain unfiltered.

External benchmarks

How R-RISI compares with established retail-investor indicators

The four-community broad R-RISI aggregates r/wallstreetbets, r/investing, r/stocks, and r/StockMarket. Compare it with the weekly AAII bull–bear survey spread and the monthly Schwab Trading Activity Index (STAX). The series measure different populations and concepts, so the charts are descriptive validation—not an identity test or causal estimate.

Corpus coverage

The full corpus from 14 subreddits, full sample

The corpus charts describe daily and weekly volume, participation by distinct observed author identifiers, weekday and intraday posting patterns, and differences in activity across communities.

Community statistics

Descriptive statistics by subreddit

Each subreddit has separate rows for daily post counts, title length, comment count, and Reddit score, with the complete set of conventional summary statistics.

Research team

Authors, paper, and applications of R-RISI

FW

Fabian Wagner

JM

Julian Metzler

Shared contact for both authors
Questions, feedback, suggestions for improvement, and new ideas are welcome.
Research use

Publications and presentations

Nov 2025
Financial Stability Review, ECB (November 2025) — an earlier r/wallstreetbets-only, GPT-4o version of the indicator appeared in “The role of household investors in market downturns” ↗.
Working paper
When the Crowd Speaks: AI-based retail investor sentiment indicator with Reddit data ↗
A high-frequency measure of retail-investor sentiment from Reddit discussion, built from GPT labels, engagement weights, and rolling z-scores.
4–5 Jun 2026
Presented at the Barcelona School of Economics Summer Forum 2026 — workshop “Information Exchange and Trading in the Age of AI and Social Media: Theory and Experiments” ↗ (4–5 June 2026).
18–19 Sep 2026
Presentation at the Research in Behavioral Finance Conference (RBFC) 2026 ↗, Vrije Universiteit Amsterdam (18–19 September 2026).
Legal notice & privacy

Impressum & Datenschutzerklärung / Privacy policy

Provider information and details on how this website handles personal data under the GDPR (DSGVO).

Questions & feedback

Contact us

Questions, feedback, suggestions for improvement, or new ideas are welcome.

Fabian Wagner & Julian Metzler
This form opens a prepared draft in your own email client — nothing is stored or sent automatically. You can also find Fabian Wagner and Julian Metzler on LinkedIn.