ETA accuracy benchmark · 🇨🇳 Shenzhen
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Shenzhen, measured on closed voyages over the last 30 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
46.49 h
MAE 77.60 h · 628 voyages
Broadcast ETA (RMSE)
51.54 h
crew-declared, 222 voyages (same set)
Our advantage
9.8 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (355 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 563224700 | general-cargo | 10/12, 04:25 AM UTC | 1.53 h | -404.42 h |
| 477642100 | container | 10/12, 03:56 AM UTC | 0.45 h | -457.45 h |
| 413601030 | container | 10/12, 03:49 AM UTC | 0.48 h | -2.32 h |
| 412472910 | container | 10/12, 03:04 AM UTC | 5.63 h | -23.07 h |
| 256381000 | container | 10/12, 02:42 AM UTC | 3.98 h | -114.71 h |
| 413496010 | container | 10/12, 01:59 AM UTC | -4.62 h | -155.99 h |
| 413601030 | container | 10/12, 01:52 AM UTC | -3.52 h | — |
| 413270770 | container | 10/12, 01:43 AM UTC | 7.05 h | — |
| 413613980 | container | 10/12, 12:18 AM UTC | -0.90 h | -17.14 h |
| 413054000 | general-cargo | 10/11, 10:55 PM UTC | 10.34 h | -1200.92 h |
| 538010654 | container | 10/11, 10:26 PM UTC | 5.42 h | -296.45 h |
| 566642000 | container | 10/11, 08:24 PM UTC | -9.97 h | — |
| 412472910 | container | 10/11, 07:44 PM UTC | 1.12 h | -15.75 h |
| 636017346 | container | 10/11, 06:55 PM UTC | 1.38 h | -870.93 h |
| 413240560 | container | 10/11, 05:54 PM UTC | 3.47 h | -99.24 h |
| 563062600 | container | 10/11, 05:43 PM UTC | 4.55 h | -329.70 h |
| 477213400 | container | 10/11, 05:08 PM UTC | 0.57 h | -2284.15 h |
| 636022037 | container | 10/11, 05:04 PM UTC | -2.47 h | -397.07 h |
| 255803450 | container | 10/11, 04:10 PM UTC | 4.03 h | -3.17 h |
| 538006520 | container | 10/11, 04:03 PM UTC | 4.57 h | -2.05 h |
| 538008845 | container | 10/11, 02:49 PM UTC | 2.81 h | -6.82 h |
| 636023534 | container | 10/11, 10:48 AM UTC | 3.83 h | -2.81 h |
| 413519910 | container | 10/11, 07:55 AM UTC | -1.93 h | 0.07 h |
| 413229070 | container | 10/11, 07:49 AM UTC | -142.57 h | -340.49 h |
| 413443460 | product | 10/11, 07:02 AM UTC | 2.52 h | -268.05 h |
| 413900824 | container | 10/11, 06:43 AM UTC | -18.25 h | -2949.84 h |
| 636021005 | container | 10/11, 05:18 AM UTC | 4.36 h | 1.69 h |
| 413872002 | container | 10/11, 04:57 AM UTC | -8.76 h | -338.42 h |
| 413973504 | container | 10/11, 03:59 AM UTC | -189.28 h | -2516.49 h |
| 354690000 | container | 10/11, 03:44 AM UTC | -2.51 h | -836.25 h |
| 636017882 | container | 10/11, 03:43 AM UTC | 6.68 h | -2063.73 h |
| 538011528 | container | 10/11, 03:07 AM UTC | -69.33 h | -75.10 h |
| 538012625 | container | 10/11, 02:44 AM UTC | -1.80 h | -219.24 h |
| 232018900 | container | 10/11, 01:40 AM UTC | 0.68 h | -1130.68 h |
| 563250800 | container | 10/11, 01:29 AM UTC | 1.93 h | -2933.49 h |
| 566828000 | container | 10/11, 12:13 AM UTC | -4.51 h | 4.78 h |
| 413901418 | container | 10/11, 12:04 AM UTC | -1924.75 h | -1320.58 h |
| 412472910 | container | 10/10, 11:00 PM UTC | -3.52 h | -3032.00 h |
| 477655800 | general-cargo | 10/10, 10:17 PM UTC | 3.81 h | -2741.79 h |
| 563235600 | general-cargo | 10/10, 09:29 PM UTC | -1.41 h | -780.50 h |
| 413294260 | container | 10/10, 07:49 PM UTC | -9.52 h | -387.82 h |
| 256441000 | container | 10/10, 07:29 PM UTC | 6.17 h | -355.49 h |
| 636026030 | general-cargo | 10/10, 05:48 PM UTC | 1.06 h | -2393.31 h |
| 563190100 | container | 10/10, 04:30 PM UTC | 8.64 h | -289.51 h |
| 249174000 | container | 10/10, 04:15 PM UTC | 1.33 h | -27.25 h |
| 210601000 | container | 10/10, 04:12 PM UTC | 0.45 h | -797.21 h |
| 567584000 | general-cargo | 10/10, 03:53 PM UTC | -10.02 h | -347.89 h |
| 636023047 | container | 10/10, 02:06 PM UTC | 2.04 h | — |
| 353241000 | general-cargo | 10/10, 01:36 PM UTC | 2.82 h | -23.61 h |
| 412207040 | container | 10/10, 11:06 AM UTC | -0.40 h | -249.10 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.