Geopolitical & News Intelligence
On April 2, 2025, the United States announced a new round of tariffs targeting Chinese semiconductor exports. Within 90 minutes, Bitcoin dropped 4.2%. No technical indicator predicted this move. No RSI divergence, no BOS event, no EMA crossover preceded it. The trigger was purely geopolitical—and the traders who had no awareness of the political landscape were caught completely off guard.
Cryptocurrency markets are not isolated from the real world. Federal Reserve interest rate decisions, trade war escalations, military conflicts, regulatory announcements, and political instability all impact crypto prices—often more dramatically than technical factors. Any trading system that ignores geopolitical context is flying blind through a minefield.
Ironbrand's Geopolitical Intelligence layer (internally designated as the Political Context system) continuously monitors three independent data sources to assess political and geopolitical risk in real time: the GDELT Project for global news tone analysis, CryptoPanic for crypto-specific news sentiment, and Polymarket for prediction market probabilities on geopolitically relevant events.
Source 1: GDELT (Global Database of Events, Language, and Tone)
What GDELT Is
The GDELT Project is one of the largest open datasets of human society, monitoring news media from every country in over 100 languages. Updated every 15 minutes, GDELT processes and catalogs news articles, assigning each a "tone" score that measures the emotional valence of the text on a scale from -15 (extremely negative) to +15 (extremely positive).
GDELT is not a crypto data source—it is a global events data source. This is precisely its value: it captures the geopolitical context that crypto-specific data sources miss.
How Ironbrand Uses GDELT
Ironbrand queries GDELT's document analysis API with a combined query covering four topic areas that have demonstrated statistical correlation with crypto price movements:
GDELT Query Topics:
1. crypto: "bitcoin OR cryptocurrency OR crypto regulation"
2. tariff: "tariff OR trade war OR trade policy"
3. fed: "federal reserve OR FOMC OR interest rate
OR rate cut OR rate hike"
4. geopolitical: "sanctions OR military strike OR invasion
OR armed conflict"
Combined query: (topic1) OR (topic2) OR (topic3) OR (topic4)
Language filter: sourcelang:eng
Time window: 72 hours
API mode: tonechart (returns tone distribution bins)
Tone Analysis
The GDELT tone chart returns a histogram of article counts across tone bins. Ironbrand processes this into four key metrics:
| Metric | Calculation | Interpretation |
|---|---|---|
avg_tone |
Weighted average of tone bins | Overall news sentiment (-15 to +15) |
total_articles |
Sum of article counts across all bins | Volume of relevant news coverage |
negativity_ratio |
Articles with tone < -1 / total | What percentage of news is negative |
very_negative_ratio |
Articles with tone <= -5 / total | What percentage of news is strongly negative (alarm) |
The tone is classified into four categories:
Classification Logic:
if avg_tone <= -5 OR very_negative_ratio > 30%:
tone_label = "very_negative" // Alarm: major geopolitical event
elif avg_tone <= -2 OR negativity_ratio > 50%:
tone_label = "negative" // Elevated risk
elif avg_tone >= +2:
tone_label = "positive" // Favorable conditions
else:
tone_label = "neutral" // Normal conditions
Headlines for LLM Context
Beyond tone scoring, Ironbrand fetches the top 15 most relevant headlines from the last 24 hours using GDELT's article list mode. These headlines are fed directly into the LLM analysis prompt, giving the AI model real-time awareness of what is happening in the world:
GDELT Headlines API:
Mode: artlist
Max records: 15
Time window: 24 hours
Sort: hybridrel (relevance + recency)
Each headline includes:
- title: Article headline text
- domain: Source publication domain
- date: Publication timestamp
- tone: Individual article tone score
- url: Link to original article
When the LLM analyst receives a signal to evaluate, it sees these headlines alongside the technical data. This allows the AI to identify scenarios like: "The technical setup is bullish, but the top 5 headlines are about an imminent FOMC rate hike decision—recommend waiting until after the announcement."
Rate Limiting and Resilience
GDELT enforces strict rate limits (approximately 1 request per 5 seconds). Ironbrand handles this through multiple mechanisms:
- 30-minute cache TTL: Both tone and headline data are cached for 30 minutes, well within the rate limit tolerance
- 6-second inter-request delay: Between the tone request and the headlines request, the system waits 6 seconds to respect rate limits
- HTTP 429 handling: If rate-limited, the system immediately returns the last cached value instead of retrying
- Content-type validation: GDELT sometimes returns HTML error pages instead of JSON. The system checks the Content-Type header and falls back to cache if the response is not JSON
- Empty response handling: If the response body is empty or starts with "<" (HTML), the system uses cached data
Source 2: CryptoPanic (Crypto-Specific News Intelligence)
What CryptoPanic Is
CryptoPanic is a crypto news aggregation platform that collects articles from hundreds of sources and classifies them using a combination of algorithmic analysis and community voting. Unlike GDELT (which covers all news), CryptoPanic focuses exclusively on cryptocurrency-related content, making it the most targeted news source in Ironbrand's stack.
How Ironbrand Uses CryptoPanic
Ironbrand accesses CryptoPanic through their Developer API (v2), making multiple filtered requests to obtain categorized news data:
CryptoPanic API Requests:
1. General BTC news (unfiltered):
GET /api/developer/v2/posts/
Params: currencies=BTC, kind=news, public=true
→ Provides total news count
2. Bullish news:
GET /api/developer/v2/posts/?filter=bullish
→ Count of positively classified articles
3. Bearish news:
GET /api/developer/v2/posts/?filter=bearish
→ Count of negatively classified articles
4. Important news:
GET /api/developer/v2/posts/?filter=important
→ Breaking news and high-impact articles
→ Top 5 included in signal context
Rate limit handling: 0.5s delay between each filtered request
Cache TTL: 15 minutes
Sentiment Scoring
The sentiment score is calculated from the bullish/bearish article ratio:
sentiment_score = (bullish_count - bearish_count)
/ (bullish_count + bearish_count)
Range: -1.0 (all bearish) to +1.0 (all bullish)
Classification:
bullish: bullish > bearish * 2
bearish: bearish > bullish * 2
slightly_bullish: bullish > bearish (but < 2x)
slightly_bearish: bearish > bullish (but < 2x)
mixed: bullish == bearish
Important News Processing
Articles classified as "important" by CryptoPanic's algorithm receive special treatment. For each important article, the system extracts:
- Title: The headline text
- Sentiment: Derived from community votes (positive vs. negative, liked vs. disliked)
- Vote counts: Positive votes (positive + liked) and negative votes (negative + disliked)
- Source: The publication source
- Publication time: When the article was published
When 3 or more articles are classified as important, the political context system applies an additional -1 bias to the overall score, recognizing that a high volume of breaking news typically indicates market-moving events.
RSS Fallback
If the CryptoPanic API key is invalid, expired, or if the API returns authentication errors (401/403), the system falls back to parsing CryptoPanic's public RSS feed:
RSS Fallback:
URL: https://cryptopanic.com/news/rss/
Data available: Article count only (no sentiment classification)
Result: news_count = number of - tags in feed
sentiment_score = 0 (unknown)
sentiment_label = "unknown"
Source label: "cryptopanic_rss" (to distinguish from API data)
The RSS fallback provides degraded functionality—it can tell the system how much news activity there is, but not whether it is bullish or bearish. This is still valuable: abnormally high news volume during a period of otherwise quiet technical markets often precedes significant moves.
Source 3: Polymarket (Prediction Market Intelligence)
What Polymarket Is
Polymarket is a blockchain-based prediction market where participants trade contracts on the outcome of real-world events. Unlike traditional polls or expert opinions, prediction markets put real money behind their forecasts, creating financially incentivized probability estimates for geopolitical events.
When Polymarket shows a 73% probability of a US recession within 12 months, that number represents the collective financial commitment of thousands of traders who have staked real capital on that outcome. This makes prediction market odds among the most calibrated probability estimates available.
How Ironbrand Uses Polymarket
Ironbrand queries Polymarket's Gamma API for the top 100 active markets by 24-hour volume, then filters for markets relevant to crypto and macroeconomic conditions:
Polymarket API:
Endpoint: https://gamma-api.polymarket.com/markets
Params: closed=false, limit=100, order=volume24hr, ascending=false
Cache: 10 minutes
Keyword filter (must appear in question or slug):
bitcoin, btc, crypto, recession, tariff, fed, interest rate,
inflation, war, iran, china, sanctions, trump, economy,
gdp, default, shutdown
Categorization:
- BTC markets: question contains "bitcoin", "btc", or "crypto"
- Risk events: question contains "war", "recession", "default",
"shutdown", "sanctions", "invasion", "conflict",
"tariff" AND yes_probability > 30%
Risk Score Calculation
Polymarket data is distilled into a single risk score (0-10) that reflects the current level of geopolitical and economic risk as priced by prediction markets:
Risk Score Algorithm:
For each risk event (war, recession, sanctions, etc.):
if yes_probability > 70%: score += 3
elif yes_probability > 50%: score += 2
elif yes_probability > 30%: score += 1
if volume_24h > $1,000,000: score += 1
// High volume = market takes the event seriously
Final score = min(10, accumulated_score)
Classification:
0-3: "low" — No significant geopolitical risk
4-6: "elevated" — Some risk events with meaningful probability
7-10: "high" — Multiple high-probability risk events
Notable Events for LLM
The system selects the most significant prediction market events and formats them for the LLM analyst. These include the top 3 risk events and top 2 Bitcoin-specific markets, each with their probability and trading volume:
Example notable events passed to LLM:
"Notable prediction market events:
- Will there be a US recession in 2026? (62% prob, $4,521,000 vol)
- Will new China tariffs exceed 25%? (78% prob, $2,100,000 vol)
- Will Bitcoin reach $100K before July 2026? (45% prob)"
This gives the LLM concrete, financially-weighted probability estimates for events that could impact the trade under evaluation. If the LLM sees a 78% probability of new tariffs combined with a bullish long signal, it can reason about whether the tariff risk outweighs the technical opportunity.
The Political Context Composite Score
All three data sources feed into a composite political score ranging from -5 (very negative / high risk) to +5 (very positive / low risk). The scoring algorithm applies weighted contributions from each source:
| Condition | Source | Score Impact |
|---|---|---|
| GDELT tone "very_negative" | GDELT | -2 |
| GDELT tone "negative" | GDELT | -1 |
| GDELT tone "positive" | GDELT | +1 |
| GDELT very_negative_ratio > 25% | GDELT | -1 (additional) |
| CryptoPanic sentiment "bearish" | CryptoPanic | -1 |
| CryptoPanic sentiment "bullish" | CryptoPanic | +1 |
| CryptoPanic important_count >= 3 | CryptoPanic | -1 (breaking news = caution) |
| Polymarket risk score >= 7 | Polymarket | -2 |
| Polymarket risk score 4-6 | Polymarket | -1 |
The final political risk classification:
if score <= -3: political_risk = "high_risk"
elif score <= -1: political_risk = "elevated"
elif score >= 2: political_risk = "low_risk"
else: political_risk = "neutral"
How Political Events Impact Crypto Markets
The relationship between geopolitical events and cryptocurrency prices is complex and often counterintuitive. Here are the primary transmission mechanisms that Ironbrand's system monitors:
Federal Reserve Decisions
FOMC meetings and interest rate decisions have become the single most predictable source of crypto volatility. The mechanism:
- Rate hikes: Increase the opportunity cost of holding non-yielding assets like Bitcoin. Historically bearish for crypto in the short term. GDELT tracks "federal reserve OR FOMC OR interest rate OR rate cut OR rate hike" to detect Fed-related news surges.
- Rate cuts: Reduce yields on traditional savings and bonds, making alternative assets more attractive. Historically bullish for crypto.
- Hawkish/dovish language: Even when rates are unchanged, the tone of Fed communications moves markets. GDELT's tone scoring captures whether Fed-related articles are being written positively or negatively.
Trade Wars and Tariffs
Tariff announcements create uncertainty in global trade, which ripples through all risk assets including crypto:
- New tariff announcements: Generally bearish for risk assets in the short term. Bitcoin often correlates with the S&P 500 during tariff-driven selloffs.
- Tariff relief or negotiations: Bullish for risk assets. "Trade deal" narratives have historically preceded crypto rallies.
- GDELT query: "tariff OR trade war OR trade policy" captures tariff-related news volume and tone.
- Polymarket: Active tariff-related prediction markets provide probability estimates for specific tariff scenarios (e.g., "Will US tariffs on China exceed 25% by Q3 2026?").
Military Conflicts and Sanctions
Armed conflicts and sanctions create immediate risk-off sentiment across all markets:
- Initial shock: The first 24-48 hours of a new conflict typically see sharp selloffs in risk assets, including crypto.
- Safe haven narrative: In prolonged conflicts, Bitcoin sometimes decouples from traditional risk assets as the "digital gold" narrative activates—particularly in regions with capital controls.
- Sanctions: Economic sanctions against major economies can drive crypto adoption as sanctioned entities seek alternative financial rails.
- GDELT query: "sanctions OR military strike OR invasion OR armed conflict" captures conflict-related news.
Regulatory Actions
Crypto-specific regulation is captured primarily through CryptoPanic rather than GDELT:
- Positive regulation: ETF approvals, stablecoin frameworks, clear tax guidance. Bullish.
- Negative regulation: Exchange bans, mining restrictions, DeFi crackdowns. Bearish.
- CryptoPanic classification: Regulatory news classified as "important" triggers additional scrutiny from the LLM analyst.
Integration with the Signal Pipeline
The political context system is called during every signal evaluation cycle. The full data collection sequence:
collect_political_context() sequence:
1. GDELT tone analysis (API call, or cached)
2. Wait 6 seconds (GDELT rate limit compliance)
3. GDELT headlines (API call, or cached)
4. CryptoPanic sentiment (3 API calls with 0.5s delays)
└─ Fallback: RSS if API fails
5. Polymarket signals (1 API call)
6. Calculate composite score (weighted algorithm)
7. Format for LLM prompt (headlines + notable events)
The resulting PoliticalContext object contains all data in a structured format. Its summary() method produces a compact one-line overview for logging:
GDELT=+0.8 (neutral, 3421 art) | CryptoNews=-0.35 (slightly_bearish)
| Polymarket risk=4/10 (elevated) | POLITICAL: ELEVATED (score=-2/5)
| Reasons: News negative (tone=-2.1), Polymarket elevated risk (4/10)
The headlines_for_llm() method formats headlines and prediction market events specifically for the LLM prompt:
Recent headlines (last 24h):
- Fed signals potential rate pause at June meeting
- Bitcoin ETF outflows reach $200M amid tariff fears
- European Parliament advances MiCA enforcement framework
- China announces new digital yuan cross-border pilot
- US Treasury proposes stablecoin reserve requirements
Notable prediction market events:
- Will there be a US recession in 2026? (62% prob, $4.5M vol)
- Will new China tariffs exceed 25%? (78% prob, $2.1M vol)
- Will Bitcoin reach $100K before July? (45% prob)
The LLM's Geopolitical Reasoning
When the LLM analyst evaluates a signal, it receives the complete political context and is instructed to consider whether "the geopolitical/political context presents significant risks for the trade direction." Here is how this plays out in practice:
In this scenario, the LLM might respond:
{
"approved": false,
"confidence": 35,
"direction_bias": "neutral",
"reasoning": "Setup tecnico pulito ma contesto geopolitico
fortemente avverso. Probabilita' tariffe 78% da Polymarket,
5 breaking news bearish, GDELT tone -4.2. Rischio di gap
ribassista se tariffe annunciate. Attendere risoluzione."
}
This is the value of geopolitical intelligence: a technically sound signal rejected because the broader context makes it too risky. No indicator-only system can make this judgment.
Cache Strategy and Data Freshness
Each data source in the geopolitical layer has a tailored cache strategy balancing freshness against API rate limits:
| Data Source | Cache TTL | Update Frequency | Fallback on Failure |
|---|---|---|---|
| GDELT Tone | 30 min | Every 15 min (source) | Last cached value, then neutral default |
| GDELT Headlines | 30 min | Every 15 min (source) | Last cached headlines, then empty list |
| CryptoPanic | 15 min | Near real-time | RSS feed, then last cached, then neutral |
| Polymarket | 10 min | Near real-time | Last cached value, then neutral default |
The stale cache mechanism (get_stale()) ensures that even expired cache data is preferred over returning default neutral values. If GDELT was last successfully queried 2 hours ago, that 2-hour-old data is still more informative than a hardcoded neutral default. The system always prefers real data, even if aged, over synthetic defaults.
Real-World Performance: Case Studies
Case 1: FOMC Rate Decision (March 2026)
48 hours before the March 2026 FOMC meeting, GDELT detected a surge in Federal Reserve-related articles with an average tone of -3.8. CryptoPanic showed 4 important articles about expected hawkish language. Polymarket had a "Fed holds rates steady" contract at 65%. The political score was -3 (high risk). The system flagged all signals for the 48-hour window around the meeting as requiring elevated confidence thresholds. Three technical long signals were rejected. Two of three would have been stopped out during the post-announcement volatility.
Case 2: Tariff Escalation (January 2026)
GDELT captured a negativity ratio spike to 58% on tariff-related news. Polymarket's tariff contract surged from 45% to 72% in 24 hours. The system's political score dropped to -4. A bearish short signal that aligned with both the technical BOS regime and the geopolitical context was approved with 85% confidence. The trade captured a 3.1% move over 6 hours.
Case 3: ETF Approval News (Neutral Context)
CryptoPanic showed 8 bullish articles about a new crypto ETF filing. GDELT tone was neutral (+0.5). Polymarket risk was low (2/10). The political score was +1 (low risk). A bullish technical signal was approved with enhanced confidence (+5% from favorable political context). The trade reached TP2.
Conclusion
Geopolitical intelligence is not optional in modern crypto trading. Federal Reserve decisions, trade wars, regulatory actions, and military conflicts all have direct, measurable impacts on cryptocurrency prices. Ironbrand's Political Context system—combining GDELT's global news analysis, CryptoPanic's crypto-specific sentiment, and Polymarket's prediction market probabilities—provides the geopolitical awareness layer that transforms the technical engine from a pattern-matching system into a context-aware intelligence platform.
Every signal Ironbrand generates has been evaluated not just against price charts and indicators, but against the state of the world. That is the difference between trading and intelligent trading.