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)
15.23 h
MAE 0.96 h · 918 voyages
Broadcast ETA (RMSE)
63.29 h
crew-declared, 222 voyages (same set)
Our advantage
75.9 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (308 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 |
|---|---|---|---|---|
| 211540760 | container | 07/12, 12:13 PM UTC | 0.87 h | — |
| 211540760 | container | 07/12, 11:59 AM UTC | -0.08 h | 798.01 h |
| 211781030 | product | 07/12, 11:52 AM UTC | 1.38 h | — |
| 245029000 | container | 07/12, 11:50 AM UTC | 2.24 h | -717.84 h |
| 211670550 | general-cargo | 07/12, 11:48 AM UTC | 2.82 h | — |
| 244670102 | product | 07/12, 11:44 AM UTC | -0.21 h | -229.74 h |
| 211518740 | container | 07/12, 11:39 AM UTC | -0.29 h | 7280.27 h |
| 211188880 | product | 07/12, 11:06 AM UTC | -0.15 h | 6169.13 h |
| 211471070 | container | 07/12, 10:55 AM UTC | -0.18 h | — |
| 211471070 | container | 07/12, 10:19 AM UTC | 3.68 h | — |
| 211471070 | container | 07/12, 10:12 AM UTC | 1.81 h | — |
| 211670550 | general-cargo | 07/12, 10:12 AM UTC | 1.24 h | — |
| 211471070 | container | 07/12, 10:03 AM UTC | 2.80 h | — |
| 211163700 | product | 07/12, 09:53 AM UTC | 0.53 h | 5764.60 h |
| 211471070 | container | 07/12, 09:51 AM UTC | 3.18 h | — |
| 211290330 | product | 07/12, 09:50 AM UTC | 0.90 h | -52.97 h |
| 211471070 | container | 07/12, 09:44 AM UTC | 3.19 h | — |
| 211891330 | product | 07/12, 09:41 AM UTC | 0.79 h | — |
| 244670102 | product | 07/12, 09:40 AM UTC | 0.16 h | -227.68 h |
| 255916103 | product | 07/12, 09:40 AM UTC | 1.43 h | -10.68 h |
| 219024550 | product | 07/12, 09:38 AM UTC | 0.75 h | -565.64 h |
| 211437690 | product | 07/12, 09:34 AM UTC | 0.86 h | — |
| 211471070 | container | 07/12, 09:33 AM UTC | 2.12 h | — |
| 211612900 | product | 07/12, 09:32 AM UTC | 1.61 h | -19.55 h |
| 211664180 | product | 07/12, 09:29 AM UTC | 0.57 h | — |
| 211891330 | product | 07/12, 09:27 AM UTC | 0.26 h | — |
| 211891330 | product | 07/12, 09:23 AM UTC | 0.79 h | — |
| 244780387 | product | 07/12, 09:23 AM UTC | 0.11 h | 4918.86 h |
| 211471070 | container | 07/12, 09:20 AM UTC | 2.20 h | — |
| 211437690 | product | 07/12, 09:01 AM UTC | -0.13 h | — |
| 211670550 | general-cargo | 07/12, 08:52 AM UTC | 0.47 h | — |
| 211188880 | product | 07/12, 08:45 AM UTC | 0.43 h | — |
| 211196020 | product | 07/12, 08:32 AM UTC | -0.19 h | 7167.81 h |
| 211201080 | product | 07/12, 08:14 AM UTC | 0.20 h | — |
| 211891330 | product | 07/12, 07:58 AM UTC | 0.81 h | — |
| 211891330 | product | 07/12, 07:53 AM UTC | 0.71 h | — |
| 211471070 | container | 07/12, 07:47 AM UTC | 0.25 h | — |
| 244201000 | container | 07/12, 07:39 AM UTC | -0.48 h | -255.17 h |
| 636026391 | product | 07/12, 07:39 AM UTC | 1.25 h | -854.66 h |
| 211187040 | container | 07/12, 07:36 AM UTC | 0.16 h | 5729.39 h |
| 211468870 | container | 07/12, 07:23 AM UTC | 1.92 h | — |
| 211891330 | product | 07/12, 07:23 AM UTC | 0.83 h | — |
| 211891330 | product | 07/12, 07:18 AM UTC | 0.67 h | -275.46 h |
| 211540760 | container | 07/12, 07:12 AM UTC | -0.68 h | — |
| 211518810 | container | 07/12, 07:11 AM UTC | 0.84 h | — |
| 211513140 | container | 07/12, 07:04 AM UTC | 1.76 h | — |
| 211513140 | container | 07/12, 06:59 AM UTC | -0.01 h | — |
| 563052100 | container | 07/12, 06:49 AM UTC | 0.41 h | -10.33 h |
| 211670550 | general-cargo | 07/12, 06:42 AM UTC | 1.77 h | — |
| 211891330 | product | 07/12, 06:16 AM UTC | 0.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.