ETA accuracy benchmark · 🇩🇪 Bremerhaven
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Bremerhaven, measured on closed voyages over the last 7 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
6.04 h
MAE 1.61 h · 337 voyages
Broadcast ETA (RMSE)
55.72 h
crew-declared, 131 voyages (same set)
Our advantage
89.2 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (107 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 211523910 | product | 10/12, 05:38 AM UTC | -0.37 h | -24.65 h |
| 636024193 | container | 10/12, 05:18 AM UTC | 0.87 h | -2820.80 h |
| 440252000 | container | 10/12, 01:54 AM UTC | 0.38 h | — |
| 440252000 | container | 10/12, 01:12 AM UTC | 0.02 h | -3.71 h |
| 352929000 | container | 10/12, 12:03 AM UTC | 0.25 h | 23.94 h |
| 219863000 | container | 10/11, 11:49 PM UTC | 2.63 h | -2289.32 h |
| 231860000 | container | 10/11, 11:47 PM UTC | 0.88 h | -442.81 h |
| 352929000 | container | 10/11, 11:35 PM UTC | 0.95 h | 24.40 h |
| 211189800 | product | 10/11, 10:58 PM UTC | 0.08 h | — |
| 311995000 | container | 10/11, 10:28 PM UTC | 0.55 h | — |
| 211189800 | chemical | 10/11, 10:16 PM UTC | -0.20 h | -136.28 h |
| 255915667 | container | 10/11, 10:11 PM UTC | 1.44 h | -138.20 h |
| 311995000 | container | 10/11, 09:44 PM UTC | 1.14 h | -10.74 h |
| 248131000 | container | 10/11, 07:56 PM UTC | 0.17 h | -4.45 h |
| 248131000 | container | 10/11, 06:54 PM UTC | -0.14 h | -3.42 h |
| 244110566 | container | 10/11, 06:51 PM UTC | -0.21 h | -2323.86 h |
| 255805594 | general-cargo | 10/11, 06:40 PM UTC | 1.77 h | -687.68 h |
| 248131000 | container | 10/11, 06:26 PM UTC | 0.04 h | -109.44 h |
| 431190000 | container | 10/11, 05:19 PM UTC | 0.76 h | 1422.69 h |
| 211428750 | product | 10/11, 05:11 PM UTC | 0.40 h | — |
| 211428750 | product | 10/11, 04:55 PM UTC | 0.47 h | 2089.17 h |
| 211428750 | product | 10/11, 04:07 PM UTC | 0.57 h | — |
| 211287870 | product | 10/11, 04:01 PM UTC | 0.03 h | -79.63 h |
| 563277500 | container | 10/11, 02:43 PM UTC | 1.56 h | -814.22 h |
| 211428750 | product | 10/11, 12:39 PM UTC | -0.54 h | — |
| 219678000 | container | 10/11, 12:15 PM UTC | 1.97 h | -498.26 h |
| 211480540 | product | 10/11, 11:19 AM UTC | 0.12 h | — |
| 211428750 | product | 10/11, 11:09 AM UTC | 0.33 h | — |
| 211812980 | product | 10/11, 10:51 AM UTC | -0.08 h | — |
| 211812980 | product | 10/11, 10:33 AM UTC | 0.14 h | -1030.55 h |
| 211480540 | product | 10/11, 08:46 AM UTC | 1.82 h | — |
| 636093117 | container | 10/11, 08:31 AM UTC | 0.39 h | -1658.53 h |
| 211287870 | product | 10/11, 08:04 AM UTC | -0.02 h | — |
| 211812980 | product | 10/11, 07:58 AM UTC | 3.33 h | -1027.98 h |
| 211287870 | product | 10/11, 07:13 AM UTC | 0.23 h | — |
| 211812980 | product | 10/11, 07:05 AM UTC | 0.04 h | — |
| 211428750 | product | 10/11, 05:35 AM UTC | -0.06 h | 2100.51 h |
| 305654000 | container | 10/11, 05:07 AM UTC | 0.38 h | -160.12 h |
| 211428750 | product | 10/11, 05:05 AM UTC | 0.12 h | — |
| 311001547 | container | 10/11, 04:58 AM UTC | 0.42 h | -4.48 h |
| 255806514 | container | 10/11, 04:42 AM UTC | 2.02 h | — |
| 563308400 | container | 10/11, 04:24 AM UTC | 0.87 h | -2024.40 h |
| 311001547 | container | 10/11, 04:12 AM UTC | 0.82 h | -744.21 h |
| 255805907 | container | 10/11, 12:31 AM UTC | 0.74 h | — |
| 477249500 | container | 10/10, 10:42 PM UTC | 0.68 h | 0.30 h |
| 211287870 | product | 10/10, 09:43 PM UTC | 0.39 h | -61.33 h |
| 255916314 | container | 10/10, 09:21 PM UTC | 1.54 h | -403.36 h |
| 255806514 | container | 10/10, 07:31 PM UTC | 1.51 h | -215.52 h |
| 219543000 | container | 10/10, 06:45 PM UTC | 1.18 h | -130.26 h |
| 218627000 | general-cargo | 10/10, 06:08 PM UTC | 0.50 h | 12.86 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.