🛰️ Taiwan Gray Zone & Submarine Cable Monitor

Gray Zone Monitor Articles

Our Methodology

Article Series 06 • Data Sources • Scoring Algorithm • CSIS Methodology

SERIES → 01 Submarine Cable 02 AIS 03 Taiwan Status 04 Threats 05 Enforcement 06 Methodology
Thousands of vessels pass through the Taiwan Strait and surrounding waters every day. Fishing boats, cargo ships, tankers, passenger ferries, coast guard vessels — the vast majority engaged in completely legitimate navigation.

Our task is to find, within this busy maritime environment, the few vessels that genuinely warrant attention. Not too many (false positives cause alert fatigue), and not missing the real threats. This requires a clear, repeatable, and verifiable methodology.

Data Sources

This site uses two primary data sources that complement and cross-validate each other.

Source 1: Taiwan Port Bureau AIS Data Via src/fetch_ais_data.py, real-time AIS data is automatically retrieved from the Taiwan Port Bureau API every 2 hours, covering the Taiwan Strait and surrounding waters (~20–28°N, 112–128°E). Data includes position, speed, heading, destination, and vessel identity for all vessels broadcasting AIS. Retrieved via SOCKS5 proxy for reliability.
Source 2: Global Fishing Watch SAR Satellite Via src/fetch_gfw_data.py, SAR satellite imagery analysis results are regularly retrieved from the Global Fishing Watch API. SAR detects metallic objects on the water surface in all weather conditions and flags "dark vessels" not broadcasting AIS. Cross-referencing both data sources is the core method for detecting AIS dark behavior.

Data Pipeline

The site automates the entire data processing workflow through GitHub Actions, ensuring continuous updates and an auditable process.

01
Fetch AIS Data (every 2h)
Update vessel positions, create/update vessel profiles, append to track history (14-day retention)
fetch_ais_data.py
02
Fetch GFW SAR Data (every 12h)
Download satellite dark vessel detection results, update SAR dataset
fetch_gfw_data.py
03
Detect Ship-to-Ship (STS) Transfers
Identify events where two vessels meet at the same location and time at low speed, flagging as suspected STS rendezvous
detect_ship_transfers.py
04
Run Threat Scoring
Apply 8 scoring criteria to all known vessels, calculate final threat score and risk level
analyze_suspicious.py
05
Generate Dashboard Data
Consolidate all analysis results, output data.json for the frontend, deploy to GitHub Pages
generate_dashboard.py

Exclusion Rules: Filter Out Irrelevant Signals First

The monitoring area contains many buoys, fishing net markers, and other equipment that also broadcast AIS signals, but they're obviously not vessels of interest. These are excluded before expensive analysis begins:

8 Threat Scoring Criteria

Vessels that pass the exclusion rules are evaluated against the following 8 criteria. The scoring framework is derived from CSIS (Center for Strategic and International Studies) "Signals in the Swarm" report.

# Criterion Detection Method Score
1a Cable Proximity Track points within 5km of submarine cable +2
1b Cable Loitering Low speed (<8kn) near cable for >3 hours +3
2 Zigzag Pattern ≥3 turns of ≥45° heading change +1
3 200m Depth Contour ≥30% of track time near continental shelf edge +1
4 AIS Anomalies Name changes ≥2, dark gaps >18hr, type changes, identity events +1 / +3
5 Non-Top-10 Flag MMSI MID not in top-10 flag state set +1
6 UN Sanctions IMO or name match against sanctions list +8
7 AIS Spoofing Impossible physics / box pattern / circle pattern +4 each
8 ITU MARS Mismatch Ship name, IMO, or call sign differs from ITU registry +3
9 STS Transfer Involved in ship-to-ship rendezvous +2 / +5

Vessel Type Multipliers

The same behavior carries different threat levels for different vessel types. Behavioral criteria (1–3, 5) are multiplied by the following coefficients; high-threat indicators (4, 6–9) are not multiplied.

Vessel Type Multiplier Rationale
Cargo, Tanker, LNG ×1.0 Heavy anchors, high tonnage → highest real cable damage risk
Chinese Gov't vessels (CG, MSA, Rescue, Research) ×0.5 China public-service / special-interest state vessels
Fishing ×0.2 Small, routine operations → low cable threat
Other / Unknown ×0.5 Uncertain, conservative estimate

Final Score and Risk Levels

Final score formula: round(behavioral_score × type_multiplier) + high_threat_indicators

NORMAL< 5No significant anomalies, not listed in monitoring
MEDIUM5–7Slightly elevated, tracked but not flagged suspicious
HIGH8–11Suspicious behavior — flagged in dashboard
CRITICAL≥ 12Multiple strong indicators simultaneously triggered — highest alert

Methodological Basis: CSIS "Signals in the Swarm"

This site's scoring framework references and extends the "Signals in the Swarm" research report published by the Center for Strategic and International Studies (CSIS). The report systematically analyzes behavioral patterns of Chinese fishing fleets in Taiwan's surrounding waters, identifying core indicators including cable proximity, AIS dark events, and zigzag navigation.

Building on the CSIS framework, this site adds AIS spoofing detection, ITU MARS registry verification, STS rendezvous detection, and integrates GFW SAR satellite data to enhance detection capabilities specific to Taiwan's waters.

Methodological Limitations

Transparency requires us to honestly state the limitations of this approach:

Open Source and Transparent All code for this site is open-sourced under MIT license on GitHub. Anyone can review our scoring logic, data processing methods, and submit improvement suggestions. We believe that in the context of gray zone threats, transparency itself is a form of defense.

Maritime-Zone and Cable-Buffer Scoring

Beyond the coarser test of "is any track point within 5 km of a cable," the site also makes a finer geographic read of a vessel's most recent position, folding location itself into the score.

Using Taiwan's official territorial baseline, the system classifies which legal zone that position falls in (internal waters / territorial sea 12 nm / contiguous zone 24 nm / EEZ / high seas) and computes its distance band to the nearest submarine cable (≤1km / ≤5km / ≤10km). On top of that, two bounded behavioral bonuses are added:

Both are "behavioral" points and are multiplied by the same vessel-type weighting (cargo high, fishing low). The intent is to refine, not replace, the existing 5 km net — giving extra but limited weight to the scenario that best matches a gray-zone cable threat: "sitting on a cable right now, inside our jurisdiction." EEZ here uses a simplified "≤200 nm from baseline" definition for risk analysis only, not a legal delimitation.

Why an Open-Source (OSINT) Approach?

This site is deliberately built on publicly available data and public code — a methodological choice, not a convenience.

🔍
VerifiableAnyone can inspect the scoring logic, adjust thresholds, or even challenge why a given ship was flagged. Conclusions don't ask you to "trust me" — they invite you to "see for yourself."
🔁
ReproducibleThe same input data and the same code yield the same result. That lets the analysis be independently checked, and lets errors be identified and corrected.
⚖️
RestrainedOpen source also means openly admitting limits: data has gaps, and a score is a risk ranking, not a legal finding. Transparency is what guards against over-interpretation.

The value of OSINT is not to replace official intelligence but to provide a shared factual basis anyone can audit. When discussing gray-zone activity around Taiwan, an open, reproducible tool that states its limits honestly deserves more trust than a black-box conclusion.

FAQ

Where does the site's data come from?
Two sources — Taiwan Port Bureau AIS data (updated every 2 hours) and Global Fishing Watch SAR satellite dark-vessel detections, which are cross-referenced.
Does a high threat score mean a vessel is guilty?
No. A high score indicates anomalous behavior, not confirmed intent. The system is designed to assist human judgment, not replace professional intelligence analysis.
How many scoring criteria are there?
Eight, including cable proximity, low-speed loitering, zigzag navigation, AIS anomalies and spoofing, sanctions matching, and STS rendezvous — weighted by vessel type.
Is this project open source?
Yes. All code is published on GitHub under the MIT license, so anyone can review the scoring logic and data processing, and suggest improvements.
← 05 Enforcement Framework ← Back to All Articles Go to Live Dashboard →

Sources

The concepts on this page can be verified against these public, authoritative sources:

This page is for research and education; detection signals are leads to investigate, not legal or factual findings. See the methodology.

Related gray-zone topics