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 7 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
1.63 h
MAE 0.81 h · 183 voyages
Broadcast ETA (RMSE)
54.65 h
crew-declared, 96 voyages (same set)
Our advantage
97.0 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (51 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 |
|---|---|---|---|---|
| 229548000 | container | 07/12, 11:46 AM UTC | 0.71 h | -728.77 h |
| 249723000 | product | 07/12, 11:35 AM UTC | 1.46 h | -79.59 h |
| 249723000 | product | 07/12, 10:40 AM UTC | -0.08 h | -733.68 h |
| 353719000 | container | 07/12, 09:54 AM UTC | 0.26 h | 2.09 h |
| 212874000 | product | 07/12, 03:59 AM UTC | 1.06 h | -301.99 h |
| 255805802 | general-cargo | 07/12, 03:55 AM UTC | 0.57 h | -0.93 h |
| 563231000 | general-cargo | 07/12, 02:45 AM UTC | 1.02 h | -1.76 h |
| 246240000 | product | 07/11, 10:53 PM UTC | -0.07 h | — |
| 226009040 | product | 07/11, 10:33 PM UTC | 0.68 h | -697.39 h |
| 246240000 | product | 07/11, 09:49 PM UTC | 0.09 h | -652.82 h |
| 227062830 | product | 07/11, 08:29 PM UTC | -0.06 h | -240.49 h |
| 636021310 | product | 07/11, 06:50 PM UTC | -1.12 h | -693.84 h |
| 249509000 | container | 07/11, 06:06 PM UTC | 0.60 h | -212.10 h |
| 235098058 | product | 07/11, 05:47 PM UTC | -0.42 h | 17.21 h |
| 235098058 | product | 07/11, 05:23 PM UTC | 0.08 h | 17.61 h |
| 235098058 | product | 07/11, 03:59 PM UTC | 0.22 h | — |
| 209296000 | product | 07/11, 02:03 PM UTC | 1.23 h | 1.43 h |
| 227062830 | product | 07/11, 01:37 PM UTC | 0.20 h | -233.63 h |
| 215175000 | container | 07/11, 01:23 PM UTC | -1.00 h | -834.39 h |
| 636023608 | container | 07/11, 12:16 PM UTC | 0.23 h | -1.77 h |
| 255805907 | container | 07/11, 12:15 PM UTC | 0.16 h | 30.75 h |
| 353719000 | container | 07/11, 11:59 AM UTC | 0.43 h | -824.49 h |
| 255805907 | container | 07/11, 11:52 AM UTC | -0.11 h | — |
| 636014974 | chemical | 07/11, 10:55 AM UTC | 1.04 h | 19.07 h |
| 255915770 | container | 07/11, 09:10 AM UTC | 0.18 h | -2.01 h |
| 255915770 | container | 07/11, 08:20 AM UTC | 0.69 h | -267.84 h |
| 226009040 | product | 07/11, 07:46 AM UTC | 0.31 h | -682.60 h |
| 255805470 | chemical | 07/11, 06:14 AM UTC | 0.40 h | -17.73 h |
| 564329000 | product | 07/11, 06:05 AM UTC | 0.17 h | -8.09 h |
| 259709000 | container | 07/11, 04:18 AM UTC | 1.87 h | -2.31 h |
| 219031135 | product | 07/11, 04:17 AM UTC | 0.28 h | 1.70 h |
| 228480800 | general-cargo | 07/11, 04:17 AM UTC | 0.42 h | -56.29 h |
| 259709000 | container | 07/11, 03:21 AM UTC | -0.45 h | -254.36 h |
| 228470900 | product | 07/11, 01:55 AM UTC | 0.76 h | 276.08 h |
| 205250990 | container | 07/10, 11:40 PM UTC | -0.15 h | — |
| 255805907 | container | 07/10, 11:16 PM UTC | 0.56 h | -2.27 h |
| 636017581 | container | 07/10, 10:58 PM UTC | 0.63 h | -483.97 h |
| 255805907 | container | 07/10, 10:23 PM UTC | 0.55 h | -1030.38 h |
| 227062830 | product | 07/10, 09:22 PM UTC | 0.05 h | -217.38 h |
| 235098058 | product | 07/10, 09:07 PM UTC | 1.81 h | — |
| 209296000 | product | 07/10, 09:05 PM UTC | 1.76 h | -3.09 h |
| 209296000 | product | 07/10, 07:58 PM UTC | 0.19 h | -88.98 h |
| 219031135 | product | 07/10, 06:39 PM UTC | 0.23 h | -6.65 h |
| 212357000 | container | 07/10, 06:18 PM UTC | 1.11 h | -46.31 h |
| 219031135 | product | 07/10, 05:46 PM UTC | 1.31 h | -5.77 h |
| 205250990 | container | 07/10, 05:39 PM UTC | -1.13 h | — |
| 249598000 | product | 07/10, 04:12 PM UTC | -0.93 h | -219.21 h |
| 235098058 | product | 07/10, 03:47 PM UTC | 1.90 h | 2133.71 h |
| 226019840 | container | 07/10, 03:44 PM UTC | -0.26 h | — |
| 235098058 | product | 07/10, 03:06 PM UTC | 0.88 h | 2134.39 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.