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)
17.36 h
MAE 4.71 h · 979 voyages
Broadcast ETA (RMSE)
60.77 h
crew-declared, 281 voyages (same set)
Our advantage
71.4 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (207 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| MMSI | Cargo | Arrival | Our error | Broadcast error |
|---|---|---|---|---|
| 244670392 | container | 07/12, 12:07 PM UTC | 1.81 h | — |
| 244750687 | container | 07/12, 11:58 AM UTC | 0.08 h | — |
| 244100879 | product | 07/12, 11:46 AM UTC | 1.03 h | -22.26 h |
| 244750687 | container | 07/12, 11:42 AM UTC | 0.11 h | — |
| 244780024 | container | 07/12, 11:30 AM UTC | 4.07 h | — |
| 244750687 | container | 07/12, 11:27 AM UTC | 0.26 h | — |
| 244780024 | container | 07/12, 11:21 AM UTC | 0.51 h | — |
| 244750687 | container | 07/12, 11:14 AM UTC | 3.27 h | — |
| 244130295 | product | 07/12, 11:11 AM UTC | 0.11 h | -83.26 h |
| 245070000 | container | 07/12, 11:09 AM UTC | 0.60 h | -1601.16 h |
| 244670290 | product | 07/12, 11:03 AM UTC | 1.86 h | -3.50 h |
| 244750687 | container | 07/12, 10:57 AM UTC | 0.32 h | — |
| 211209890 | container | 07/12, 10:46 AM UTC | 0.36 h | — |
| 244731261 | container | 07/12, 10:44 AM UTC | 0.89 h | 331.90 h |
| 205566890 | container | 07/12, 10:43 AM UTC | 0.03 h | — |
| 244750687 | container | 07/12, 10:43 AM UTC | 1.58 h | — |
| 269057004 | product | 07/12, 10:40 AM UTC | 0.41 h | -17.55 h |
| 244034502 | product | 07/12, 10:33 AM UTC | 0.80 h | -5.21 h |
| 205566890 | container | 07/12, 10:30 AM UTC | -0.02 h | 5530.37 h |
| 244750687 | container | 07/12, 10:28 AM UTC | 0.30 h | — |
| 205566890 | container | 07/12, 10:12 AM UTC | 0.90 h | — |
| 244130295 | product | 07/12, 10:12 AM UTC | -0.44 h | -82.28 h |
| 244750687 | container | 07/12, 10:11 AM UTC | 0.66 h | — |
| 244000152 | product | 07/12, 10:11 AM UTC | 0.47 h | — |
| 205566890 | container | 07/12, 09:59 AM UTC | 0.34 h | — |
| 244046976 | container | 07/12, 09:56 AM UTC | 0.52 h | -0.01 h |
| 205566890 | container | 07/12, 09:54 AM UTC | 1.95 h | — |
| 244740941 | product | 07/12, 09:54 AM UTC | 0.31 h | -24.04 h |
| 244750687 | container | 07/12, 09:43 AM UTC | 0.08 h | — |
| 205566890 | container | 07/12, 09:36 AM UTC | 0.68 h | — |
| 244180985 | product | 07/12, 09:35 AM UTC | -0.35 h | — |
| 244710116 | product | 07/12, 09:35 AM UTC | 0.78 h | -53.68 h |
| 211442250 | product | 07/12, 09:34 AM UTC | -0.28 h | — |
| 244750687 | container | 07/12, 09:26 AM UTC | -0.20 h | — |
| 244810599 | product | 07/12, 09:21 AM UTC | -0.47 h | — |
| 304010515 | general-cargo | 07/12, 09:16 AM UTC | -0.81 h | -189.27 h |
| 244750687 | container | 07/12, 09:14 AM UTC | 0.47 h | — |
| 244630720 | product | 07/12, 09:13 AM UTC | -0.35 h | -16.02 h |
| 244034502 | product | 07/12, 09:13 AM UTC | 0.51 h | -44.02 h |
| 244730014 | product | 07/12, 09:11 AM UTC | -0.15 h | -1044.86 h |
| 205566890 | container | 07/12, 09:10 AM UTC | 2.56 h | — |
| 244620841 | product | 07/12, 09:04 AM UTC | -0.40 h | -55.34 h |
| 244700690 | product | 07/12, 09:04 AM UTC | 1.53 h | -316.74 h |
| 205566890 | container | 07/12, 08:59 AM UTC | -0.27 h | — |
| 244750687 | container | 07/12, 08:57 AM UTC | -0.11 h | — |
| 244030119 | container | 07/12, 08:56 AM UTC | -0.44 h | — |
| 244750687 | container | 07/12, 08:43 AM UTC | -0.12 h | — |
| 244030175 | container | 07/12, 08:38 AM UTC | -0.17 h | -854.64 h |
| 244710523 | product | 07/12, 08:37 AM UTC | 0.69 h | — |
| 244110242 | container | 07/12, 08:32 AM UTC | 6.70 h | -207.01 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.