ETA accuracy benchmark · 🇭🇰 Hong Kong
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Hong Kong, 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)
22.22 h
MAE 8.56 h · 970 voyages
Broadcast ETA (RMSE)
60.86 h
crew-declared, 301 voyages (same set)
Our advantage
63.5 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (193 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 477997254 | container | 10/12, 05:42 AM UTC | 0.57 h | — |
| 413900781 | container | 10/12, 05:34 AM UTC | -0.25 h | — |
| 477997080 | product | 10/12, 05:29 AM UTC | -0.01 h | 5480.51 h |
| 477997157 | product | 10/12, 05:25 AM UTC | 1.44 h | — |
| 413465120 | container | 10/12, 05:14 AM UTC | 3.56 h | -78.91 h |
| 477995066 | product | 10/12, 05:11 AM UTC | 1.22 h | — |
| 413247850 | container | 10/12, 04:55 AM UTC | 2.88 h | 4.08 h |
| 413856426 | container | 10/12, 04:51 AM UTC | 0.44 h | 7.64 h |
| 413907171 | container | 10/12, 04:37 AM UTC | 0.62 h | -30.04 h |
| 413865572 | container | 10/12, 04:32 AM UTC | 0.79 h | -2.54 h |
| 477995066 | product | 10/12, 04:27 AM UTC | 1.03 h | — |
| 413465120 | container | 10/12, 04:24 AM UTC | 3.97 h | — |
| 413465410 | container | 10/12, 04:24 AM UTC | 0.43 h | -17.91 h |
| 413901227 | container | 10/12, 04:17 AM UTC | 0.52 h | 2992.21 h |
| 477995249 | product | 10/12, 04:02 AM UTC | 2.02 h | — |
| 563161700 | general-cargo | 10/12, 04:01 AM UTC | 0.93 h | -715.52 h |
| 413247850 | container | 10/12, 03:58 AM UTC | 0.81 h | — |
| 477997254 | container | 10/12, 03:52 AM UTC | 1.07 h | — |
| 477997312 | container | 10/12, 03:49 AM UTC | 0.45 h | — |
| 477997254 | container | 10/12, 03:41 AM UTC | 1.09 h | — |
| 352980812 | container | 10/12, 03:39 AM UTC | 2.14 h | -142.66 h |
| 477995065 | product | 10/12, 03:34 AM UTC | 2.22 h | — |
| 477995063 | product | 10/12, 03:09 AM UTC | 1.14 h | — |
| 477997157 | product | 10/12, 02:59 AM UTC | 1.54 h | — |
| 413469660 | container | 10/12, 02:52 AM UTC | 1.56 h | — |
| 477996907 | product | 10/12, 02:52 AM UTC | 1.81 h | 6537.13 h |
| 477995065 | product | 10/12, 02:46 AM UTC | 1.32 h | — |
| 412400040 | container | 10/12, 02:43 AM UTC | 0.38 h | -10.72 h |
| 477995137 | chemical | 10/12, 02:40 AM UTC | 0.47 h | — |
| 538008845 | container | 10/12, 02:38 AM UTC | -11.97 h | -2675.64 h |
| 413865572 | container | 10/12, 02:33 AM UTC | 0.92 h | -0.56 h |
| 413469660 | container | 10/12, 02:28 AM UTC | 0.46 h | -3.97 h |
| 477996397 | product | 10/12, 02:27 AM UTC | 0.76 h | — |
| 477995063 | product | 10/12, 02:13 AM UTC | 1.00 h | — |
| 413762844 | container | 10/12, 02:10 AM UTC | -0.43 h | -15.17 h |
| 477997157 | product | 10/12, 02:07 AM UTC | 1.33 h | — |
| 413492470 | container | 10/12, 02:05 AM UTC | 0.25 h | -8.10 h |
| 413247850 | container | 10/12, 02:03 AM UTC | 0.64 h | 6.93 h |
| 352005274 | container | 10/12, 02:01 AM UTC | 2.64 h | -1.45 h |
| 413865572 | container | 10/12, 01:59 AM UTC | 0.02 h | 0.01 h |
| 477995065 | product | 10/12, 01:56 AM UTC | 1.57 h | — |
| 413902744 | container | 10/12, 01:42 AM UTC | 0.30 h | -15.38 h |
| 477997254 | container | 10/12, 01:39 AM UTC | 1.07 h | — |
| 413900781 | container | 10/12, 01:32 AM UTC | 0.27 h | — |
| 477997157 | product | 10/12, 01:28 AM UTC | 0.07 h | — |
| 477996546 | container | 10/12, 01:22 AM UTC | 0.25 h | — |
| 413247850 | container | 10/12, 01:14 AM UTC | 0.06 h | -73.25 h |
| 477996397 | product | 10/12, 01:14 AM UTC | 1.54 h | — |
| 477995338 | product | 10/12, 01:09 AM UTC | 0.58 h | — |
| 477995063 | product | 10/12, 12:51 AM UTC | 0.93 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.