ETA accuracy benchmark · 🇬🇷 Piraeus
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Piraeus, measured on closed voyages over the last 90 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
15.04 h
MAE 30.47 h · 985 voyages
Broadcast ETA (RMSE)
70.41 h
crew-declared, 321 voyages (same set)
Our advantage
78.6 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (406 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 240620300 | product | 08/26, 11:12 PM UTC | 0.61 h | 1381.79 h |
| 352006485 | container | 08/26, 09:32 PM UTC | 1.69 h | -6.54 h |
| 636025274 | general-cargo | 08/26, 09:08 PM UTC | 0.63 h | -459.15 h |
| 636019647 | general-cargo | 08/26, 08:36 PM UTC | 2.31 h | -156.61 h |
| 240752600 | product | 08/26, 06:47 PM UTC | -1.14 h | — |
| 240043800 | product | 08/26, 06:36 PM UTC | 0.47 h | — |
| 239998600 | product | 08/26, 06:35 PM UTC | -0.93 h | — |
| 563281900 | container | 08/26, 06:19 PM UTC | -0.66 h | -0.83 h |
| 241794000 | product | 08/26, 06:14 PM UTC | 0.35 h | -83.24 h |
| 237829800 | product | 08/26, 05:08 PM UTC | 0.41 h | — |
| 239998600 | product | 08/26, 04:35 PM UTC | 0.23 h | — |
| 240043800 | product | 08/26, 12:11 PM UTC | -1.78 h | — |
| 241895000 | container | 08/26, 11:21 AM UTC | 1.21 h | -29.86 h |
| 247484800 | container | 08/26, 10:52 AM UTC | 0.35 h | -897.88 h |
| 240205400 | product | 08/26, 10:32 AM UTC | -0.26 h | -464.77 h |
| 241699000 | product | 08/26, 09:46 AM UTC | -5.18 h | -381.77 h |
| 241842000 | container | 08/26, 09:28 AM UTC | 0.09 h | — |
| 241654000 | product | 08/26, 09:28 AM UTC | -0.06 h | 2227.53 h |
| 241842000 | container | 08/26, 09:17 AM UTC | 2.59 h | -0.29 h |
| 237141000 | container | 08/26, 08:42 AM UTC | 0.72 h | — |
| 240188500 | container | 08/26, 07:46 AM UTC | -0.37 h | -1776.27 h |
| 239869900 | product | 08/26, 07:38 AM UTC | 0.84 h | 3051.86 h |
| 237592400 | product | 08/26, 07:22 AM UTC | 0.59 h | — |
| 240698300 | container | 08/26, 07:16 AM UTC | 1.45 h | -30.27 h |
| 352006980 | container | 08/26, 06:09 AM UTC | 0.35 h | -13.15 h |
| 240870000 | product | 08/26, 06:07 AM UTC | 4.21 h | — |
| 240870000 | product | 08/26, 05:43 AM UTC | 3.97 h | — |
| 241694000 | container | 08/26, 05:10 AM UTC | -0.09 h | -24.17 h |
| 229711000 | container | 08/26, 04:57 AM UTC | 0.88 h | -101.96 h |
| 255805788 | container | 08/26, 04:51 AM UTC | 1.22 h | -142.86 h |
| 240870000 | product | 08/26, 04:06 AM UTC | 0.34 h | -721.62 h |
| 256547000 | general-cargo | 08/25, 11:24 PM UTC | 0.28 h | -588.91 h |
| 240620300 | product | 08/25, 10:36 PM UTC | 1.51 h | 1406.40 h |
| 240205400 | product | 08/25, 10:07 PM UTC | 2.38 h | — |
| 229607000 | general-cargo | 08/25, 08:13 PM UTC | 1.20 h | -2109.23 h |
| 240493000 | product | 08/25, 08:06 PM UTC | 4.10 h | — |
| 636025786 | container | 08/25, 07:25 PM UTC | 0.83 h | -129.43 h |
| 240493000 | product | 08/25, 06:58 PM UTC | -2.23 h | -1404.97 h |
| 240205400 | product | 08/25, 04:48 PM UTC | 0.91 h | — |
| 255805997 | container | 08/25, 04:30 PM UTC | 0.45 h | -81.51 h |
| 240205400 | product | 08/25, 03:43 PM UTC | -1.41 h | -445.96 h |
| 241843000 | product | 08/25, 03:12 PM UTC | -29.92 h | -153.20 h |
| 240752600 | product | 08/25, 03:00 PM UTC | -0.16 h | — |
| 241654000 | product | 08/25, 02:45 PM UTC | 2.75 h | — |
| 237592400 | product | 08/25, 11:44 AM UTC | 0.12 h | — |
| 240897000 | product | 08/25, 10:40 AM UTC | 2.77 h | 3085.32 h |
| 241324000 | product | 08/25, 10:39 AM UTC | 1.05 h | 2232.35 h |
| 241654000 | product | 08/25, 09:56 AM UTC | 1.98 h | — |
| 563154500 | container | 08/25, 08:52 AM UTC | 0.94 h | -567.87 h |
| 249343000 | product | 08/25, 08:47 AM UTC | 4.22 h | -1515.79 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.