ETA accuracy benchmark · 🇳🇱 Rotterdam
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Rotterdam, 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)
3.14 h
MAE 3.21 h · 986 voyages
Broadcast ETA (RMSE)
59.42 h
crew-declared, 336 voyages (same set)
Our advantage
94.7 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (293 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 |
|---|---|---|---|---|
| 205230390 | product | 06/18, 05:46 PM UTC | 2.14 h | -22.76 h |
| 244750018 | container | 06/18, 05:44 PM UTC | -0.98 h | -246.04 h |
| 232063064 | product | 06/18, 05:41 PM UTC | 2.38 h | -334.69 h |
| 205565390 | product | 06/18, 05:39 PM UTC | 2.07 h | -487.63 h |
| 244690604 | container | 06/18, 05:39 PM UTC | 5.18 h | — |
| 244660111 | product | 06/18, 05:39 PM UTC | -0.50 h | -362.23 h |
| 352003313 | container | 06/18, 05:39 PM UTC | 0.70 h | -2.90 h |
| 244700690 | product | 06/18, 05:39 PM UTC | 0.06 h | -148.72 h |
| 269057007 | product | 06/18, 05:38 PM UTC | 2.08 h | — |
| 244670590 | container | 06/18, 05:38 PM UTC | -1.21 h | -1872.64 h |
| 244690316 | product | 06/18, 05:34 PM UTC | 2.97 h | 6233.87 h |
| 352005487 | product | 06/18, 05:33 PM UTC | 1.16 h | -0.56 h |
| 244650739 | container | 06/18, 05:32 PM UTC | 0.27 h | -1115.54 h |
| 244660530 | product | 06/18, 05:32 PM UTC | 3.02 h | -1119.54 h |
| 244373489 | product | 06/18, 05:32 PM UTC | 6.33 h | -109.30 h |
| 244630034 | container | 06/18, 05:31 PM UTC | 4.64 h | — |
| 244201000 | container | 06/18, 05:31 PM UTC | -0.97 h | — |
| 244810087 | product | 06/18, 05:30 PM UTC | 6.53 h | — |
| 205569190 | container | 06/18, 05:30 PM UTC | -0.90 h | — |
| 244690099 | container | 06/18, 05:29 PM UTC | -1.14 h | -0.38 h |
| 205214890 | container | 06/18, 05:27 PM UTC | -0.72 h | -94.54 h |
| 244830875 | container | 06/18, 05:27 PM UTC | 2.88 h | — |
| 218006040 | product | 06/18, 05:24 PM UTC | -0.73 h | -103.12 h |
| 244100001 | container | 06/18, 05:23 PM UTC | 10.42 h | -488.42 h |
| 244670112 | container | 06/18, 05:23 PM UTC | 0.59 h | 6534.60 h |
| 244660111 | product | 06/18, 05:23 PM UTC | 1.00 h | -361.96 h |
| 218031050 | product | 06/18, 05:23 PM UTC | 0.67 h | -81.07 h |
| 244010910 | container | 06/18, 05:20 PM UTC | 5.66 h | — |
| 209982000 | container | 06/18, 05:20 PM UTC | -0.46 h | -24.34 h |
| 538006547 | product | 06/18, 05:19 PM UTC | 0.96 h | -157.82 h |
| 636024471 | product | 06/18, 05:16 PM UTC | -0.34 h | -284.27 h |
| 244012630 | container | 06/18, 05:15 PM UTC | -0.74 h | — |
| 244690250 | container | 06/18, 05:14 PM UTC | 3.09 h | — |
| 244001863 | container | 06/18, 05:12 PM UTC | 10.60 h | -8.48 h |
| 244650909 | container | 06/18, 05:12 PM UTC | 11.31 h | -0.16 h |
| 244101977 | container | 06/18, 05:10 PM UTC | 0.68 h | 4695.82 h |
| 269057455 | product | 06/18, 05:09 PM UTC | 1.17 h | -7.17 h |
| 244201000 | container | 06/18, 05:09 PM UTC | -0.85 h | -32.16 h |
| 259101000 | container | 06/18, 05:09 PM UTC | -0.84 h | -0.16 h |
| 211741810 | product | 06/18, 05:09 PM UTC | 6.56 h | -14.67 h |
| 244373489 | product | 06/18, 05:08 PM UTC | 0.93 h | -108.91 h |
| 244670246 | product | 06/18, 05:07 PM UTC | -0.57 h | -54.51 h |
| 244630115 | product | 06/18, 05:07 PM UTC | 1.54 h | 10.42 h |
| 244750019 | container | 06/18, 05:06 PM UTC | -0.83 h | -53.86 h |
| 244660323 | container | 06/18, 05:06 PM UTC | 1.28 h | — |
| 244602504 | product | 06/18, 05:06 PM UTC | -0.46 h | -25.65 h |
| 244660830 | container | 06/18, 05:05 PM UTC | -0.11 h | 24.49 h |
| 636015972 | product | 06/18, 05:05 PM UTC | 6.91 h | -0.59 h |
| 244050651 | container | 06/18, 05:05 PM UTC | 3.38 h | — |
| 244730912 | container | 06/18, 05:02 PM UTC | 6.51 h | 3415.12 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.