docs/strategic-risk.mdx
The Strategic Risk system provides a composite dashboard that synthesizes all intelligence modules into a single risk assessment, combining convergence detection, country instability, and infrastructure monitoring into actionable risk levels.
The Strategic Risk Overview synthesizes all intelligence modules into a single risk assessment.
The strategic risk score combines three components:
| Component | Weight | Calculation |
|---|---|---|
| Convergence | 40% | min(100, convergence_zones × 20) |
| CII Deviation | 35% | min(100, avg_deviation × 2) |
| Infrastructure | 25% | min(100, incidents × 25) |
| Score | Level | Trend Icon | Meaning |
|---|---|---|---|
| 70-100 | Critical | Escalating | Multiple converging crises |
| 50-69 | Elevated | Stable | Heightened global tension |
| 30-49 | Moderate | Stable | Normal fluctuation |
| 0-29 | Low | De-escalating | Unusually quiet period |
Alerts from all modules are merged using temporal and spatial deduplication:
When alerts merge, they become composite alerts that show the full picture:
Type: Composite Alert
Title: Convergence + CII + Infrastructure: Ukraine
Components:
- Geographic Convergence: 4 event types in Kyiv region
- CII Spike: Ukraine +15 points (Critical)
- Infrastructure: Black Sea cables at risk
Priority: Critical
| Priority | Criteria |
|---|---|
| Critical | CII critical level, convergence score ≥80, cascade critical impact |
| High | CII high level, convergence score ≥60, cascade affecting ≥5 countries |
| Medium | CII change ≥10 points, convergence score ≥40 |
| Low | Minor changes and low-impact events |
The system tracks the composite score over time:
The dashboard integrates real-time foot traffic data from strategic locations near government and military facilities. This "Pizza Index" concept, tracking late-night activity spikes at restaurants near the Pentagon, Langley, and other facilities, provides an unconventional indicator of crisis activity.
The system aggregates percentage-of-usual metrics from monitored locations:
Aggregate activity maps to a 5-level readiness scale:
| Level | Threshold | Label | Meaning |
|---|---|---|---|
| DEFCON 1 | ≥90% | COCKED PISTOL | Maximum readiness; crisis response active |
| DEFCON 2 | ≥75% | FAST PACE | High activity; significant event underway |
| DEFCON 3 | ≥50% | ROUND HOUSE | Elevated; above-normal operations |
| DEFCON 4 | ≥25% | DOUBLE TAKE | Increased vigilance |
| DEFCON 5 | <25% | FADE OUT | Normal peacetime operations |
The indicator also displays geopolitical tension scores from GDELT (Global Database of Events, Language, and Tone):
| Pair | Monitored Relationship |
|---|---|
| USA ↔ Russia | Primary nuclear peer adversary |
| USA ↔ China | Economic and military competition |
| USA ↔ Iran | Middle East regional tensions |
| Israel ↔ Iran | Direct conflict potential |
| China ↔ Taiwan | Cross-strait relations |
| Russia ↔ Ukraine | Active conflict zone |
Each pair shows:
This provides context for the activity levels. A spike at Pentagon locations during a rising China-Taiwan tension score carries different weight than during a quiet period.
News clusters are automatically enriched with nearby critical infrastructure. When a story mentions a geographic region, the system identifies relevant assets within 600km, providing immediate operational context.
| Type | Source | Examples |
|---|---|---|
| Pipelines | 88 global routes | Nord Stream, Keystone, Trans-Siberian |
| Undersea Cables | 86 major cables | TAT-14, SEA-ME-WE, Pacific Crossing |
| AI Datacenters | 313 clusters | Azure East US, GCP Council Bluffs |
| Military Bases | 226 installations | Ramstein, Diego Garcia, Guam |
| Nuclear Facilities | 100+ sites | Power plants, weapons labs, enrichment |
The system infers the geographic focus of news stories through:
Assets are ranked by Haversine distance from the inferred location:
d = 2r × arcsin(√(sin²(Δφ/2) + cos(φ₁) × cos(φ₂) × sin²(Δλ/2)))
Up to 3 assets per type are displayed, sorted by proximity.
A news cluster about "pipeline explosion in Germany" would show:
Clicking an asset zooms the map to its location and displays detailed information.
Strategic risk and Country Instability Index (CII) scores are pre-computed server-side rather than calculated in the browser. This eliminates the "cold start" problem where new users would see no data while the system accumulated enough information to generate scores.
The GetRiskScores RPC handler (get-risk-scores.ts):
Each country's score combines a static baseline (40%) with a dynamic event score (60%), plus supplemental boosts and floors.
Baseline Risk (0-50 points): Static geopolitical risk reflecting structural fragility.
| Country | Baseline | Rationale |
|---|---|---|
| Syria, Ukraine, Yemen | 50 | Active conflict zones |
| Myanmar, North Korea, Cuba | 45 | Civil unrest, authoritarian |
| Iran, Israel, Pakistan, Venezuela, Mexico | 35-40 | Regional tensions, organized crime |
| Taiwan, Saudi Arabia, Turkey, Russia, China, India | 20-35 | Moderate instability |
| Brazil, Mexico | 15-35 | Variable instability |
| Germany, UK, US, France, Poland, UAE | 5-10 | Stable/low risk |
Event Score blends four sub-components:
| Sub-component | Weight | Scoring |
|---|---|---|
| Unrest | 25% | Log2 dampening for democracies (multiplier < 0.7), linear for authoritarian states. Base capped at 50, plus protest fatality boost (up to 30), plus outage severity boost (TOTAL 30pts, MAJOR 15pts, PARTIAL 5pts, capped at 50) |
| Conflict | 30% | Weighted ACLED events (battles x3, explosions x4, civilian violence x5), sqrt-scaled fatalities, civilian boost, Iran strike severity, OREF alert boost (IL only: 25 base + 5 per alert) |
| Security | 20% | GPS/GNSS jamming hexes (high: 5pts, medium: 2pts, capped at 35) |
| Information | 25% | Reserved (0); no server-side news data |
Floors (minimum score guarantees):
| Floor type | Threshold | Trigger |
|---|---|---|
| UCDP active war | >= 70 | UCDP intensity level 2+ |
| UCDP minor conflict | >= 50 | UCDP intensity level 1 |
| Advisory do-not-travel | >= 60 | UA, SY, YE, MM |
| Advisory reconsider | >= 50 | IL, IR, PK, VE, CU, MX |
Supplemental Boosts: Advisory boost (+15/+10/+5), OREF blend boost for IL (+15 active + history tiers), climate (+15 max), cyber (+10 max), fires (+8 max).
Events in some countries carry more global significance than others:
| Multiplier | Countries | Rationale |
|---|---|---|
| 3.0x | North Korea | Any visible unrest is highly unusual |
| 2.0-2.5x | China, Russia, Iran, Saudi Arabia, Cuba | Authoritarian states suppress protests |
| 1.5-1.8x | Taiwan, Pakistan, Myanmar, Venezuela, UAE | Regional flashpoints |
| 1.0-1.2x | Mexico, Turkey | Moderate significance |
| 0.5-0.8x | US, UK, France, Germany, Poland, Ukraine, Syria, Yemen, Israel, India, Brazil | Protests are routine or events already captured by floors |
The composite strategic risk score is computed as a weighted average of the top 5 CII scores:
Weights: [1.0, 0.85, 0.70, 0.55, 0.40] (total: 3.5)
Strategic Risk = (Σ CII[i] × weight[i]) / 3.5 × 0.7 + 15
The top countries contribute most heavily, with diminishing influence for lower-ranked countries.
| Source | Redis Key | Used For |
|---|---|---|
| ACLED | Fetched live via API | Protests, riots, battles, explosions, civilian violence, fatalities |
| UCDP | conflict:ucdp-events:v1 | War/minor conflict floors |
| Outages | infra:outages:v1 | Unrest outage boost (TOTAL/MAJOR/PARTIAL severity) |
| Climate | climate:anomalies:v1 | Climate severity boost |
| Cyber | cyber:threats-bootstrap:v2 | Cyber threat count boost |
| Fires | wildfire:fires:v1 | Wildfire count boost |
| GPS Jamming | intelligence:gpsjam:v2 | Security score (high/medium hex levels) |
| Iran Events | conflict:iran-events:v1 | Strike boost with severity weighting |
| OREF Alerts | relay:oref:history:v1 | IL conflict boost + blend boost (activeAlertCount, historyCount24h) |
When upstream data is unavailable (API errors, rate limits):
This ensures the dashboard always displays meaningful data even during upstream outages. The relay CII seed loop is disabled; the RPC handler computes scores on-demand with cachedFetchJson coalescing concurrent requests.