Article Series 06 • Data Sources • Scoring Algorithm • CSIS Methodology
This site uses two primary data sources that complement and cross-validate each other.
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.
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.
The site automates the entire data processing workflow through GitHub Actions, ensuring continuous updates and an auditable process.
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:
9 → Aids to Navigation (AtoN) / dive buoys898 → Fishing net markers% → Fishing net beaconsBUOY → Buoys12.5V → Fishing net beaconsVessels 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 |
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 formula: round(behavioral_score × type_multiplier) + high_threat_indicators
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.
Transparency requires us to honestly state the limitations of this approach:
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.
This site is deliberately built on publicly available data and public code — a methodological choice, not a convenience.
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.
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.