Methodology
Overview
The Political Temperature Index (PTI) is a daily measurement of US political tension on a 0-100 scale. It combines data from multiple sources to provide an objective snapshot of the political climate.
Data Sources
News Articles
We analyze 250+ articles daily from sources across the political spectrum using GDELT, NewsData.io, and Google News RSS.
Social Media
Posts from 8 politically-relevant subreddits (4 left-leaning, 3 right-leaning, 1 centrist) are analyzed for sentiment and toxicity.
Congressional Votes
Party-line voting patterns in the House and Senate are tracked via the Congress.gov API.
Sub-Indices
The final temperature is calculated from four sub-indices:
Rhetoric Heat (35%)
Measures toxicity and inflammatory language in news headlines and social posts using Google's Perspective API and GDELT tone scores.
rhetoric = (mean_toxicity × 0.4) + (mean_inflammatory × 0.4) + (gdelt_neg_tone × 0.2)Coverage Polarization (30%)
Measures how differently left vs right media cover the same stories, including "blindspot" stories covered by only one side.
polarization = coverage_skew + (blindspot_count / clusters × 0.3)Volume Signal (15%)
Detects unusual spikes in political content compared to the 30-day rolling average.
volume = sigmoid((today_count / rolling_30d_avg) - 1)Legislative Friction (20%)
Tracks party-line voting in Congress. Higher scores indicate more partisan voting.
friction = mean(party_line_scores)Temperature Scale
Frozen
0-14
Cool
15-29
Mild
30-44
Warm
45-59
Hot
60-74
Boiling
75-89
Meltdown
90-100
Source Balance
We monitor the left/right distribution of our news sources to ensure balanced coverage. If the ratio exceeds 70/30 in either direction, an alert is logged for transparency. Our source bias ratings are based on Media Bias/Fact Check and AllSides data.
Limitations
- The index measures tension, not correctness or validity of political positions
- Social media data is limited to Reddit; Twitter/X data is not included
- Sentiment analysis has inherent limitations with sarcasm and context
- Historical data begins from the launch date