ETA accuracy benchmark · 🇳🇱 Amsterdam
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Amsterdam, measured on closed voyages over the last 30 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
1.34 h
MAE 13.24 h · 987 voyages
Broadcast ETA (RMSE)
59.91 h
crew-declared, 282 voyages (same set)
Our advantage
97.8 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (184 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 244690653 | container | 10/12, 04:39 AM UTC | -0.22 h | 4814.35 h |
| 244750687 | container | 10/12, 04:37 AM UTC | -0.13 h | — |
| 244690137 | container | 10/12, 04:36 AM UTC | 2.63 h | — |
| 244373397 | container | 10/12, 04:35 AM UTC | 0.11 h | — |
| 244750687 | container | 10/12, 04:25 AM UTC | 3.24 h | — |
| 218027120 | product | 10/12, 04:25 AM UTC | 0.10 h | -37.87 h |
| 269057594 | container | 10/12, 04:23 AM UTC | -0.14 h | — |
| 244660196 | container | 10/12, 04:22 AM UTC | -1042.66 h | -1045.14 h |
| 244770588 | container | 10/12, 04:21 AM UTC | 2.07 h | 6811.65 h |
| 244690137 | container | 10/12, 04:14 AM UTC | 0.23 h | — |
| 244001448 | product | 10/12, 04:10 AM UTC | 0.60 h | 3.13 h |
| 205566890 | container | 10/12, 04:07 AM UTC | 0.10 h | — |
| 244690137 | container | 10/12, 04:06 AM UTC | 2.41 h | — |
| 211395020 | product | 10/12, 04:05 AM UTC | 0.95 h | -148.10 h |
| 211540960 | product | 10/12, 04:03 AM UTC | 1.29 h | — |
| 244660117 | container | 10/12, 04:03 AM UTC | 0.04 h | — |
| 244102434 | container | 10/12, 03:58 AM UTC | -0.33 h | -54.47 h |
| 205571490 | container | 10/12, 03:54 AM UTC | 0.51 h | — |
| 244690352 | container | 10/12, 03:53 AM UTC | -0.23 h | — |
| 563319100 | product | 10/12, 03:50 AM UTC | 1.17 h | -141.84 h |
| 244770588 | container | 10/12, 03:40 AM UTC | 0.15 h | 6812.33 h |
| 244690358 | container | 10/12, 03:38 AM UTC | 0.12 h | — |
| 636018752 | product | 10/12, 03:38 AM UTC | 1.00 h | -1.63 h |
| 205585590 | container | 10/12, 03:28 AM UTC | 3.36 h | -85.59 h |
| 244130285 | container | 10/12, 03:22 AM UTC | 3.22 h | -55.38 h |
| 244670266 | product | 10/12, 03:07 AM UTC | 1.51 h | -11.13 h |
| 244020558 | container | 10/12, 02:59 AM UTC | -0.09 h | -78.35 h |
| 244140757 | container | 10/12, 02:54 AM UTC | -0.01 h | -67.57 h |
| 244371956 | container | 10/12, 02:47 AM UTC | 0.12 h | 2.38 h |
| 244690352 | container | 10/12, 02:45 AM UTC | 0.15 h | -6.63 h |
| 211476600 | container | 10/12, 02:31 AM UTC | 0.51 h | 3201.73 h |
| 244650971 | container | 10/12, 02:23 AM UTC | -0.03 h | — |
| 636022979 | product | 10/12, 02:21 AM UTC | 0.01 h | -405.35 h |
| 211417530 | container | 10/12, 02:14 AM UTC | -1.10 h | -661.36 h |
| 244371956 | container | 10/12, 02:12 AM UTC | 0.02 h | 2.96 h |
| 244710165 | container | 10/12, 02:05 AM UTC | -475.85 h | -465.59 h |
| 305002300 | container | 10/12, 01:55 AM UTC | 0.64 h | -134.93 h |
| 211500430 | product | 10/12, 01:44 AM UTC | 0.11 h | -29.75 h |
| 205592790 | product | 10/12, 01:31 AM UTC | 0.71 h | 3.26 h |
| 244030466 | container | 10/12, 01:29 AM UTC | 0.34 h | -7.36 h |
| 211494230 | product | 10/12, 01:13 AM UTC | 1.59 h | — |
| 244790153 | container | 10/12, 01:08 AM UTC | 0.65 h | — |
| 244790153 | container | 10/12, 12:42 AM UTC | -1.11 h | -398.66 h |
| 205571490 | container | 10/12, 12:42 AM UTC | 1.13 h | — |
| 244670612 | product | 10/12, 12:41 AM UTC | 1.05 h | -50.68 h |
| 244730412 | container | 10/12, 12:39 AM UTC | 2.25 h | — |
| 244371956 | container | 10/12, 12:38 AM UTC | 2.25 h | — |
| 244730412 | container | 10/12, 12:33 AM UTC | 3.24 h | — |
| 244660933 | container | 10/12, 12:32 AM UTC | 1.35 h | — |
| 244730412 | container | 10/12, 12:31 AM UTC | 1.31 h | — |
See it on a live desk
Predicted ETAs, congestion and sanctions screening across 51 ports — try it in one click, no signup.
How it's measured
- Predicted ETA: distance-to-berth over speed-made-good, refreshed on every AIS position, with a seasonal correction from rolling medians.
- Broadcast ETA: the crew-entered ETA in the vessel's AIS message — the de-facto industry default.
- Both are compared to the actual arrival timestamp on the same closed voyages. We report RMSE (penalises large misses) and MAE (typical error).
- Broadcast ETAs more than 7 days off are dropped as AIS sentinel / placeholder values, and our model is scored on that same set — so the comparison is honest, not cherry-picked.
- Coverage is public AIS only; ports with weak coverage show fewer closed voyages. We'd rather show a small honest sample than a big misleading one.