ETA accuracy benchmark · 🇫🇷 Dunkerque
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Dunkerque, 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)
21.37 h
MAE 100.54 h · 307 voyages
Broadcast ETA (RMSE)
47.64 h
crew-declared, 90 voyages (same set)
Our advantage
55.1 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (70 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 244730944 | container | 10/10, 04:03 AM UTC | -76.12 h | -23.05 h |
| 352005487 | product | 10/08, 10:50 PM UTC | 0.76 h | -1229.84 h |
| 538004940 | container | 10/07, 12:16 PM UTC | 0.58 h | — |
| 538004940 | container | 10/07, 11:55 AM UTC | -1.15 h | — |
| 212303000 | general-cargo | 10/07, 09:16 AM UTC | -0.13 h | — |
| 212303000 | general-cargo | 10/07, 08:17 AM UTC | -0.47 h | — |
| 255892000 | chemical | 10/07, 07:27 AM UTC | 1.05 h | — |
| 205239000 | container | 10/07, 03:06 AM UTC | 4.25 h | -1.77 h |
| 256765000 | chemical | 10/06, 11:56 PM UTC | 0.72 h | -3232.45 h |
| 244730944 | container | 10/06, 10:18 PM UTC | 0.82 h | — |
| 305620000 | container | 10/06, 10:15 PM UTC | -5.40 h | -6.26 h |
| 244437000 | container | 10/06, 09:21 PM UTC | 0.34 h | — |
| 563193100 | container | 10/06, 04:14 PM UTC | -5.14 h | -2093.25 h |
| 636093335 | container | 10/06, 12:29 PM UTC | -731.91 h | -591.49 h |
| 246507000 | container | 10/06, 11:37 AM UTC | 0.33 h | -2302.62 h |
| 205410000 | container | 10/06, 07:38 AM UTC | 0.92 h | — |
| 249509000 | container | 10/06, 07:10 AM UTC | 0.30 h | -3.68 h |
| 265068510 | product | 10/06, 04:14 AM UTC | -0.50 h | — |
| 636023293 | container | 10/06, 04:11 AM UTC | 2.61 h | -938.20 h |
| 265068510 | product | 10/06, 03:16 AM UTC | -36.20 h | — |
| 311000666 | product | 10/06, 02:16 AM UTC | 0.87 h | — |
| 319153600 | container | 10/06, 01:06 AM UTC | 0.74 h | — |
| 212874000 | product | 10/06, 12:05 AM UTC | 1.50 h | -1550.09 h |
| 636025023 | product | 10/05, 10:31 PM UTC | 0.15 h | — |
| 636025023 | product | 10/05, 09:11 PM UTC | 0.45 h | -59.19 h |
| 230984000 | container | 10/05, 08:18 PM UTC | -1.62 h | -1612.31 h |
| 248215000 | container | 10/05, 08:09 PM UTC | 1.34 h | — |
| 226012360 | container | 10/05, 07:00 PM UTC | 0.31 h | — |
| 538012092 | product | 10/05, 01:08 PM UTC | -0.12 h | — |
| 563234000 | general-cargo | 10/04, 09:25 PM UTC | 1.77 h | -2.93 h |
| 265068510 | product | 10/04, 01:53 PM UTC | -0.46 h | -186.90 h |
| 370271000 | container | 10/04, 03:04 AM UTC | 3.43 h | -942.57 h |
| 244730944 | container | 10/03, 10:52 PM UTC | -1.96 h | — |
| 249206000 | container | 10/03, 04:15 AM UTC | -1.16 h | -3266.26 h |
| 355320000 | product | 10/02, 08:26 PM UTC | 1.89 h | — |
| 355320000 | product | 10/02, 07:41 PM UTC | -34.51 h | — |
| 246788000 | container | 10/02, 01:16 AM UTC | -0.20 h | -0.28 h |
| 246788000 | container | 10/02, 12:45 AM UTC | 0.11 h | -59.76 h |
| 244830182 | product | 10/01, 11:23 PM UTC | -0.41 h | — |
| 215199000 | container | 10/01, 06:42 AM UTC | -1.82 h | — |
| 255805952 | container | 10/01, 03:16 AM UTC | 1.14 h | 50.72 h |
| 244830182 | product | 10/01, 02:36 AM UTC | 0.44 h | -1392.12 h |
| 257601000 | chemical | 10/01, 02:13 AM UTC | 1.44 h | — |
| 257601000 | chemical | 10/01, 01:38 AM UTC | 0.38 h | — |
| 219413000 | product | 09/30, 08:06 PM UTC | 1.09 h | 15.90 h |
| 636014199 | container | 09/30, 01:41 AM UTC | 2.97 h | -2.69 h |
| 219413000 | product | 09/29, 11:50 PM UTC | 1.49 h | -1.85 h |
| 219413000 | product | 09/29, 10:22 PM UTC | 0.87 h | -0.38 h |
| 636023303 | container | 09/29, 08:12 PM UTC | 4.23 h | -146.21 h |
| 244781000 | container | 09/29, 06:44 PM UTC | -1985.63 h | -1612.74 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.