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 90 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
10.71 h
MAE 13.32 h · 930 voyages
Broadcast ETA (RMSE)
55.22 h
crew-declared, 485 voyages (same set)
Our advantage
80.6 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (316 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 253834000 | product | 08/26, 01:06 PM UTC | 2.06 h | -0.11 h |
| 232019192 | container | 08/26, 12:31 PM UTC | -0.01 h | — |
| 232019192 | container | 08/26, 12:01 PM UTC | -0.04 h | 5843.97 h |
| 232019192 | container | 08/26, 09:07 AM UTC | 0.09 h | 5846.87 h |
| 235040503 | chemical | 08/26, 06:02 AM UTC | 0.34 h | 0.70 h |
| 232019192 | container | 08/26, 06:01 AM UTC | 0.07 h | 5849.98 h |
| 232019192 | container | 08/26, 03:24 AM UTC | 0.29 h | 5852.59 h |
| 256661000 | product | 08/25, 11:18 PM UTC | 1.82 h | -155.31 h |
| 235007880 | chemical | 08/25, 07:03 PM UTC | -0.36 h | -8.06 h |
| 255915730 | general-cargo | 08/25, 04:38 PM UTC | -0.38 h | -2.64 h |
| 235009804 | container | 08/25, 11:21 AM UTC | 0.26 h | — |
| 636019982 | container | 08/25, 10:33 AM UTC | 0.22 h | -3.22 h |
| 235007413 | chemical | 08/25, 10:22 AM UTC | 0.08 h | -14.38 h |
| 303210000 | container | 08/25, 07:00 AM UTC | 0.52 h | -2.76 h |
| 538011676 | container | 08/25, 06:29 AM UTC | 0.03 h | -3.49 h |
| 245889000 | product | 08/25, 03:33 AM UTC | -0.09 h | -1233.56 h |
| 248941000 | product | 08/24, 10:37 PM UTC | 0.16 h | -58.62 h |
| 247529100 | product | 08/24, 05:04 PM UTC | 1.28 h | -161.58 h |
| 235007880 | chemical | 08/24, 04:09 PM UTC | 0.12 h | -18.66 h |
| 440161000 | container | 08/24, 03:59 PM UTC | -0.05 h | -12.00 h |
| 232019192 | container | 08/24, 03:21 PM UTC | -0.03 h | 5888.65 h |
| 235007413 | chemical | 08/24, 03:09 PM UTC | 0.39 h | — |
| 232019192 | container | 08/24, 03:02 PM UTC | -0.02 h | 5888.96 h |
| 235009804 | container | 08/24, 01:08 PM UTC | 0.06 h | — |
| 235009804 | container | 08/24, 01:04 PM UTC | 0.23 h | — |
| 215760000 | product | 08/24, 12:41 PM UTC | 2.19 h | -21.70 h |
| 232019192 | container | 08/24, 12:09 PM UTC | -0.18 h | 5891.84 h |
| 247487800 | chemical | 08/24, 10:55 AM UTC | 0.18 h | -989.93 h |
| 244534000 | container | 08/24, 09:56 AM UTC | 0.36 h | -3.95 h |
| 232019192 | container | 08/24, 09:09 AM UTC | 0.09 h | 5894.85 h |
| 241649000 | product | 08/24, 08:11 AM UTC | 2.30 h | -3.69 h |
| 235009804 | container | 08/24, 07:40 AM UTC | 0.76 h | — |
| 232019192 | container | 08/24, 06:08 AM UTC | -0.17 h | — |
| 232019192 | container | 08/24, 06:03 AM UTC | -0.22 h | 5897.94 h |
| 232019192 | container | 08/24, 03:18 AM UTC | 0.23 h | 5900.68 h |
| 305054300 | container | 08/23, 07:15 PM UTC | 0.17 h | -616.26 h |
| 247373700 | product | 08/23, 06:30 PM UTC | 0.69 h | -0.50 h |
| 212637000 | container | 08/23, 06:28 PM UTC | 0.34 h | -934.98 h |
| 235009956 | chemical | 08/23, 04:16 PM UTC | -0.11 h | 0.22 h |
| 228397700 | container | 08/23, 04:10 PM UTC | -0.26 h | -3.18 h |
| 211100000 | container | 08/23, 12:43 PM UTC | 0.54 h | -0.72 h |
| 235007413 | chemical | 08/23, 11:53 AM UTC | -0.03 h | -28.40 h |
| 338058000 | container | 08/23, 11:18 AM UTC | 0.23 h | -1470.81 h |
| 235009804 | container | 08/23, 10:11 AM UTC | -0.05 h | — |
| 235040503 | chemical | 08/23, 08:53 AM UTC | -0.19 h | 1.10 h |
| 235009956 | chemical | 08/23, 08:44 AM UTC | 0.82 h | -46.66 h |
| 235007413 | chemical | 08/23, 05:46 AM UTC | 0.25 h | -22.27 h |
| 636017870 | container | 08/23, 03:13 AM UTC | 0.05 h | -1243.23 h |
| 440144000 | container | 08/23, 01:26 AM UTC | 0.40 h | -2151.44 h |
| 247416300 | container | 08/22, 07:13 PM UTC | 0.22 h | -993.22 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.