Reference

Global Risk Index

How Blit Intelligence Desk turns scored geopolitical signals into a single public number (0–100) — with weights, filters, and limits stated plainly.

v1.1 · as of 2026-07-29

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.

BandRangeReading
Calm0–34Relatively stable geopolitical risk environment
Watch35–54Material signals in the last 24h; elevated attention
Elevated55–74Pressure across conflicts, sanctions, and/or oil
Critical75–100Crisis 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} / 100

On the first snapshot (or after a saturated historical reset), raw_t is published without smoothing.

Components & weights

ComponentWeightHow it scores
Conflicts35%Mass severity × confidence × decay for types conflict / war / military, mapped with 1 − e^(−mass / 5)
Sanctions20%Same mass map for sanctions / embargo / trade_restriction
Oil volatility25%Recent WTI/Brent absolute % change, |Δ%| / 5 capped at 1. Missing tape → neutral-low prior 0.15
Sentiment20%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.

FieldValue
Sourcefixture v1.0 · as of 2026-07-29
Episodes8
Hits5
Hit rate62.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:

  1. Out-of-sample calibration on dense live history (fixture is a placeholder until then)
  2. Weights and normalizers fitted from data (today: fixed)
  3. Published uncertainty interval alongside the point estimate
  4. Public methodology changelog and independent review process
  5. Explicit regional / hotspot series — not only one global number

Implementation reference: RiskIndexCalculator, ComponentScorer, ConfidenceCalculator, CorrelationService, risk:backtest. Public API: GET /api/v1/public/risk.

← Back to desk