ETA accuracy benchmark · 🇬🇧 Southampton
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Southampton, 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)
10.54 h
MAE 1.74 h · 100 voyages
Broadcast ETA (RMSE)
50.84 h
crew-declared, 52 voyages (same set)
Our advantage
79.3 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (30 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 |
|---|---|---|---|---|
| 235009956 | chemical | 07/12, 10:52 AM UTC | 0.07 h | -53.13 h |
| 235009956 | chemical | 07/12, 06:12 AM UTC | 0.98 h | -48.46 h |
| 235009956 | chemical | 07/12, 05:34 AM UTC | 0.27 h | -47.82 h |
| 235007413 | chemical | 07/12, 05:09 AM UTC | 0.04 h | 18.34 h |
| 311921000 | container | 07/12, 04:55 AM UTC | -0.24 h | -2.43 h |
| 235007413 | chemical | 07/11, 04:20 PM UTC | 0.42 h | 7.17 h |
| 215657000 | container | 07/11, 01:26 PM UTC | 0.57 h | -2.95 h |
| 235009956 | chemical | 07/11, 12:52 PM UTC | -0.24 h | — |
| 255801540 | container | 07/11, 12:27 PM UTC | -0.34 h | -72.45 h |
| 235007880 | chemical | 07/11, 10:43 AM UTC | -0.10 h | -64.39 h |
| 431193000 | container | 07/11, 10:31 AM UTC | 0.08 h | -2.78 h |
| 636020070 | product | 07/11, 10:13 AM UTC | 0.92 h | -8.23 h |
| 235009956 | chemical | 07/11, 07:24 AM UTC | 0.37 h | — |
| 235007880 | chemical | 07/11, 06:41 AM UTC | 0.02 h | -60.36 h |
| 235007880 | chemical | 07/11, 06:31 AM UTC | -0.35 h | -60.19 h |
| 235507000 | container | 07/11, 06:19 AM UTC | 0.01 h | -486.32 h |
| 235007413 | chemical | 07/11, 06:07 AM UTC | 0.01 h | 17.37 h |
| 215610000 | container | 07/11, 04:51 AM UTC | 0.06 h | -121.10 h |
| 538006356 | product | 07/10, 06:51 PM UTC | 1.63 h | -10.86 h |
| 232019192 | container | 07/10, 03:34 PM UTC | -0.00 h | 6968.43 h |
| 636016096 | container | 07/10, 03:33 PM UTC | 0.40 h | -3.57 h |
| 232019192 | container | 07/10, 02:55 PM UTC | 0.02 h | 6969.08 h |
| 232019192 | container | 07/10, 12:15 PM UTC | -0.09 h | 6971.74 h |
| 235009804 | container | 07/10, 11:44 AM UTC | 0.03 h | — |
| 247487800 | chemical | 07/10, 09:37 AM UTC | 2.17 h | -255.62 h |
| 235009804 | container | 07/10, 09:07 AM UTC | -0.05 h | — |
| 232019192 | container | 07/10, 08:58 AM UTC | 0.06 h | 6975.02 h |
| 372802000 | container | 07/10, 06:11 AM UTC | 0.28 h | -2.19 h |
| 232019192 | container | 07/10, 05:55 AM UTC | 0.00 h | 6978.08 h |
| 235009956 | chemical | 07/10, 04:48 AM UTC | 0.29 h | -24.31 h |
| 247416300 | container | 07/10, 04:27 AM UTC | 0.35 h | -942.97 h |
| 232019192 | container | 07/10, 03:13 AM UTC | -0.06 h | — |
| 257290000 | product | 07/10, 02:43 AM UTC | 3.42 h | -275.73 h |
| 538009733 | container | 07/09, 07:30 PM UTC | -0.09 h | -958.51 h |
| 255806438 | container | 07/09, 06:41 PM UTC | 0.74 h | — |
| 235007880 | chemical | 07/09, 06:37 PM UTC | -1.06 h | -24.29 h |
| 431013000 | container | 07/09, 03:10 PM UTC | 0.10 h | -2.67 h |
| 247417500 | container | 07/09, 02:57 PM UTC | -0.22 h | -3.96 h |
| 232019192 | container | 07/09, 12:22 PM UTC | 0.03 h | — |
| 247482400 | product | 07/09, 12:14 PM UTC | 2.38 h | -99.75 h |
| 232019192 | container | 07/09, 11:55 AM UTC | 0.06 h | 6996.08 h |
| 265884000 | container | 07/09, 10:11 AM UTC | 0.69 h | -2.44 h |
| 538006288 | product | 07/09, 09:54 AM UTC | -1.07 h | -338.91 h |
| 232019192 | container | 07/09, 08:57 AM UTC | -0.04 h | 6999.05 h |
| 232019192 | container | 07/09, 06:12 AM UTC | -0.15 h | 7001.80 h |
| 219624000 | product | 07/09, 06:08 AM UTC | -23.88 h | -282.14 h |
| 636018716 | product | 07/09, 06:04 AM UTC | 0.26 h | -10.07 h |
| 232019192 | container | 07/09, 03:18 AM UTC | 0.26 h | — |
| 310823000 | general-cargo | 07/08, 10:49 PM UTC | -9.50 h | -14.07 h |
| 566882000 | general-cargo | 07/08, 08:36 PM UTC | 0.43 h | 0.40 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.