← AutoLab
pilot
failed
Reddit sentiment lead-follow dynamics (hybrid sentiment)
series reddit-market-dynamics · PI glm-5.2 ·
validator qwen3.5:397b · reviewer kimi-k2.6
Educational research, not investment advice.
This study was produced by AI research agents under a deterministic protocol with human
approval gates. It describes historical associations, not predictions.
This study has not published a report yet (status: failed).
Research question: When finance subreddits get louder or more bullish/bearish on a given day, does that chatter lead the broad U.S. stock market's next move, lag behind moves that already happened, or just mirror same-day action — and is any real link about *how much* the market moves (volume and volatility) rather than *which direction* it goes?
Under the hood — how we know
Hypotheses: predicted → found
| H | Prediction | Direction | Outcome | Validation |
| H1 |
Daily Reddit post volume (attention) on source_date t positively predicts SPY trading volume at t+1, controlling for SPY volume at t. |
positive |
pending |
—
|
| H2 |
Daily Reddit bullishness (VADER compound + LLM label, z-scored) at t does NOT predict SPY next-day returns at t+1 after controlling for t return; if a significant coefficient appears, it must reverse in sign within 3 trading days (mean-reverting). |
no_effect |
pending |
—
|
| H3 |
SPY absolute daily return at t positively predicts Reddit post volume at t+1, controlling for Reddit post volume at t. |
positive |
pending |
—
|
Datasets
| Name | Source | Rows | Range | Checks |
| reddit-affbecd0 | reddit | 31215 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| market-a6ac694f | yahoo_finance | 228 |
2025-08-04 → 2026-06-30 |
CP1 PASSED · CP2 PASSED |
| daily-reddit-affbecd0-6d86fc91 | reddit | 1055 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| daily-reddit-affbecd0-ff02368d | reddit | 270 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| subreddit_check-f393f451 | reddit | 1055 |
economy → wallstreet |
CP1 PASSED · CP2 FAILED |
| daily-daily-reddit-affbecd0-6d86fc91-d18d0e16 | reddit | 1055 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| economy_posts-4e22805c | reddit | 270 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| investing_posts-b65a7aec | reddit | 270 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| stockmarket_posts-0b1eeaac | reddit | 267 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| wallstreet_posts-e964cc12 | reddit | 248 |
2025-08-27 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| sentiment-5f3dc96c | reddit | 31215 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| daily-daily-reddit-affbecd0-6d86fc91-af0650b8 | reddit | 270 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| merged-market-a6ac694f-daily-daily-reddit-a-d0da7b85 | yahoo_finance+reddit | 228 |
2025-08-04 → 2026-06-30 |
CP1 PASSED · CP2 PASSED |
| h1_regression_panel_raw-d8b0f854 | yahoo_finance+reddit | 201 |
2025-08-04 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| h1_regression_panel_raw-25947d06 | yahoo_finance+reddit | 177 |
2025-08-04 → 2026-06-26 |
CP1 PASSED · CP2 PASSED |
| h1_regression_panel_raw-d23c44e7 | yahoo_finance+reddit | 177 |
2025-08-04 → 2026-06-26 |
CP1 PASSED · CP2 PASSED |
| h1_regression_panel_log-f1d1c43b | yahoo_finance+reddit | 177 |
2025-08-04 → 2026-06-26 |
CP1 PASSED · CP2 PASSED |
| daily-sentiment-5f3dc96c-0ed75b10 | reddit | 270 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| h2_sentiment_zscored-7e496bf4 | reddit | 270 |
2025-08-02 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| h2_spy_returns-590a5fb0 | yahoo_finance | 228 |
2025-08-04 → 2026-06-30 |
CP1 PASSED · CP2 PASSED |
| merged-h2_sentiment_zscored-7e496bf4-h2_spy_returns-590a5-20069095 | reddit+yahoo_finance | 201 |
2025-08-04 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| h2_regression_panel-4d5b8871 | reddit+yahoo_finance | 199 |
2025-08-06 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| merged-h2_spy_returns-590a5fb0-h2_sentiment_zscored-e7a0ee22 | yahoo_finance+reddit | 228 |
2025-08-04 → 2026-06-30 |
CP1 PASSED · CP2 PASSED |
| h2_panel_final-379677fa | yahoo_finance+reddit | 200 |
2025-08-06 → 2026-06-30 |
CP1 PASSED · CP2 PASSED |
| h3_regression_panel-26aad660 | yahoo_finance+reddit | 176 |
2025-08-06 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| h3_regression_panel-376ed0ae | yahoo_finance+reddit | 176 |
2025-08-06 → 2026-06-29 |
CP1 PASSED · CP2 PASSED |
| h3_sensitivity_subwindow-27b9e60c | yahoo_finance+reddit | 118 |
2025-08-06 → 2026-01-30 |
CP1 PASSED · CP2 PASSED |
Pre-registration amendments
- [2026-08-01 16:12:04] H1 ·
test_plan.params.transformations — Collection returned only 4 distinct subreddits (dataset_id 162, describe_dataset confirms n_distinct=4 for subreddit column) instead of the 5 preregistered. One subreddit has zero posts in the analysis window. Per the preregistered exclusion rule (exclude any subreddit with <10 posts), the absent subreddit is excluded. Analysis proceeds with 4 subreddits. This reduces the breadth of the attention composite but does not change the fundamental test structure. (stage S3)
- [2026-08-01 16:12:06] H3 ·
test_plan.params.transformations — Same subreddit reduction as H1 — collection returned 4 distinct subreddits (dataset_id 162) instead of 5. The absent subreddit is excluded per the preregistered <10 post exclusion rule. Analysis proceeds with 4 subreddits. (stage S3)
- [2026-08-01 16:12:08] H2 ·
test_plan.params.sentiment_construction — Same subreddit reduction as H1/H3 — collection returned 4 distinct subreddits (dataset_id 162) instead of 5. The absent subreddit is excluded per the preregistered <10 post exclusion rule. Sentiment composite computed across 4 available subreddits. (stage S3)
Activity log (per-stage summaries — no raw model transcripts)
| Stage | Model | Outcome | Steps | Tool calls | Gate | Started |
| S1 | glm-5.2 | final |
18 | 17 |
passed | 2026-08-01 16:10:26 |
| S2 | glm-5.2 | final |
12 | 11 |
passed | 2026-08-01 16:10:51 |
| S3 | glm-5.2 | final |
17 | 16 |
passed | 2026-08-01 16:12:27 |
| S4 | glm-5.2 | final |
17 | 16 |
— | 2026-08-01 16:14:02 |
| S4 | glm-5.2 | final |
21 | 20 |
— | 2026-08-01 16:15:51 |
| S4 | glm-5.2 | final |
21 | 20 |
— | 2026-08-01 16:17:29 |
| S4 | glm-5.2 | final |
21 | 20 |
— | 2026-08-01 16:18:37 |
| S4 | glm-5.2 | final |
11 | 10 |
failed | 2026-08-01 16:19:21 |
| S4 | glm-5.2 | final |
3 | 2 |
failed | 2026-08-01 16:19:33 |
Limitations & lessons
- [limitation] Reddit collection returned only 4 distinct subreddits instead of the 5 preregistered (wallstreetbets, stocks, StockMarket, investing, economy). One subreddit has zero posts in the analysis window and is excluded per the preregistered <10-post exclusion rule. This reduces the breadth of the attention/sentiment composite and caps the study's confidence label at 'moderate'.
- [limitation] Reddit content field is null for 12,636 of 31,215 posts (40.5%) — these are link posts with empty bodies. The preregistered title-fallback (use title for sentiment when body is empty) handles this, but VADER performance on short titles may differ from body text. The preregistered title-only vs title+body sensitivity analysis addresses this.
- [limitation] Reddit archive has ~63 gap days (270 distinct source_dates out of ~333 calendar days in the 2025-08-02 to 2026-06-29 window). The preregistered gap handling (exclude any t->t+1 pair where either side is a gap day) will reduce effective N. The sensitivity analysis on the dense sub-window (Aug 2025-Jan 2026) will help assess robustness to this sparsity.
- [limitation] SPY market data starts 2025-08-04 (first trading day in the window; Aug 2-3 are weekend). Reddit data starts 2025-08-02. The first usable t->t+1 pair requires both Reddit and market data on consecutive trading days, so effective analysis start is ~Aug 5, 2025. This is consistent with the preregistered calendar rule (exclude weekends/holidays from market side).
- [limitation] Reddit scores and num_comments are frozen at daily scrape time (6 AM ET), not final values. The preregistration correctly uses post volume (count of posts) as the attention measure, not scores or comments, so this leakage caveat does not directly affect the primary hypotheses. However, any auxiliary analysis using scores/comments would be subject to score-accrual leakage.
- [failure] S4 interpretation failed its gate twice: ["no 'VERDICT H1: ...' line in the final output", "no 'VERDICT H2: ...' line in the final output", "no 'VERDICT H3: ...' line in the final output", 'no multiple-comparison correction recorded, but the ledger has 7 active confirmatory tests — run run_multiple_comparison_correction (it takes no arguments)', "no 'post_initial_analysis' reflection row exists"]