Democrats won the House and the Senate on November 3. For most of the year, the social conversation looked different.

We pulled 365 days of sentiment on posts about each party with the LunarCrush CLI, lined it up against Kalshi, Polymarket and the polling averages, and asked a simple question: what did each signal show, and when?

The full study, with interactive charts and a free dataset, is at lunarcrush.com/research/midterms-2026-social-lookback. The code to rebuild every number is on GitHub.

Eight months one way, then near-even

Weekly sentiment on posts about each party, Nov 2025 to election day

Sentiment here is the engagement-weighted share of positive engagement on posts about a topic, 0 to 100, across X, Reddit, TikTok, YouTube, Instagram and 10K+ news sources. It measures the tone of the conversation about a party, whoever is posting. It is not a measure of support.

  • November to June: Republicans had the better tone in 33 of 34 weeks, by 6.6 points on average.
  • Week of July 6: both parties fell, and Republicans fell further.
  • July 6 to October 26: Republicans led 6 of 17 weeks. The average gap was +0.2.
  • October 30 to November 3: Democrats led every day to the vote.

Was July a measurement change?

That was the first thing our review panel asked. When two series drop 15 to 25 points in one week, the obvious suspect is the pipeline, not politics.

Sentiment two weeks before and after July 6, political vs non-political topics

It wasn't platform-wide. Over the same two weeks, sentiment on the economy moved 3.9 points, Texas 2.0 and inflation 1.5, and Kalshi rose 3.2. The drop sat in party and election conversation: Republicans down 24.5, Democrats 16.2, "election" 15.7.

Volume is not tone

Democratic minus Republican sentiment (bars) and Democrats' share of party engagement (line)

Democrats drew more than half of party engagement in 51 of 52 weeks, including the eight months they trailed on tone. If you only count mentions, you learn who is being argued about. The sign of the sentiment gap was the more useful read.

Social and the market

Weekly sentiment gap vs Kalshi's price for Democratic Senate control

Kalshi's price for Democratic Senate control hit its summer low of 40% on July 2. The Republican sentiment edge ended the next week. Kalshi crossed 60% on September 19 and stayed there.

We tested whether social front-ran the market. It didn't. Week to week, the sign of the gap called the direction of the next week's Kalshi move 45% of the time, and the correlation was -0.13. Within the same week, the two moved together (correlation 0.34). Social moved with the market, not ahead of it. What it adds is the posts behind each move.

The September repricing

On the evening of September 9 ET, at the Republican midterm convention in Dallas, President Trump promised a $5,000 "dividend" to every adult citizen if Republicans held both chambers. The clip drew 16.7M engagements. On September 10, sentiment about Republicans hit 74 on 278M engagements, the party's strongest day since July.

By September 12 it was back to 51. The following week, Kalshi went from 49% (Sept 13) to 60% (Sept 19). The generic ballot barely moved, from D+7.3 to D+7.8.

Election night, by the hour

Hourly party sentiment and engagement on "midterms", noon ET Nov 3 to 2pm ET Nov 4

The parties were level through 7pm ET (66 vs 65). As results came in, the gap was 8 points at 9pm and 15 at 11pm, when engagement on the two parties peaked at 171M interactions in one hour.

The same search, with and without the data

We asked an AI assistant with live web search five questions about how the race looked online, and let it estimate. It answered none from a measured figure. Its estimate for the year, that Democrats held the better tone for most of it, is the opposite of the data: Republicans led 39 of 52 weeks.

Web search only vs LunarCrush, five questions

That isn't a knock on the model. The public web has polls, prices and narratives. It doesn't have a daily, measured record of the conversation itself.

Rebuild it yourself

Everything on the page comes from public CLI calls:

curl -fsSL https://lunarcrush.ai/install.sh | bash lunarcrush login # a year of daily metrics for a topic lunarcrush topic democrats time-series --interval 1y --json lunarcrush topic republicans time-series --interval 1y --json # hourly, last month lunarcrush topic midterms time-series --bucket hour --interval 1m --json # the posts behind a move lunarcrush topic republicans posts --start 2026-09-10 --end 2026-09-11 

The repo has the full pull script, the build, and an analysis.py that prints every headline number from the shipped data. The dataset (24 topics x 365 days, a weekly party panel, and the final week by the hour, in CSV and Parquet with an AI guide) is free on the study page.

If you'd rather ask in plain English, the same data is available to Claude, ChatGPT and other assistants through the LunarCrush MCP server.

Social data pulled 19:26 UTC, Nov 4, 2026. Markets: Kalshi and Polymarket public APIs. Polls: Silver Bulletin daily averages.