What the number means
The Global Risk Index (GRI) is a continuous score from 0 to 100 summarizing near-term geopolitical pressure relevant to international markets. It is recomputed from the last 24 hours of filtered events, then smoothed so one noisy hour does not swing the desk readout.
| Band | Range | Reading |
|---|---|---|
| Calm | 0–34 | Relatively stable geopolitical risk environment |
| Watch | 35–54 | Material signals in the last 24h; elevated attention |
| Elevated | 55–74 | Pressure across conflicts, sanctions, and/or oil |
| Critical | 75–100 | Crisis underway or imminent on scored evidence |
Each publication also carries a confidence score (0–1): how reliable the reading is given event quality, volume, active sources, and type diversity — not a formal statistical error bar.
Formula
Component scores live on a unit scale (0–1). The weighted sum is smoothed with EWMA, then mapped to 0–100 once:
GRI = 100 × EWMA_α(
0.35 × conflicts
+ 0.20 × sanctions
+ 0.25 × oil_volatility
+ 0.20 × sentiment
)
α = 0.3
EWMA_t = α × raw_t + (1 − α) × GRI_{t−1} / 100On the first snapshot (or after a saturated historical reset), raw_t is published without smoothing.
Components & weights
| Component | Weight | How it scores |
|---|---|---|
| Conflicts | 35% | Mass severity × confidence × decay for types conflict / war / military, mapped with 1 − e^(−mass / 5) |
| Sanctions | 20% | Same mass map for sanctions / embargo / trade_restriction |
| Oil volatility | 25% | Recent WTI/Brent absolute % change, |Δ%| / 5 capped at 1. Missing tape → neutral-low prior 0.15 |
| Sentiment | 20% | Confidence × decay weighted mean sentiment, mapped from [−1, 1] → risk [0, 1] (bearish raises risk) |
Soft saturation (λ = 5) lets several severe events lift a component without hard-clipping at 1.0 on a busy news day — leaving headroom for true escalation.
Time window & decay
Only events with occurred_at in the last 24 hours enter the index. Within that window, each event’s contribution decays with an 8-hour half-life:
decay = 0.5^(age_hours / 8)
Newer events weigh more. Events without a usable timestamp receive a mid decay of 0.5.
EWMA smoothing
The desk publishes a smoothed index so brief spikes do not dominate the chip. Smoothing stays on the unit scale (α = 0.3): 30% of the new raw reading, 70% of the prior published value (mapped back to 0–1). The result is clamped to [0, 100] and rounded for storage.
Confidence
confidence = 0.45 × mean(event confidence) + 0.25 × volume_factor + 0.20 × source_factor + 0.10 × type_diversity volume_factor = min(1, log(1 + n) / log(1 + 8)) source_factor = min(1, active_sources / 3) type_diversity = min(1, unique_event_types / 3) clamped to [0.1, 1.0]
Few events or few active sources → low confidence even if the GRI moves. An empty window yields the floor (0.1).
What does not enter
- Events with confidence < 0.40 (treated as noise)
- Events with event_type = general (generic editorial filler)
- Events older than 24 hours (outside the scoring window)
Null event_type is allowed through the gate; typed components only credit matching types.
Event ↔ market link (honest quant)
Desk correlations use an event-study pairing: for each geopolitical event, we take the signed WTI return in a ±4h window around occurred_at, then Pearson(severity, return). Surprise labels compare ΔGRI and oil % in the same 1h/4h window — heuristic only, with thresholds and caveats on the API (method, caveat).
Neither series is a trade signal. Sparse quotes, single-publisher noise, and short samples all weaken the statistic.
Backtest snapshot
Command php artisan risk:backtest replays high-severity events (severity ≥ 0.6) and scores a “hit” when |oil return| ≥ 0.3% or |ΔGRI| ≥ 2 inside +4h. When live history is sparse, we publish a documented fixture instead of inventing precision.
| Field | Value |
|---|---|
| Source | fixture v1.0 · as of 2026-07-29 |
| Episodes | 8 |
| Hits | 5 |
| Hit rate | 62.5% |
Caveat: Fixture episodes under resources/backtests/sample_episodes.json. Use only as a methodology placeholder until live history is dense enough. Not financial advice.
Limitations
Transparency is the point: today’s GRI is a deterministic heuristic, not a calibrated world reference index. Among the gaps still on the roadmap:
- Out-of-sample calibration on dense live history (fixture is a placeholder until then)
- Weights and normalizers fitted from data (today: fixed)
- Published uncertainty interval alongside the point estimate
- Public methodology changelog and independent review process
- Explicit regional / hotspot series — not only one global number