Market Structure · Product

One number for oil geopolitics.

A composite 0–100 risk index distilled from prices, prediction markets, news flow, positioning, and live vessel traffic at chokepoints, refreshed every minute, local-only by design.

Oil geopolitical signal desk in dark mode with composite gauge, news radar, and signal feed Oil geopolitical signal desk in light mode with the same panels
The signal desk, running locally; the capture follows the site theme.

Five families of evidence

Crude moves on geopolitics before it moves on inventories. The index blends independent evidence families so no single source can dominate the composite.

FamilySignals
Prices & curvesWTI/Brent levels and spreads (Yahoo, FRED), macro rate context.
Prediction marketsPolymarket and Kalshi odds on conflict and supply-disruption events.
News flowGDELT event data and RSS feeds, scored and cached.
Positioning & supplyCFTC COT positioning, Baker Hughes rig counts, EIA SPR and inventories.
Vessel trafficLive AIS snapshots around chokepoint zones on 5-minute collection cycles.

Fail-soft by construction

Each source runs as an independent async collector. One outage degrades the index gracefully instead of taking down the dashboard.

  • Disk-backed JSON cache survives restarts; free-tier rate limits (GDELT 1 req / 5 s) handled with spacing, retries, and 30-minute caching.
  • AIS gaps are marked stale with provider-health timestamps and backoff retries instead of being displayed as zero traffic.
  • Weights and queries live in one config module, so the composite score is auditable from signal to number.

Status bands carry the verdict

0–25 Low · 25–45 Elevated · 45–65 High · 65–85 Severe · 85+ Critical.

  • The composite is the headline; the signal panels are the evidence trail behind it.
  • Terminal-finance dark UI with ECharts, no build step, auto-refresh every 60 seconds.
  • Local-only FastAPI on 127.0.0.1: a decision-support surface, not a public service.