Verified-live gotcha (2026-06-09): free and cheap terrestrial AIS aggregators return zero vessels over the Strait of Hormuz, killing the free-data premise of hormuz-bet-strategy-c-stage0. The Stage-0 collector is built and green but has no free feed to run on — getting Hormuz AIS requires paid satellite.

The free-terrestrial premise of Strategy C Stage 0 is DEAD

Two cheap terrestrial sources were tested live against the Hormuz bounding box (lon 56.20–56.95, lat 26.25–26.70) and both returned zero vessels, while non-Gulf sanity boxes returned data densely. Terrestrial AIS aggregators have no contributor receivers covering the open Strait of Hormuz — which is exactly why IMF PortWatch itself runs on satellite AIS (Spire). Do not spend time re-trying terrestrial feeds for Hormuz.

What Was Tested (live, 2026-06-09)

While verifying Strategy C’s Stage-0 collector, two terrestrial AIS sources were polled live over the provisional Hormuz box (geo::hormuz_zone, lon 56.20–56.95 / lat 26.25–26.70) and over a wider Gulf box.

aisstream.io (free WebSocket)

  • The global box floods with data — instantly pulled a vessel in the Aegean, so the feed and key work.
  • The Hormuz box AND a wider Gulf box returned ZERO messages over 90 s / 30 s respectively. No receivers feed the strait.
  • Real bug fixed along the way: aisstream delivers AIS as WebSocket BINARY frames, not Text. Our client only handled Text frames and silently dropped everything. Fixed in src/ais/aisstream.rs to read binary frames. (This bug would have made even a covered box look empty — it was masking nothing here since Hormuz is genuinely empty, but it was a latent silent-drop.)

MyShipTracking (free trial, api/v2/vessel/zone bbox endpoint, Bearer auth)

  • Hormuz box → {"status":"success","data":[]}0 vessels, even with minutesBack=1440 (24 h lookback).
  • A Rotterdam sanity box → 286 vessels. So the key works and EU coverage is dense, but Gulf coverage is zero.

Both failures are coverage, not auth or code

Each provider returned a healthy, populated response for a non-Gulf box and an empty-but-successful response for Hormuz. This is a data-coverage gap (no terrestrial receivers near the strait), not a credential, schema, or client bug.

Why This Was Predictable (and now confirmed)

hormuz-bet-ais-providers already flagged the cheap feeds as terrestrial-only and doubly exposed mid-strait. This finding upgrades that caveat from “weak offshore range” to verified zero coverage over the open strait. The mechanism: terrestrial AIS depends on shore-based contributor receivers within VHF range (~tens of km); the open Strait of Hormuz transit lanes sit beyond any contributor’s range, so aggregators that only ingest terrestrial feeds simply have no data there. PortWatch’s chokepoint6 counts come from satellite AIS (Spire) precisely because of this.

Conclusion and Reframe

We do NOT need to test "does satellite see Hormuz" — PortWatch already proves it does

PortWatch’s own satellite-derived daily counts (3–10/day) are direct evidence that satellite AIS sees Hormuz transits. The only open question is whether a real-time satellite feed we can poll ourselves lets us count transits ahead of PortWatch’s weekly Tuesday publish. That is confirmable cheaply with a ~€5–10 pay-per-credit spot-check before committing to any monthly subscription.

To get Hormuz AIS at all, the feed must be satellite (paid):

OptionCostNotes
Data Docked (satellite, pay-per-credit)~€1.25 / area-poll credit, or ~€140/moSelf-serve real-time satellite poll; the candidate for the “poll ahead of PortWatch” spot-check.
Spire / Kpler (enterprise)quote-onlyThe same satellite source PortWatch uses (Spire); enterprise, out of scope for a small clip unless justified later (see hormuz-bet-ais-providers).

Stage-0 Code Status

  • Stage-0 collector is built, fixed (Binary frames), clippy-clean, cargo test --lib 46 passed / 5 ignored — see hormuz-bet-strategy-c-stage0.
  • It now has no free data to run on — the terrestrial feeds it was designed around are empty over Hormuz.

Decision pending (not yet made)

Pay for a satellite feed (€140/mo standing cost) to run Stage 0 against a real Hormuz feed, vs shelve Strategy C. Capacity is small (1k/clip) and the edge is regime-dependent, so a €140/mo standing cost is a real hurdle. The edge itself remains real per the kill-tests in hormuz-bet-basis-risk — prices lag the PortWatch publish by ~4 days (REACT, don’t anticipate). The cheap next step if pursued is the €5–10 Data Docked pay-per-credit spot-check: confirm a self-polled satellite feed can see Hormuz transits ahead of the Tuesday drop, before any €140/mo subscription.

RESOLVED (2026-06-09): the satellite path was tried and Strategy C is SHELVED

The “pay for satellite vs shelve” decision above is now resolved → SHELVE. The free satellite proxy (Global Fishing Watch) was tested and fails — it measures vessel-presence (vessel-hours), not transits, and anti-correlates with PortWatch in the crisis regime (Q4-25 Pearson −0.07; daily r=0.33). The cheap-paid Data Docked area endpoint turned out to be terrestrial-only → blind to Hormuz (same gap as the free terrestrial feeds), and VesselFinder floors at ~€330 + ~€46/poll. So every cheap path is dead; the only data that captures the edge is enterprise satellite (Spire/Kpler) — uneconomic for this clip. Decision: SHELVE Strategy C. Full analysis + resume triggers in hormuz-bet-strategy-c-shelved.

  • hormuz-bet-strategy-c-stage0 — the Stage-0 collector this finding starves of free data; it is built and green but unrunnable on terrestrial feeds. Binary-frame fix landed in src/ais/aisstream.rs.
  • hormuz-bet-ais-providers — the feed landscape; this verifies the “terrestrial-only, doubly exposed mid-strait” caveat as zero Hormuz coverage, and adds Data Docked (satellite, pay-per-credit) as the cheap-probe candidate.
  • hormuz-bet-basis-risk — where the Strategy C edge was established (prices lag PortWatch ~4 days); the edge survives, only the free data path died.
  • hormuz-bet-portwatch-data — PortWatch counts are satellite-derived (Spire), which is why satellite sees what terrestrial cannot.
  • hormuz-bet — project index; Strategy C is the Phase-2 AIS-nowcast play.