A laden tanker at 14 knots, running VLSFO from Fujairah to Djibouti. 2,222 nautical miles through the Gulf of Oman, the Arabian Sea, the Gulf of Aden, past Bab el-Mandeb. The Voyage Scorer returns a composite risk score of 50 — classified ELEVATED.

The sidebar shows JWC Listed Areas at 100. Sanctions Exposure at 100. Both maxed out. And yet the composite is 50, not 100. If you're an underwriter looking at this output for the first time, that gap deserves an explanation.

This post is that explanation. One voyage, ten signals, and the arithmetic that turns them into a number you can put in a slip.


The ten signals

Every route scored in ArcNautical is evaluated against ten independent intelligence signals. Each signal is spatially queried against the actual route geometry — an A* path through a 0.05-degree ocean grid, not a straight line. A piracy incident 200nm from your track is weighted differently from one sitting directly on it.

Here's what each signal measures, and where the data comes from:

Signal What it measures Primary source
JWC Listed Areas Route fraction inside Joint War Committee hull war risk zones Lloyd's Market Association
Piracy Incidents Armed robbery and piracy events within 80nm of route, 30-day window IMB ICC, ReCAAP ISC
Sanctions Exposure Transit near sanctioned entities, ports, or jurisdictions OFAC SDN, UN, OpenSanctions
Conflict Events Armed conflict, protests, military activity near route GDELT Event Database
Country Risk (CII) Composite instability index for transit countries GDELT-derived, multi-factor
Navigational Warnings Active NGA broadcast warnings intersecting route corridor NGA Maritime Safety
Marine Weather Wave height, wind speed, Beaufort hazard along route segments Open-Meteo Marine API
AIS Disruptions GPS jamming, spoofing, or signal interference zones AIS anomaly detection
Dark Activity Vessels going dark (AIS off) in route corridor AIS gap analysis
Natural Disasters Earthquakes, cyclones, volcanic ash, tsunamis near route GDACS, NHC, USGS, VAAC

Each signal independently produces a raw score from 0 to 100. Zero means the signal found nothing relevant along the route. A hundred means maximum exposure.

Why the composite isn't an average

The naive approach to combining ten signals would be to average them. If JWC scores 100 and weather scores 15, the average of all ten might land around 30. That's wrong in a specific, dangerous way: it lets calm weather and quiet AIS data dilute the fact that your vessel is transiting a war risk zone.

We use dynamic priority-weighted scoring with active-signal redistribution. That's a mouthful. Here's what it means in practice:

How dynamic weighting works

Each signal has a base weight and an active boost. When a signal has real data (events found, non-zero score), it receives its base weight plus the active boost. When a signal returns zero — no piracy incidents near this route, no AIS disruptions detected — it receives only the base weight.

The freed-up weight from inactive signals gets redistributed to active signals proportional to their priority. JWC and piracy have the highest priority (5 and 4). Weather and AIS have the lowest (3 and 1). So when piracy is quiet but JWC is screaming, the JWC signal's effective weight goes up.

Final weights are normalized to sum to 1.0. The composite is the weighted sum of all participating signal scores.

The approximate weights when all ten signals are active:

JWC Listed Areas ~18%
Piracy Incidents ~18%
Conflict Events ~15%
Country Risk ~12%
Sanctions Exposure ~10%
NAVWARNs ~10%
Marine Weather ~9%
AIS Disruptions ~8%

Dark Activity and Natural Disasters carry similar weight profiles but activate only when relevant data exists along the route.

This is why two signals can score 100 while the composite lands at 50. JWC at ~18% weight with a score of 100 contributes about 18 points. Sanctions at ~10% contributes about 10. That's 28 points from two maxed signals. The remaining 22 or so points come from conflict events, country risk, and other active signals with moderate scores. Signals that returned zero don't dilute the result — they step aside.

Reading the Fujairah-to-Djibouti breakdown

Voyage Scorer Risk Overview showing risk score gauge at 50, route summary AEFJR to DJJIB at 2,222nm, and risk exposure sidebar with JWC Listed Areas and Sanctions Exposure both at 100
Risk Overview tab: the gauge, the route summary, and the risk exposure sidebar showing per-signal scores

The KPI bar tells the story at a glance:

50
Risk Score
2,222
Distance (nm)
363.3
Fuel (MT)
1,144.9
CO₂ (MT)
C
CII Rating
100%
Data Confidence

Data confidence at 100% means all ten data sources were successfully queried. When a source fails (and they do — UKMTO has been returning Cloudflare 403s for weeks), the confidence drops and a warning banner appears. You know exactly which intelligence layers have gaps.

The AI Risk Briefing summarizes the key threats in plain language: elevated piracy and armed robbery in the Gulf of Aden, sanctions exposure from transit through high-risk countries including UAE, Iran, India, Pakistan, Yemen, and Somalia. ETA uncertainty between the 10th and 90th percentiles is only 3 hours — a relatively predictable voyage timeline despite the threat environment.

The CII floor: a safety net for bad data days

There's a failure mode that keeps me up at night. Imagine the IMB piracy feed goes down for 24 hours. ReCAAP times out. GDELT returns empty results for the Gulf of Aden corridor. A naive scoring engine would see zero piracy events, zero conflict events, and happily report a moderate risk score for a Fujairah-to-Djibouti run through one of the most dangerous waterways on earth.

We built a floor for this.

CII Safety Floor

When the maximum Country Instability Index along the route is 50 or higher, the composite score cannot drop below CII × 0.80. No matter what the other signals report — or fail to report.

The transit countries on this Fujairah-to-Djibouti route include Yemen (CII ~75) and Somalia (CII ~85). Even if every other data source went offline simultaneously, the floor would hold the composite at 68 — still classified HIGH. A route to Yemen cannot score "moderate" because data sources are having a bad day.

Concrete examples of what the floor guarantees:

Transit Country CII Score Minimum Floor Risk Level
Somalia 85 68 HIGH
Yemen 75 60 ELEVATED
Libya 70 56 ELEVATED
Ukraine 70 56 ELEVATED
Iraq 65 52 ELEVATED

This isn't theoretical. We discovered the need for it the hard way. An early version of the scorer returned a score of 35 for a route transiting Yemeni waters — because JWC had an 8% weight cap and three zero-scoring signals dragged down the denominator. That's the kind of output that gets someone hurt, or gets an underwriter fired. The floor and the active-signal redistribution both exist because that bug existed first.

The route underneath the score

Route & Threats view showing the Fujairah-to-Djibouti maritime route on a map with threat overlays, passing through Saudi Arabia and the Arabian Sea
Route & Threats tab: the actual maritime path scored against every intelligence layer, with a "Compare Route" option for alternative routing

The score isn't abstract. It's attached to a specific polyline through actual water. The route from Fujairah exits the Strait of Hormuz, tracks southeast through the Gulf of Oman, crosses the Arabian Sea, enters the Gulf of Aden through Bab el-Mandeb, and terminates at Djibouti. Six waypoints. Every signal is sampled along this geometry.

The "Compare Route" button lets you add an alternative — maybe a wider berth around the Yemeni coast, or a different entry angle into the Gulf of Aden. Each variant gets its own score. Same ten signals, different geometry, different numbers. That's the point: risk is route-specific, not port-pair-specific.

Risk levels and what they mean for decisions

The composite maps to five risk levels:

Score Range Level Typical action
0 – 25 LOW Standard terms. Routine monitoring.
26 – 45 MODERATE Enhanced monitoring. Review before binding.
46 – 65 ELEVATED Additional premium. Restricted terms. Pre-bind review required.
66 – 85 HIGH War risk additional premium. Possible exclusions. Senior sign-off.
86 – 100 CRITICAL Decline or refer to syndicate lead. Full threat briefing required.

Our Fujairah-to-Djibouti tanker at 50 sits in the ELEVATED band. That's the right answer for this route: it transits a JWC listed area and passes near sanctioned jurisdictions, but the voyage is short (2,222nm), weather is manageable, and the ETA distribution is tight. An experienced underwriter would look at this and think "additional premium, restricted terms, maybe a clause about deviation." Which is exactly the kind of calibrated response that a good risk score should support — not replace.

A risk score doesn't make the decision. It makes the decision defensible.

The dashboard view: signals at global scale

ArcNautical global intelligence dashboard showing JWC threat zones, piracy clusters, chokepoint disruption alerts, and 369 active navigational warnings
The intelligence dashboard: JWC zones (red overlays), piracy clusters (green dots), chokepoint status, and 369 active NAVWARNs — the same signals that feed the Voyage Scorer, visualized globally

The same ten signals that score individual voyages also power the global dashboard. The red overlays are JWC listed areas. The green clusters are piracy incident concentrations. The right sidebar lists chokepoint disruption levels — the Strait of Hormuz, Bab el-Mandeb, Bosphorus, all showing disruption scores of 30. The ticker at the top scrolls live: 369 active NAVWARNs. Malacca Strait disrupted at 50.

When you score a voyage, you're not querying a static database. You're querying the same live intelligence that the dashboard displays, filtered to the corridor of your specific route.


What we don't claim

Some honest limitations:

The confidence field exists precisely because we think you should know when data is incomplete. A score with 60% confidence means something different than the same score with 100% confidence, and the platform makes that visible.


If you're pricing voyage risk and want to see how your routes decompose across these ten signals, the Voyage Scorer is open to try. Pick your port pair, set vessel type and speed, and read the breakdown. I'm genuinely curious whether the signal weights match your intuition — and where they don't.

Score a voyage

Ten intelligence signals. Actual ocean routing. Full signal-by-signal breakdown.

Open the Voyage Scorer