← All projects

Natural language processing and forecasting · 2026

Bitcoin Topic Modelling, Sentiment & Volatility

An end-to-end natural-language-processing study that maps Bitcoin discussion themes, measures daily sentiment and tests whether social signals improve next-day volatility forecasts.

PythonPandasVADERNMF / LDAScikit-learnyfinance
BITCOIN NLP / 20226 TOPICS · 3 FORECASTS
Largest topic share59.9%Crypto / Ethereum discussion
Crypto / Ethereum59.9%
Expressive language19.0%
Check-mark patterns9.1%
Index / pointing6.0%
Lightning network3.6%
Promotional cluster2.3%
−0.153 Baseline test R²−0.184 Sentiment test R²Finding: no reliable forecast gain

Central question

Can daily Bitcoin tweet sentiment improve next-day volatility prediction beyond market-only features?

01

Project overview

This project links tweet-level language with daily Bitcoin market data, moving from data auditing and text preparation to topic discovery, sentiment scoring and time-aware model evaluation.

The aim was not to force a positive result. The analysis tests whether sentiment adds genuine predictive value over market variables and keeps the limitations visible when it does not.

102,896tweets scored

144 observed sentiment days

60,637unique texts modelled

Final six-topic NMF solution

59.91%largest topic share

Broad crypto / Ethereum cluster

−0.153best test R²

Market-only baseline; all models were negative

Evidence summary

The findings behind the conclusion

Five visuals and two compact tables summarise the data, model comparisons and forecasting results.

01 · Data audit

A large tweet dataset became a small daily forecasting sample

The distinction between tweet-level scale and time-series sample size shaped every modelling decision.
Verified dataset and modelling coverage
MeasureResultHow to read it
Tweets scored102,896VADER sentiment pipeline
Unique cleaned texts60,637Input to final topic model
Observed sentiment days1447 Apr-30 Aug 2022
Typical daily capture720Median tweets per observed day
Model-ready days137After market alignment and rolling features
Chronological test days283-30 Aug 2022

What it showsThe sentiment pipeline scored 102,896 tweets across 144 observed days. Rolling features and market alignment produced 137 model-ready daily rows, including a 28-day chronological test period.

Why it mattersThousands of tweets on one day do not create thousands of independent forecasting observations. The effective sample for next-day volatility was daily, not tweet-level.

LimitationDaily capture was concentrated near 720 tweets and 19-20 July had no daily rows. Tweet volume is therefore a collection measure, not a complete proxy for public attention.

02 · Topic modelling

One broad crypto theme dominated the conversation

The final six-topic NMF solution revealed a highly uneven mix of broad crypto language, expressive posts and smaller promotional clusters.
Horizontal bar chart showing the broad crypto and Ethereum topic at 59.91 percent, expressive emoji discussion at 18.99 percent, and four smaller topics.

What it showsBroad crypto and Ethereum language accounted for 59.91% of unique cleaned texts. Expressive emoji discussion contributed 18.99%, while the remaining four themes each represented less than 10%.

Why it mattersThe discourse was not organised into equally distinct Bitcoin narratives. A large general-crypto cluster can dilute any relationship between a narrow Bitcoin signal and market volatility.

LimitationThe public-facing topic names are interpretations of keyword clusters. They improve readability without changing the fitted model, yet they are not hand-coded semantic categories.

03 · Sentiment profile

Positive language was common, not automatically predictive

VADER classified tweet tone at the observation level before the scores were aggregated into daily forecasting features.
Stacked bar chart showing 48.3 percent positive, 36.3 percent neutral and 15.4 percent negative tweets among 102,896 VADER-scored tweets.

What it showsPositive tweets formed 48.3% of the sample, neutral tweets 36.3% and negative tweets 15.4%. The mean compound score was 0.220, while the median was zero.

Why it mattersA positive overall tone establishes the dataset's baseline. Forecasting depends on changes in that tone and their timing, not on the positive share alone.

LimitationThe exported 100-tweet manual-validation sample has not yet been labelled. No human-verified VADER accuracy estimate is presented, and multilingual or promotional posts may be misclassified.

04 · Sentiment and volatility

The daily relationships were weak

Pearson correlations provide a transparent first view of how the sentiment features moved with next-day absolute return.
Diverging bar chart of correlations between eight daily sentiment features and next-day absolute Bitcoin return, all between minus 0.176 and plus 0.126.

What it showsMean polarity had the largest negative correlation with next-day absolute return (r = −0.176). Negative tweet share had the largest positive correlation (r = 0.126), while tweet volume was close to zero (r = 0.034).

Why it mattersThe directions are plausible-more negative language aligned with slightly larger next-day moves-yet the magnitudes are too small to establish a strong standalone signal.

LimitationThese bivariate correlations do not control for market conditions, feature overlap or changing relationships through time. They describe association, not causation.

05 · Out-of-sample model comparison

Sentiment changed the ranking signal, not the forecast error

A market-only linear model was compared with sentiment-enhanced linear and random-forest alternatives on the final 28 days.
Chronological 28-day test performance
ModelMAERMSESMAPECorrelationHigh-vol. accuracy
Market-only linear1.75%2.27%81.6%−0.153−0.02232.1%
Market + sentiment linear1.78%2.30%79.6%−0.1840.25635.7%
Market + sentiment forest1.78%2.33%79.9%−0.218−0.02635.7%

What it showsThe market-only baseline achieved the lowest MAE and RMSE. Adding sentiment raised prediction correlation to 0.256 and high-volatility accuracy to 35.7%, while MAE, RMSE and R² all moved in the wrong direction.

Why it mattersNo enhanced model delivered a dependable forecasting gain. All three test R² values were negative, meaning they underperformed a constant test-mean prediction on that metric.

LimitationThe test set covers only 28 consecutive days. Results may be sensitive to the particular volatility events in August 2022 and require rolling-window validation over a longer period.

06 · Forecast trace

The models smoothed over the largest shocks

A day-by-day comparison shows why the aggregate error metrics remained weak.
Line chart comparing actual next-day absolute return with three forecasts from 3 to 30 August 2022. Actual volatility spikes sharply while predictions remain comparatively smooth.

What it showsThe largest observed targets reached 10.6% and 6.4%, while all three forecasts remained mostly between 2% and 4%. The models followed a narrow central band rather than the sharp changes in realised absolute return.

Why it mattersA volatility model must recognise extreme moves, not only the average level. Missing the largest events limits its value for risk management and decision-making.

LimitationThe chart covers one short holdout period and uses next-day absolute return as the volatility proxy. Alternative targets and longer evaluation windows may lead to different conclusions.

07 · Model interpretation

Sentiment entered the forest, yet no feature rescued performance

Feature importance helps explain what the random forest used; it does not overturn the weak out-of-sample result.
Horizontal bar chart ranking the top eight random-forest features, led by current-day log return, mean polarity, seven-day rolling volatility and negative tweet share.

What it showsCurrent-day log return ranked first at 12.3%, followed by mean polarity at 11.9%, seven-day rolling volatility and negative tweet share at roughly 11.4% each.

Why it mattersThe model drew on both market and social features rather than ignoring sentiment completely. Predictive use still did not translate into lower test error.

LimitationImpurity-based importance can favour features with more split opportunities and does not indicate effect direction, stability or causality.

02

A data-quality finding that changed the analysis

Daily tweet counts clustered around 720 observations, indicating a fixed-rate collection process rather than a complete measure of public attention. No daily sentiment rows were available for 19 and 20 July 2022. Tweet volume was therefore retained with a clear warning and was not treated as an unrestricted proxy for market interest.

Topic modelling and sentiment analysis used different cleaning rules. Topic text was normalised to reveal themes, while sentiment text retained capitalisation, punctuation, negation and emojis that VADER uses as intensity signals.

03

Topic modelling findings

The six-topic solution was dominated by a broad crypto and Ethereum cluster, representing 59.91% of unique cleaned text. A second cluster, driven largely by expressive emoji language, represented 18.99%. The remaining groups were smaller and included check-mark, lightning-network and promotional patterns.

The result was analytically useful even though several automatic labels were noisy: it showed that the conversation was broad, repetitive and partly promotional rather than a clean set of distinct Bitcoin market themes.

04

Forecasting result

A market-only linear baseline was compared with a market-plus-sentiment linear model and a random forest using a chronological 80/20 split. Every feature row used information available by the end of day t, while the target was next-day absolute return, preventing future information from entering the predictors.

Sentiment increased prediction correlation from −0.022 to 0.256 and raised high-volatility classification accuracy from 32.1% to 35.7%. It did not improve MAE, RMSE or out-of-sample R². All three R² values were negative, so the honest conclusion is that this feature set did not produce a reliable next-day volatility forecast.

05

What the project demonstrates

The strongest result is the workflow itself: careful data auditing, purpose-specific text preprocessing, reproducible topic evaluation, leakage-aware forecasting and restrained interpretation. The project shows that a technically complete analysis can still end with a defensible negative result.

  • Audited collection gaps and identified the fixed-rate sampling pattern.
  • Compared LDA and NMF topic representations using coherence, diversity and stability evidence.
  • Built transparent daily VADER sentiment features and exported a reproducible 100-tweet validation sample for manual labelling.
  • Evaluated market-only and sentiment-enhanced models on future observations.

People behind the project

Project contributors

Project lead

Toni Cata

Next project

Navigation-App Churn

View report