How StrikeRadar calculates geopolitical risk from open-source intelligence
StrikeRadar uses a weighted multi-signal approach to assess the probability of a USA military strike on Iran. The system aggregates data from six independent, publicly available sources, each measuring a different dimension of geopolitical tension. These signals are combined using a weighted sum formula and then smoothed with an asymmetric exponential moving average to produce a single composite risk score between 0% and 100%.
The rationale behind this approach is that no single indicator is reliably predictive on its own. News headlines can be sensationalized, flight data can reflect commercial decisions unrelated to security, and prediction markets can overreact to rumors. By combining multiple orthogonal signals, StrikeRadar reduces noise and provides a more balanced assessment than any individual data point.
Version 2.0 retired three signals that proved unreliable in the February 2026 escalation. Military Tankers was removed because operational tanker missions routinely fly with transponders disabled, so the OpenSky-derived count cannot capture the activity that matters most. Pentagon Pizza was removed because the upstream source frequently fell back to randomised mock data, contributing noise rather than signal. Weather Conditions was removed because it was static, weighted at only 1%, and modern strike packages are weather-agnostic.
Version 2.0 also introduces an asymmetric exponential moving average on every signal and on the total. New evidence is incorporated quickly (a 3-hour half-life on the way up, tuned in v2.7) while a real spike decays slowly (a 12-hour half-life on the way down). This eliminates the wild flicker the v1 dashboard exhibited when individual data sources jittered, while still letting a real escalation register within hours.
Each signal produces a score from 0 to 100. These scores are multiplied by their respective weights and summed. When multiple signals simultaneously exceed their elevated thresholds, a tiered escalation multiplier is applied: 1.20x for 2 signals, 1.35x for 3, and 1.50x for 4 or more, capping at 100%. This multiplier captures the compounding effect when multiple independent indicators align, a pattern that historically precedes significant escalation events.
The composite score maps to four risk levels, each representing a different degree of assessed tension:
These thresholds were calibrated for the post-Feb-2026 ceasefire era. "Quiet" is the baseline reading when no signals are elevated. "Tense" indicates one or two signals exceeding their thresholds — typical of the current ceasefire state with active news coverage. "Escalating" requires multiple aligned indicators. "War Window" indicates that nearly all signals are simultaneously elevated, the condition observed in the days before the February 2026 strike on Iran.
Sources: BBC World Service, Al Jazeera English
Method: StrikeRadar scans the RSS feeds of BBC World and Al Jazeera for articles related to Iran. Each headline is analyzed for critical keywords: retaliation, strike, attack, escalation, military, threat, imminent, missile, nuclear, war. We further classify each match as a hard alert (no diplomatic context) or a soft alert (also mentions ceasefire / talks / diplomacy / deal). Soft alerts count at 0.5×; explicit headline boilerplate ("Iran war live:", "war of words") at 0×.
Scoring (v2.5): Risk = clamp(3, 95, round(ratio2 × 150)) where ratio = weighted_alerts / total_iran_articles. The quadratic curve keeps low alarm ratios (~20% — normal ceasefire-era coverage) at single-digit risk, while real escalations (50%+ alarm ratio) still register strongly.
Why these sources: BBC World and Al Jazeera represent two widely cited international news organizations with extensive Middle East coverage. BBC provides a Western institutional perspective, while Al Jazeera offers a regional viewpoint. Using both reduces bias from any single editorial stance.
Limitations: News sentiment analysis cannot fully distinguish reporting on escalation from reporting on de-escalation. The hard/soft split helps, but remains keyword-based. This is why news is one signal among five.
Source: Financial APIs (Brent Crude Oil)
Method: StrikeRadar monitors Brent Crude oil price volatility by tracking the rate of change relative to the 7-day moving average. The scoring thresholds are:
Why it matters: Oil markets often move faster than the news cycle. Price spikes typically indicate institutional players hedging against supply chain disruptions in the Middle East. Energy traders with significant capital at risk tend to act on information before it reaches mainstream media, making oil price movements a leading indicator of geopolitical escalation.
Positive Bias: Only upside volatility is tracked. Price drops indicate lower immediate conflict risk and contribute 0% to the score.
Market Hours: Oil markets close on weekends. The system freezes the last close price and displays "Market Closed" status during non-trading hours, contributing 0% to the total score.
Limitations: Oil prices are influenced by many factors beyond geopolitical tension, including OPEC decisions, global demand shifts, and inventory reports. The signal is most meaningful when price movements correlate with other elevated indicators.
Source: OpenSky Network
Method: StrikeRadar counts the number of commercial aircraft currently transiting Iranian airspace using the OpenSky Network's public API. The system queries a bounding box covering Iran's flight information region and counts active transponders. Normal traffic is approximately 100 or more aircraft at any given time. Significant drops in this number suggest that airlines are avoiding Iranian airspace.
Why it matters: Commercial airlines have access to security intelligence through organizations like IATA and national aviation authorities. When carriers begin rerouting flights away from a conflict zone, it often reflects security advisories that are not yet public knowledge. This pattern was clearly observed before the January 2020 Iranian missile strikes on Al Asad airbase, when multiple carriers rerouted away from Iraqi and Iranian airspace hours before the attack.
Limitations: Flight volumes naturally fluctuate based on time of day, seasonal demand, and commercial scheduling decisions. Night hours in the Middle East naturally show fewer flights. The scoring algorithm accounts for time-of-day baselines, but unusual commercial decisions (airline bankruptcies, scheduling changes) could still create noise.
Source: BBC World Service + Al Jazeera RSS feeds
Method: Every 30 minutes, StrikeRadar scans the same RSS feeds it uses for the News Intelligence signal, but with a stricter filter: an article must mention BOTH a Hormuz-region location (Strait of Hormuz, Persian Gulf, Bandar Abbas, Gulf of Oman, Iranian waters) AND a maritime-incident keyword (tanker, vessel, ship, boarded, seized, attacked, missile, drone, blockade, mine, naval, etc.). The subset of those that match escalation-specific keywords (seized, attacked, missile, blockade, etc.) is the "alarming" count and drives the risk score.
Scoring: 0 alarming incidents in the last 7 days → risk 5. 1 → 25. 2 → 45. 3 → 65. 4+ → 85.
Why it matters: Roughly 25% of seaborne crude oil and 20% of LNG passes through the Strait of Hormuz. Major maritime incidents in the strait (Iranian seizure of tankers, attacks on commercial shipping, mine-laying) are heavily covered by BBC and Al Jazeera within hours of occurring. Counting these incidents directly captures the escalation we care about, without the noise of vessel-count fluctuations from routine port operations.
Limitations: Depends on news coverage — events that don't reach BBC or Al Jazeera within the 7-day window won't be counted. In practice, anything significant in the strait gets covered fast. Also susceptible to old incidents being re-reported in retrospective articles, which could trigger phantom "incidents" when nothing new has happened. Keyword matching is intentionally broad to favor recall over precision.
Migrated from real-time AIS (aisstream.io) in v2.3 after the AIS provider account-locked the production VM. In a ceasefire era, incidents are more predictive than vessel counts anyway.
Source: Polymarket
Method: StrikeRadar tracks the real-money betting odds on the question "Will the US or Israel strike Iran within 7 days?" on Polymarket. The market price directly represents the percentage probability assigned by the collective pool of traders.
Why it matters: Prediction markets have a strong track record of outperforming expert forecasts and polling in various domains, from elections to economic indicators. When participants risk real money, they have a strong incentive to research carefully and update their positions as new information emerges. The "wisdom of crowds" effect means that the aggregate odds reflect the collective assessment of thousands of informed participants, including journalists, analysts, and regional experts.
Limitations: Prediction markets can be influenced by low liquidity (thin markets with few participants), manipulation by wealthy actors, and herding behavior. Markets also tend to be reactive rather than predictive, often spiking after news breaks rather than before. Polymarket's accessibility varies by jurisdiction, which can limit the diversity of participants.
Source: BBC World Service + Al Jazeera RSS feeds
Method: Every 30 minutes, StrikeRadar scans the same RSS feeds for headlines mentioning BOTH Trump AND Iran in the last 7 days. Each matching headline is classified by tone — escalation (strike, attack, no deal, wipe out, ultimatum, regime change, warning, threat) or de-escalation (deal, talks, peace, ceasefire, negotiate, agreement, reduce tensions, avoid war). Mixed-tone headlines, where both sets of keywords appear, are ignored so they don't double-pull the gauge.
Scoring: Risk = clamp(5, 95, round(ratio2 × 150)) where ratio = escalation / (escalation + de-escalation). With fewer than 3 classified statements a soft floor of 10 applies, so we don't whipsaw on tiny denominators.
Why it matters: Trump's posture toward Iran moves markets and shifts allies' behavior faster than any single instrument. A run of "no deal" / "wipe out" headlines is a leading indicator that the broader news ratio doesn't always capture; the tone-classified count makes that visible.
Limitations: Keyword classification cannot read intent. A press conference quoted across many headlines can look like a sustained drumbeat when it is a single moment. Coverage volume is also editorially dependent — a quiet week from BBC and Al Jazeera reads as low conviction even if the actual rhetoric is unchanged.
Every signal score and the composite total are passed through an asymmetric exponential moving average before they are stored or displayed. The smoother uses two different rates: a 3-hour half-life when a value is rising and a 12-hour half-life when it is falling. In practice this means a real escalation reaches roughly 50% of its true value within 3 hours and 90% within 9 hours, while a single noisy reading is largely ignored. A genuine spike that subsides will linger on the gauge for most of a day rather than vanishing in a single 30-minute cycle, reflecting the asymmetric cost of a war-watching tool: missing an escalation is far more expensive than being slow to declare calm.
When multiple signals simultaneously exceed their elevated thresholds, StrikeRadar applies a tiered escalation multiplier to the total score. The multiplier scales with the number of elevated signals: 1.20x for 2 signals, 1.35x for 3, and 1.50x for 4 or more. This reflects the principle that simultaneous elevation across multiple independent signals is disproportionately significant compared to any individual signal being elevated in isolation.
The rationale is straightforward: if news sentiment is high but all other signals are calm, the elevated news is likely reflecting media coverage of diplomatic rhetoric rather than imminent action. But if news sentiment, aviation avoidance, energy market volatility, and prediction market odds are all simultaneously elevated, the probability of actual escalation is meaningfully higher than the sum of parts would suggest. The tiered approach ensures the score responds proportionally to the breadth of the threat picture.
StrikeRadar maintains a rolling history of risk scores, pinned at 12-hour intervals. This history powers the "72 Hour Risk Trends" chart on the dashboard, allowing users to see whether the current risk level represents a sudden spike, a gradual increase, or a sustained plateau.
Each individual signal also maintains a rolling history of its last 20 data points, displayed as sparkline charts next to each signal. This provides immediate visual context for whether a signal is trending up, down, or holding steady.
The data pipeline runs every 30 minutes. During each cycle, the system fetches fresh data from all six sources, calculates updated signal scores, computes the composite risk, updates the history arrays, and stores a new snapshot. The dashboard displays the most recent snapshot and auto-refreshes every 30 minutes to stay current.
StrikeRadar is a tool for situational awareness, not prediction. It is important to understand its limitations:
We encourage users to treat StrikeRadar as one input among many when assessing geopolitical risk. For the latest official guidance, consult your government's travel advisory service and follow coverage from multiple reputable news organizations.