← Back to Intelligence

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:

Graceful Degradation: If GDELT is completely unavailable, the political context system continues operating with CryptoPanic and Polymarket data. The GDELT contribution defaults to neutral (tone = 0, tone_label = "unknown") and the overall political score adjusts accordingly. The system never crashes due to a single data source failure.

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:

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:

Trade Wars and Tariffs

Tariff announcements create uncertainty in global trade, which ripples through all risk assets including crypto:

Military Conflicts and Sanctions

Armed conflicts and sanctions create immediate risk-off sentiment across all markets:

Regulatory Actions

Crypto-specific regulation is captured primarily through CryptoPanic rather than GDELT:

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:

Example Scenario: The V6+ engine generates a bullish long signal on BTC. RSI is 44, volume is 1.3x average, 1H trend is aligned, BOS regime is bullish. The technical setup is clean. But the political context shows: GDELT tone = -4.2 (negative), CryptoPanic has 5 important bearish articles about impending tariff escalation, Polymarket shows 78% probability of new tariffs. The political score is -4/5 (high risk).

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.