Prediction receipts
Every ETA we publish is timestamped before the vessel arrives, then scored against the actual arrival. No retro-fitting, no cherry-picking — the losses stay on the board with the wins. Last 30 days, most recent first.
Receipts settled
100
closed voyages with a pre-arrival prediction
Head-to-head vs broadcast
91 %
closer than the crew's own ETA on 42/46 comparable voyages
Average lead time
2 h
between the last locked prediction and arrival
The ledger
error = ETA minus actual arrival (hours)| Port | MMSI | Prediction locked | Arrived | Our error | Broadcast error | Verdict |
|---|---|---|---|---|---|---|
| 🇩🇪 Hamburg | 211888150 | 12 Oct, 03:48 UTC | 12 Oct, 03:57 UTC | -0.3 h | — | n/a |
| 🇳🇱 Rotterdam | 253242498 | 12 Oct, 03:52 UTC | 12 Oct, 03:56 UTC | -1.7 h | 23.1 h | ✓ beat |
| 🇳🇱 Rotterdam | 211169910 | 12 Oct, 03:51 UTC | 12 Oct, 03:56 UTC | -1.8 h | sentinel | n/a |
| 🇧🇪 Antwerp | 205218590 | 12 Oct, 03:52 UTC | 12 Oct, 03:56 UTC | 3.9 h | — | n/a |
| 🇨🇳 Shenzhen | 477642100 | 12 Oct, 02:22 UTC | 12 Oct, 03:56 UTC | 0.4 h | sentinel | n/a |
| 🇳🇱 Amsterdam | 205571490 | 12 Oct, 03:49 UTC | 12 Oct, 03:54 UTC | 0.5 h | — | n/a |
| 🇳🇱 Rotterdam | 244650935 | 12 Oct, 03:52 UTC | 12 Oct, 03:53 UTC | 10.6 h | — | n/a |
| 🇳🇱 Rotterdam | 244710378 | 12 Oct, 03:44 UTC | 12 Oct, 03:53 UTC | -1.8 h | — | n/a |
| 🇳🇱 Amsterdam | 244690352 | 12 Oct, 03:48 UTC | 12 Oct, 03:53 UTC | -0.2 h | — | n/a |
| 🇧🇪 Antwerp | 244076909 | 12 Oct, 03:45 UTC | 12 Oct, 03:53 UTC | -0.1 h | — | n/a |
| 🇭🇰 Hong Kong | 477997254 | 12 Oct, 03:43 UTC | 12 Oct, 03:52 UTC | 1.1 h | — | n/a |
| 🇳🇱 Rotterdam | 244620698 | 12 Oct, 03:42 UTC | 12 Oct, 03:50 UTC | -0.5 h | — | n/a |
| 🇳🇱 Amsterdam | 563319100 | 12 Oct, 03:46 UTC | 12 Oct, 03:50 UTC | 1.2 h | -141.8 h | ✓ beat |
| 🇨🇳 Shenzhen | 413601030 | 12 Oct, 03:30 UTC | 12 Oct, 03:49 UTC | 0.5 h | -2.3 h | ✓ beat |
| 🇭🇰 Hong Kong | 477997312 | 12 Oct, 03:44 UTC | 12 Oct, 03:49 UTC | 0.4 h | — | n/a |
| 🇧🇪 Antwerp | 244660065 | 12 Oct, 03:40 UTC | 12 Oct, 03:47 UTC | 2.2 h | — | n/a |
| 🇩🇪 Hamburg | 209276000 | 12 Oct, 03:37 UTC | 12 Oct, 03:46 UTC | -0.4 h | -20.8 h | ✓ beat |
| 🇧🇪 Antwerp | 211530930 | 12 Oct, 03:38 UTC | 12 Oct, 03:44 UTC | 1.3 h | — | n/a |
| 🇩🇪 Hamburg | 211201080 | 12 Oct, 03:42 UTC | 12 Oct, 03:44 UTC | 0.0 h | -81.4 h | ✓ beat |
| 🇧🇪 Antwerp | 253242285 | 12 Oct, 03:36 UTC | 12 Oct, 03:43 UTC | 0.7 h | -143.8 h | ✓ beat |
| 🇭🇰 Hong Kong | 477997254 | 12 Oct, 03:34 UTC | 12 Oct, 03:41 UTC | 1.1 h | — | n/a |
| 🇳🇱 Rotterdam | 244650575 | 12 Oct, 03:33 UTC | 12 Oct, 03:41 UTC | 8.5 h | — | n/a |
| 🇧🇪 Antwerp | 244039456 | 12 Oct, 03:34 UTC | 12 Oct, 03:40 UTC | -0.9 h | — | n/a |
| 🇧🇪 Antwerp | 244660108 | 12 Oct, 03:32 UTC | 12 Oct, 03:40 UTC | 1.8 h | sentinel | n/a |
| 🇳🇱 Amsterdam | 244770588 | 12 Oct, 03:32 UTC | 12 Oct, 03:40 UTC | 0.2 h | sentinel | n/a |
| 🇭🇰 Hong Kong | 352980812 | 12 Oct, 03:33 UTC | 12 Oct, 03:39 UTC | 2.1 h | -142.7 h | ✓ beat |
| 🇸🇬 Singapore | 563021100 | 12 Oct, 03:31 UTC | 12 Oct, 03:39 UTC | 6.5 h | 7.3 h | ✓ beat |
| 🇳🇱 Amsterdam | 244690358 | 12 Oct, 03:35 UTC | 12 Oct, 03:38 UTC | 0.1 h | — | n/a |
| 🇳🇱 Amsterdam | 636018752 | 12 Oct, 03:35 UTC | 12 Oct, 03:38 UTC | 1.0 h | -1.6 h | ✓ beat |
| 🇳🇱 Rotterdam | 205508590 | 12 Oct, 03:27 UTC | 12 Oct, 03:38 UTC | -0.8 h | sentinel | n/a |
| 🇩🇪 Hamburg | 636025672 | 12 Oct, 03:34 UTC | 12 Oct, 03:37 UTC | 0.7 h | -26.6 h | ✓ beat |
| 🇯🇵 Yokohama / Tokyo Bay | 431011759 | 12 Oct, 03:28 UTC | 12 Oct, 03:36 UTC | 0.6 h | -41.4 h | ✓ beat |
| 🇧🇪 Antwerp | 205590790 | 12 Oct, 03:19 UTC | 12 Oct, 03:35 UTC | -1.1 h | 7.9 h | ✓ beat |
| 🇭🇰 Hong Kong | 477995065 | 12 Oct, 03:30 UTC | 12 Oct, 03:34 UTC | 2.2 h | — | n/a |
| 🇧🇪 Antwerp | 244830333 | 12 Oct, 03:20 UTC | 12 Oct, 03:33 UTC | -0.4 h | 16.0 h | ✓ beat |
| 🇧🇪 Antwerp | 244504782 | 12 Oct, 03:24 UTC | 12 Oct, 03:33 UTC | 0.8 h | — | n/a |
| 🇯🇵 Yokohama / Tokyo Bay | 431015069 | 12 Oct, 03:14 UTC | 12 Oct, 03:32 UTC | 0.5 h | -55.5 h | ✓ beat |
| 🇧🇪 Antwerp | 244002553 | 12 Oct, 03:21 UTC | 12 Oct, 03:30 UTC | 1.5 h | — | n/a |
| 🇳🇱 Rotterdam | 244218293 | 12 Oct, 03:16 UTC | 12 Oct, 03:30 UTC | 0.6 h | -2.8 h | ✓ beat |
| 🇧🇪 Antwerp | 244650607 | 12 Oct, 03:27 UTC | 12 Oct, 03:30 UTC | -0.3 h | — | n/a |
| 🇫🇷 Le Havre | 232046826 | 12 Oct, 03:17 UTC | 12 Oct, 03:29 UTC | 0.4 h | sentinel | n/a |
| 🇳🇱 Rotterdam | 244650709 | 12 Oct, 03:18 UTC | 12 Oct, 03:28 UTC | 4.5 h | -1.5 h | ✗ missed |
| 🇳🇱 Rotterdam | 257562000 | 12 Oct, 03:21 UTC | 12 Oct, 03:28 UTC | 5.7 h | -126.5 h | ✓ beat |
| 🇳🇱 Amsterdam | 205585590 | 12 Oct, 03:13 UTC | 12 Oct, 03:28 UTC | 3.4 h | -85.6 h | ✓ beat |
| 🇺🇸 Los Angeles | 352004278 | 12 Oct, 03:16 UTC | 12 Oct, 03:24 UTC | 0.6 h | sentinel | n/a |
| 🇳🇱 Amsterdam | 244130285 | 12 Oct, 03:05 UTC | 12 Oct, 03:22 UTC | 3.2 h | -55.4 h | ✓ beat |
| 🇧🇪 Antwerp | 205218590 | 12 Oct, 03:10 UTC | 12 Oct, 03:19 UTC | -2.0 h | sentinel | n/a |
| 🇬🇧 Southampton | 232019192 | 12 Oct, 03:11 UTC | 12 Oct, 03:17 UTC | 0.3 h | — | n/a |
| 🇧🇪 Antwerp | 636022343 | 12 Oct, 03:08 UTC | 12 Oct, 03:17 UTC | -0.4 h | 159.7 h | ✓ beat |
| 🇯🇵 Yokohama / Tokyo Bay | 431014012 | 12 Oct, 03:07 UTC | 12 Oct, 03:15 UTC | 0.4 h | -128.3 h | ✓ beat |
| 🇧🇪 Antwerp | 244039456 | 12 Oct, 03:07 UTC | 12 Oct, 03:14 UTC | -0.4 h | — | n/a |
| 🇳🇱 Rotterdam | 244650874 | 12 Oct, 03:03 UTC | 12 Oct, 03:09 UTC | 1.3 h | sentinel | n/a |
| 🇭🇰 Hong Kong | 477995063 | 12 Oct, 02:59 UTC | 12 Oct, 03:09 UTC | 1.1 h | — | n/a |
| 🇿🇦 Durban | 636019592 | 08 Oct, 11:58 UTC | 12 Oct, 03:07 UTC | -86.4 h | -89.1 h | ✓ beat |
| 🇳🇱 Amsterdam | 244670266 | 12 Oct, 03:00 UTC | 12 Oct, 03:07 UTC | 1.5 h | -11.1 h | ✓ beat |
| 🇨🇳 Shenzhen | 412472910 | 12 Oct, 02:46 UTC | 12 Oct, 03:04 UTC | 5.6 h | -23.1 h | ✓ beat |
| 🇸🇬 Singapore | 563882000 | 11 Oct, 05:55 UTC | 12 Oct, 03:04 UTC | -18.7 h | sentinel | n/a |
| 🇳🇱 Rotterdam | 205581790 | 12 Oct, 03:01 UTC | 12 Oct, 03:03 UTC | 0.1 h | — | n/a |
| 🇳🇱 Rotterdam | 205310590 | 12 Oct, 02:50 UTC | 12 Oct, 03:03 UTC | 3.0 h | sentinel | n/a |
| 🇧🇪 Antwerp | 244670312 | 12 Oct, 02:59 UTC | 12 Oct, 03:03 UTC | 2.6 h | — | n/a |
| 🇧🇪 Antwerp | 255801780 | 12 Oct, 02:41 UTC | 12 Oct, 03:01 UTC | -0.4 h | -7.5 h | ✓ beat |
| 🇳🇱 Rotterdam | 205578990 | 12 Oct, 02:50 UTC | 12 Oct, 02:59 UTC | 3.0 h | 8.3 h | ✓ beat |
| 🇧🇪 Antwerp | 235070283 | 12 Oct, 02:51 UTC | 12 Oct, 02:59 UTC | -0.3 h | 32.0 h | ✓ beat |
| 🇭🇰 Hong Kong | 477997157 | 12 Oct, 02:57 UTC | 12 Oct, 02:59 UTC | 1.5 h | — | n/a |
| 🇳🇱 Amsterdam | 244020558 | 12 Oct, 02:51 UTC | 12 Oct, 02:59 UTC | -0.1 h | -78.4 h | ✓ beat |
| 🇳🇱 Rotterdam | 244650537 | 12 Oct, 02:49 UTC | 12 Oct, 02:57 UTC | 2.3 h | -10.1 h | ✓ beat |
| 🇳🇱 Rotterdam | 244822424 | 12 Oct, 02:54 UTC | 12 Oct, 02:57 UTC | -0.1 h | 34.5 h | ✓ beat |
| 🇸🇬 Singapore | 636015007 | 12 Oct, 02:41 UTC | 12 Oct, 02:55 UTC | 5.5 h | -2.9 h | ✗ missed |
| 🇧🇪 Antwerp | 244650607 | 12 Oct, 02:46 UTC | 12 Oct, 02:55 UTC | -1.2 h | — | n/a |
| 🇯🇵 Yokohama / Tokyo Bay | 431300239 | 12 Oct, 02:50 UTC | 12 Oct, 02:54 UTC | 6.7 h | -90.9 h | ✓ beat |
| 🇳🇱 Amsterdam | 244140757 | 12 Oct, 02:44 UTC | 12 Oct, 02:54 UTC | -0.0 h | -67.6 h | ✓ beat |
| 🇳🇱 Rotterdam | 244700714 | 12 Oct, 02:51 UTC | 12 Oct, 02:53 UTC | 5.3 h | — | n/a |
| 🇯🇵 Yokohama / Tokyo Bay | 431009717 | 12 Oct, 02:43 UTC | 12 Oct, 02:53 UTC | 3.0 h | — | n/a |
| 🇭🇰 Hong Kong | 413469660 | 12 Oct, 02:48 UTC | 12 Oct, 02:52 UTC | 1.6 h | — | n/a |
| 🇧🇪 Antwerp | 538008886 | 11 Oct, 14:36 UTC | 12 Oct, 02:52 UTC | -10.9 h | -20.9 h | ✓ beat |
| 🇭🇰 Hong Kong | 477996907 | 12 Oct, 02:42 UTC | 12 Oct, 02:52 UTC | 1.8 h | sentinel | n/a |
| 🇲🇦 Tanger Med | 538007617 | 12 Oct, 01:40 UTC | 12 Oct, 02:51 UTC | -1.9 h | sentinel | n/a |
| 🇳🇱 Rotterdam | 244850962 | 12 Oct, 02:50 UTC | 12 Oct, 02:51 UTC | 4.8 h | — | n/a |
| 🇳🇱 Rotterdam | 205505590 | 12 Oct, 02:43 UTC | 12 Oct, 02:49 UTC | 1.4 h | 13.5 h | ✓ beat |
| 🇧🇪 Antwerp | 352003272 | 12 Oct, 02:39 UTC | 12 Oct, 02:48 UTC | -0.8 h | sentinel | n/a |
| 🇳🇱 Rotterdam | 215345000 | 12 Oct, 02:32 UTC | 12 Oct, 02:48 UTC | 4.7 h | sentinel | n/a |
| 🇬🇧 Felixstowe | 230925000 | 12 Oct, 02:39 UTC | 12 Oct, 02:48 UTC | 0.5 h | -45.3 h | ✓ beat |
| 🇳🇱 Amsterdam | 244371956 | 12 Oct, 02:38 UTC | 12 Oct, 02:47 UTC | 0.1 h | 2.4 h | ✓ beat |
| 🇸🇬 Singapore | 538012478 | 12 Oct, 01:35 UTC | 12 Oct, 02:47 UTC | 8.5 h | sentinel | n/a |
| 🇭🇰 Hong Kong | 477995065 | 12 Oct, 02:38 UTC | 12 Oct, 02:46 UTC | 1.3 h | — | n/a |
| 🇧🇪 Antwerp | 244000542 | 12 Oct, 02:38 UTC | 12 Oct, 02:45 UTC | -1.1 h | -110.0 h | ✓ beat |
| 🇳🇱 Amsterdam | 244690352 | 12 Oct, 02:37 UTC | 12 Oct, 02:45 UTC | 0.1 h | -6.6 h | ✓ beat |
| 🇸🇬 Singapore | 563021100 | 12 Oct, 02:27 UTC | 12 Oct, 02:45 UTC | 4.8 h | -45.8 h | ✓ beat |
| 🇧🇪 Antwerp | 371474000 | 12 Oct, 02:39 UTC | 12 Oct, 02:44 UTC | -0.5 h | sentinel | n/a |
| 🇭🇰 Hong Kong | 412400040 | 12 Oct, 02:32 UTC | 12 Oct, 02:43 UTC | 0.4 h | -10.7 h | ✓ beat |
| 🇨🇳 Shenzhen | 256381000 | 12 Oct, 02:16 UTC | 12 Oct, 02:42 UTC | 4.0 h | -114.7 h | ✓ beat |
| 🇳🇱 Rotterdam | 269057536 | 12 Oct, 02:28 UTC | 12 Oct, 02:42 UTC | -3.3 h | 2.6 h | ✗ missed |
| 🇧🇪 Antwerp | 205588290 | 12 Oct, 02:27 UTC | 12 Oct, 02:41 UTC | -0.7 h | 7.1 h | ✓ beat |
| 🇭🇰 Hong Kong | 477995137 | 12 Oct, 02:28 UTC | 12 Oct, 02:40 UTC | 0.5 h | — | n/a |
| 🇧🇪 Antwerp | 244009301 | 12 Oct, 02:23 UTC | 12 Oct, 02:38 UTC | -0.5 h | — | n/a |
| 🇭🇰 Hong Kong | 538008845 | 11 Oct, 13:17 UTC | 12 Oct, 02:38 UTC | -12.0 h | sentinel | n/a |
| 🇳🇱 Rotterdam | 563052100 | 12 Oct, 02:25 UTC | 12 Oct, 02:37 UTC | 1.5 h | sentinel | n/a |
| 🇳🇱 Rotterdam | 244620945 | 12 Oct, 02:26 UTC | 12 Oct, 02:35 UTC | -0.2 h | — | n/a |
| 🇧🇪 Antwerp | 244730016 | 12 Oct, 02:27 UTC | 12 Oct, 02:35 UTC | -1.6 h | -33.5 h | ✓ beat |
| 🇭🇰 Hong Kong | 413865572 | 12 Oct, 02:29 UTC | 12 Oct, 02:33 UTC | 0.9 h | -0.6 h | ✗ missed |
Why this page exists
- A receipt only enters the ledger if its prediction timestamp (`predicted_at`) precedes the actual arrival — enforced in the query, not by editorial choice.
- Broadcast ETAs more than 168 h from the actual arrival are marked as AIS sentinel values and excluded from the head-to-head, as documented on /methodology.
- Aggregated accuracy (RMSE/MAE per port and window) lives on /precision.