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 30 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
13.25 h
MAE 4.97 h · 947 voyages
Broadcast ETA (RMSE)
52.99 h
crew-declared, 452 voyages (same set)
Our advantage
75.0 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (238 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 |
|---|---|---|---|---|
| 211480540 | product | 07/12, 08:23 AM UTC | 0.30 h | -904.39 h |
| 219018692 | container | 07/12, 07:39 AM UTC | 1.39 h | -4.15 h |
| 211480540 | product | 07/12, 05:49 AM UTC | 0.14 h | — |
| 211812980 | product | 07/12, 04:50 AM UTC | 0.16 h | 1159.15 h |
| 636025860 | container | 07/12, 04:17 AM UTC | -0.15 h | -1075.29 h |
| 477195100 | container | 07/12, 12:42 AM UTC | 1.62 h | -73.70 h |
| 211333700 | chemical | 07/11, 09:31 PM UTC | -0.34 h | — |
| 211809000 | product | 07/11, 06:46 PM UTC | 0.47 h | -77.77 h |
| 538012892 | container | 07/11, 06:44 PM UTC | 0.19 h | — |
| 538012892 | container | 07/11, 06:03 PM UTC | 0.52 h | -2.57 h |
| 403532001 | container | 07/11, 05:37 PM UTC | 0.67 h | -7.62 h |
| 403532001 | container | 07/11, 04:53 PM UTC | 1.23 h | -6.89 h |
| 212006000 | general-cargo | 07/11, 04:32 PM UTC | 1.43 h | -241.53 h |
| 370694000 | container | 07/11, 04:01 PM UTC | 0.24 h | — |
| 636024736 | container | 07/11, 03:41 PM UTC | 1.06 h | -3.18 h |
| 636024484 | container | 07/11, 03:30 PM UTC | 1.98 h | -158.50 h |
| 370694000 | container | 07/11, 03:11 PM UTC | 0.79 h | 2101.80 h |
| 352003773 | container | 07/11, 01:21 PM UTC | 0.44 h | 31.65 h |
| 249011000 | container | 07/11, 12:07 PM UTC | 0.53 h | — |
| 219678000 | container | 07/11, 11:59 AM UTC | 0.84 h | -724.48 h |
| 249011000 | container | 07/11, 11:25 AM UTC | 0.77 h | -3.43 h |
| 211333700 | chemical | 07/11, 11:22 AM UTC | 0.55 h | — |
| 211333700 | chemical | 07/11, 11:02 AM UTC | 0.28 h | 1.96 h |
| 211517780 | container | 07/11, 08:58 AM UTC | 3.87 h | — |
| 211517780 | container | 07/11, 07:18 AM UTC | 0.70 h | -1002.06 h |
| 211480540 | product | 07/11, 07:12 AM UTC | 0.52 h | — |
| 255805899 | container | 07/11, 06:29 AM UTC | 2.15 h | -152.50 h |
| 205492290 | container | 07/11, 06:08 AM UTC | 1.95 h | — |
| 255916314 | container | 07/11, 05:22 AM UTC | 1.15 h | -94.37 h |
| 211333700 | chemical | 07/11, 05:16 AM UTC | 0.03 h | — |
| 218172000 | container | 07/11, 04:55 AM UTC | 1.42 h | -12.43 h |
| 211480540 | product | 07/11, 04:41 AM UTC | 0.36 h | — |
| 211189800 | chemical | 07/11, 04:28 AM UTC | 0.44 h | 17.53 h |
| 636024483 | container | 07/11, 03:15 AM UTC | 2.46 h | -141.26 h |
| 205492290 | container | 07/11, 01:39 AM UTC | -0.36 h | — |
| 205492290 | container | 07/11, 12:57 AM UTC | 1.74 h | — |
| 205492290 | container | 07/11, 12:11 AM UTC | 0.38 h | -21.36 h |
| 247281100 | container | 07/10, 11:58 PM UTC | 0.86 h | 25.03 h |
| 354505000 | container | 07/10, 10:41 PM UTC | 0.51 h | -2.69 h |
| 352003983 | container | 07/10, 10:04 PM UTC | 0.74 h | 47.93 h |
| 218098000 | general-cargo | 07/10, 07:23 PM UTC | 0.63 h | — |
| 305057000 | container | 07/10, 04:36 PM UTC | 0.15 h | 1.38 h |
| 636015952 | general-cargo | 07/10, 04:10 PM UTC | 2.03 h | 2132.82 h |
| 563229400 | container | 07/10, 03:50 PM UTC | 1.77 h | -4.83 h |
| 305057000 | container | 07/10, 03:38 PM UTC | 0.31 h | -25.65 h |
| 305057000 | container | 07/10, 03:16 PM UTC | 0.12 h | — |
| 305057000 | container | 07/10, 03:00 PM UTC | -5.25 h | -25.01 h |
| 257713000 | container | 07/10, 01:50 PM UTC | 1.03 h | -3.83 h |
| 249814000 | general-cargo | 07/10, 01:48 PM UTC | 0.27 h | -274.81 h |
| 211177440 | container | 07/10, 01:35 PM UTC | 1.54 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.