DEV Community

wudwerd
wudwerd

Posted on

Building a geopolitical signal desk: AIS corridor pressure, multi-source price cross-validation, and corroboration logic

I am an energy and macro trader, and I built a real-time geopolitical decision desk because I was tracking Iran, Hormuz shipping and OPEC-adjacent moves out of a dozen browser tabs with no reliable way to judge source quality under time pressure. This is a write-up of the parts other builders might find useful. Feedback on the weak points is welcome, that is mostly why I am posting.

Source tiering and the two-source threshold

The desk ingests 199 named feeds. Each is tiered A to D on a NATO Admiralty-style reliability scale. Tier A is wire agencies and official government sources. Tier D is monitored but low reliability, labelled and never allowed to drive an alert on its own.

The core rule: a claim needs a second independent source, or a corroborating market signal, before it flips from "developing" to "confirmed." A single Telegram post stays labelled. This one rule removes most of the false-positive noise that catches speed-only feeds.

Contradictions as first-class state

When two sources conflict, the desk does not pick a winner and hide the loser. It holds a contested state with both receipts visible until a third source or the tape breaks the tie. In practice this is what stops a clean-looking summary from quietly deleting the most important information in a fast-moving story.

AIS corridor-pressure index

Vessel tracking runs on a real-time AISStream WebSocket feed. On top of raw positions the desk does three things: transit-direction inference through the Strait of Hormuz, floating-storage detection, and OFAC SDN screening against the US Treasury sanctions list.

The output is not a map widget. It is a computed corridor-pressure index, derived from transit volume, AIS signal gaps (vessels going dark), and news-cluster intensity in the same window. The interesting failure mode, and the one I would most like critique on, is spoofed or manipulated AIS. Suggestions on robust anomaly detection there are very welcome.

Market data cross-validation

Price data flows through a fallback chain: Yahoo Finance v7 quotes, then v8 spark as a fallback, then the chart API, with a Twelve Data cross-check. If two providers disagree by more than 5%, the desk flags it and takes the consensus rather than trusting a single feed. Commodities are validated this way: Brent, WTI, gold, natural gas, heating oil, silver, plus a customisable equity and FX watchlist.

Signal correlation, not just aggregation

Feed items are cross-referenced against the market tape. The desk tracks narrative velocity (how fast a story propagates across independent sources), detects when multiple independent sources report the same event, and attaches the market move that occurred in the same window. Aggregation tells you what was said. Correlation tells you whether it mattered.

Known limitations, up front

  • Market data is a 10-second poll, not tick-by-tick. This is context for event trading, not a Bloomberg tick feed replacement.
  • Sentiment is keyword and source-weight derived, not a transformer model. It works on high-signal geopolitical events and will miss nuance in ambiguous diplomatic language.
  • ACLED conflict data depends on upstream availability. When it lags, the map falls back to GDELT and FIRMS hotspot data.
  • It is a one-person project. Sources go stale, upstreams change, things break. There is a public status page.

Why I am telling you this

Because the whole design principle is auditability. There is a public replay archive and a scorecard, so the track record can be checked rather than asserted. On 23 March the desk flagged the Iran-strikes reversal 88 seconds before mainstream coverage, and Brent moved 12% in the next ninety minutes. The full timestamp chain is public.

It is free, web and iOS. Not financial advice, it is an intelligence tool. Try to break the corroboration logic and tell me where it fails: https://www.inteldesk.app

Top comments (0)