ETA accuracy benchmark · 🇩🇪 Hamburg
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Hamburg, 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)
16.85 h
MAE 32.43 h · 521 voyages
Broadcast ETA (RMSE)
49.37 h
crew-declared, 133 voyages (same set)
Our advantage
65.9 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (209 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 247091500 | container | 08/27, 12:04 AM UTC | 0.95 h | -1386.08 h |
| 257755000 | container | 08/26, 11:21 PM UTC | 0.58 h | -8.35 h |
| 211162470 | product | 08/26, 11:19 PM UTC | 1.18 h | — |
| 211493880 | container | 08/26, 09:59 PM UTC | 1.16 h | — |
| 636018053 | container | 08/26, 09:34 PM UTC | 0.49 h | -7.57 h |
| 211493880 | container | 08/26, 09:33 PM UTC | 1.18 h | -145.56 h |
| 211141000 | container | 08/26, 09:27 PM UTC | 0.26 h | -16.46 h |
| 210332000 | container | 08/26, 09:25 PM UTC | 0.23 h | -33.42 h |
| 211177630 | product | 08/26, 09:22 PM UTC | 0.88 h | -288.98 h |
| 255916486 | container | 08/26, 09:20 PM UTC | 0.19 h | -7.35 h |
| 218816000 | container | 08/26, 09:19 PM UTC | 0.90 h | -24.33 h |
| 211888200 | product | 08/26, 08:38 PM UTC | 1.61 h | -596.06 h |
| 566879000 | general-cargo | 08/26, 08:11 PM UTC | 0.23 h | -7.19 h |
| 305287000 | container | 08/26, 07:24 PM UTC | 1.06 h | — |
| 211664180 | product | 08/26, 06:05 PM UTC | -0.15 h | -1296.05 h |
| 230985000 | container | 08/26, 05:57 PM UTC | 1.01 h | 0.03 h |
| 255805555 | general-cargo | 08/26, 05:34 PM UTC | -0.09 h | -181.58 h |
| 211188880 | product | 08/26, 05:33 PM UTC | 0.11 h | 5082.68 h |
| 211664180 | product | 08/26, 05:23 PM UTC | 1.86 h | -1295.33 h |
| 246745000 | container | 08/26, 05:21 PM UTC | 1.02 h | -177.09 h |
| 211162470 | product | 08/26, 04:29 PM UTC | -0.41 h | -370.49 h |
| 211178250 | product | 08/26, 04:26 PM UTC | 0.86 h | — |
| 211789680 | product | 08/26, 04:10 PM UTC | 1.55 h | — |
| 211513120 | container | 08/26, 04:01 PM UTC | 2.66 h | — |
| 211201080 | product | 08/26, 03:58 PM UTC | -0.01 h | — |
| 211511160 | container | 08/26, 03:54 PM UTC | 1.02 h | — |
| 211518720 | container | 08/26, 03:38 PM UTC | 0.10 h | 122.35 h |
| 211789680 | product | 08/26, 03:38 PM UTC | 1.82 h | — |
| 563331100 | container | 08/26, 03:20 PM UTC | 0.36 h | -8.84 h |
| 244780387 | product | 08/26, 03:17 PM UTC | -0.19 h | 3832.95 h |
| 211518720 | container | 08/26, 03:09 PM UTC | 0.05 h | -69.15 h |
| 244670102 | product | 08/26, 03:08 PM UTC | 0.12 h | -387.14 h |
| 211163700 | product | 08/26, 02:54 PM UTC | 0.04 h | 4679.60 h |
| 211188880 | product | 08/26, 02:45 PM UTC | 1.22 h | 5085.47 h |
| 211518810 | container | 08/26, 02:42 PM UTC | 2.32 h | — |
| 211518810 | container | 08/26, 02:11 PM UTC | -0.11 h | -950.18 h |
| 211550380 | product | 08/26, 02:02 PM UTC | 0.32 h | -652.48 h |
| 211518810 | container | 08/26, 01:33 PM UTC | -0.14 h | — |
| 211372620 | product | 08/26, 01:26 PM UTC | 0.18 h | -17.44 h |
| 210332000 | container | 08/26, 01:01 PM UTC | -0.15 h | -25.02 h |
| 211555980 | product | 08/26, 12:58 PM UTC | 0.70 h | — |
| 211201080 | product | 08/26, 12:51 PM UTC | 0.48 h | — |
| 211789680 | product | 08/26, 12:45 PM UTC | 0.48 h | — |
| 211809000 | product | 08/26, 12:40 PM UTC | 0.65 h | — |
| 230985000 | container | 08/26, 12:26 PM UTC | 0.08 h | -49.44 h |
| 211555980 | product | 08/26, 12:23 PM UTC | 0.08 h | -384.70 h |
| 211468560 | product | 08/26, 12:17 PM UTC | 0.30 h | -188.04 h |
| 255916486 | container | 08/26, 12:17 PM UTC | 0.20 h | -533.28 h |
| 215801000 | general-cargo | 08/26, 12:16 PM UTC | 0.39 h | 0.22 h |
| 305287000 | container | 08/26, 12:14 PM UTC | -0.31 h | -6.25 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.