ETA accuracy benchmark · 🇫🇷 Le Havre
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Le Havre, 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)
8.81 h
MAE 27.84 h · 983 voyages
Broadcast ETA (RMSE)
42.73 h
crew-declared, 436 voyages (same set)
Our advantage
79.4 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (299 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 226012010 | container | 08/26, 11:44 PM UTC | 1.19 h | — |
| 226012010 | container | 08/26, 11:03 PM UTC | -0.18 h | — |
| 636019214 | container | 08/26, 10:28 PM UTC | 0.36 h | -2.47 h |
| 636023592 | container | 08/26, 09:40 PM UTC | 0.90 h | -1.18 h |
| 244201000 | container | 08/26, 08:47 PM UTC | 1.47 h | -0.79 h |
| 244890472 | container | 08/26, 07:42 PM UTC | -0.05 h | -37.71 h |
| 311001150 | container | 08/26, 05:00 PM UTC | -0.07 h | -1.00 h |
| 226009040 | product | 08/26, 04:52 PM UTC | -0.10 h | 6964.29 h |
| 226017260 | chemical | 08/26, 02:49 PM UTC | 0.35 h | -451.82 h |
| 226009040 | product | 08/26, 02:43 PM UTC | 0.02 h | — |
| 226019840 | container | 08/26, 12:16 PM UTC | -0.81 h | -5.31 h |
| 205250990 | container | 08/26, 12:08 PM UTC | 0.13 h | — |
| 226019840 | container | 08/26, 10:40 AM UTC | 0.60 h | — |
| 255917300 | product | 08/26, 10:27 AM UTC | 0.75 h | -311.45 h |
| 226017260 | chemical | 08/26, 10:09 AM UTC | -0.37 h | -447.15 h |
| 226005390 | product | 08/26, 10:03 AM UTC | -0.04 h | — |
| 226014170 | container | 08/26, 09:57 AM UTC | 2.69 h | — |
| 227062830 | product | 08/26, 09:54 AM UTC | -0.34 h | -1333.92 h |
| 245073000 | product | 08/26, 09:49 AM UTC | 0.08 h | — |
| 226014170 | container | 08/26, 09:33 AM UTC | 2.58 h | — |
| 226005390 | product | 08/26, 09:28 AM UTC | 0.75 h | — |
| 226014170 | container | 08/26, 09:05 AM UTC | 2.24 h | — |
| 211239740 | product | 08/26, 08:54 AM UTC | -0.85 h | 6116.87 h |
| 244690971 | container | 08/26, 08:23 AM UTC | -1.20 h | — |
| 211239740 | product | 08/26, 07:43 AM UTC | -0.55 h | — |
| 226014170 | container | 08/26, 07:23 AM UTC | 4.49 h | — |
| 226014170 | container | 08/26, 07:09 AM UTC | 3.50 h | — |
| 226014170 | container | 08/26, 06:46 AM UTC | 3.99 h | — |
| 205250990 | container | 08/26, 06:41 AM UTC | -1.18 h | — |
| 227062830 | product | 08/26, 05:17 AM UTC | 0.86 h | — |
| 211239740 | product | 08/26, 05:03 AM UTC | -0.10 h | 6120.72 h |
| 236507000 | product | 08/26, 04:36 AM UTC | 0.36 h | 4.88 h |
| 211234480 | container | 08/26, 02:55 AM UTC | 0.47 h | -126.93 h |
| 354839000 | container | 08/26, 02:38 AM UTC | 0.51 h | -1.65 h |
| 354839000 | container | 08/26, 02:11 AM UTC | 1.20 h | -936.19 h |
| 566954000 | container | 08/26, 12:13 AM UTC | 0.74 h | -1656.23 h |
| 370271000 | container | 08/25, 11:58 PM UTC | -0.02 h | -884.98 h |
| 563079000 | container | 08/25, 11:56 PM UTC | 0.00 h | -2011.44 h |
| 205250990 | container | 08/25, 11:50 PM UTC | -0.37 h | — |
| 226016410 | container | 08/25, 11:18 PM UTC | 0.04 h | — |
| 205250990 | container | 08/25, 10:20 PM UTC | 0.62 h | — |
| 205250990 | container | 08/25, 10:12 PM UTC | 1.22 h | — |
| 210408000 | chemical | 08/25, 10:12 PM UTC | 0.32 h | 20.80 h |
| 226019840 | container | 08/25, 09:13 PM UTC | -0.36 h | 9.74 h |
| 205250990 | container | 08/25, 08:49 PM UTC | 1.55 h | — |
| 226014170 | container | 08/25, 08:43 PM UTC | 3.31 h | — |
| 255805470 | chemical | 08/25, 08:09 PM UTC | 2.07 h | -11.16 h |
| 244690971 | container | 08/25, 08:06 PM UTC | 0.17 h | -370.49 h |
| 248020000 | product | 08/25, 07:21 PM UTC | 0.49 h | -146.36 h |
| 255805470 | chemical | 08/25, 07:20 PM UTC | 0.20 h | -0.34 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.