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 90 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
73.99 h
MAE 19.99 h · 970 voyages
Broadcast ETA (RMSE)
56.80 h
crew-declared, 213 voyages (same set)
Gap
30.2 %
higher error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (141 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 |
|---|---|---|---|---|
| 412400040 | container | 07/12, 12:32 PM UTC | 0.05 h | -4.55 h |
| 413229070 | container | 07/12, 12:01 PM UTC | -8.53 h | -25.03 h |
| 413492280 | container | 07/12, 11:27 AM UTC | -0.29 h | — |
| 477996955 | product | 07/12, 11:26 AM UTC | -1.01 h | — |
| 563170300 | container | 07/12, 10:34 AM UTC | 0.35 h | — |
| 413907175 | container | 07/12, 10:27 AM UTC | 1.73 h | — |
| 413867569 | container | 07/12, 10:24 AM UTC | -97.65 h | — |
| 477996397 | product | 07/12, 10:16 AM UTC | -3.51 h | — |
| 413995708 | container | 07/12, 10:13 AM UTC | 2.19 h | — |
| 477995253 | chemical | 07/12, 09:30 AM UTC | 4.19 h | — |
| 412400040 | container | 07/12, 09:26 AM UTC | 2.04 h | — |
| 412412420 | container | 07/12, 09:24 AM UTC | 1.99 h | — |
| 538009915 | general-cargo | 07/12, 09:23 AM UTC | 0.53 h | — |
| 413868409 | container | 07/12, 09:17 AM UTC | 0.69 h | — |
| 477997260 | container | 07/12, 09:11 AM UTC | -1.54 h | — |
| 477997242 | container | 07/12, 08:53 AM UTC | -0.00 h | 7006.60 h |
| 413206820 | container | 07/12, 08:40 AM UTC | 0.70 h | -108.67 h |
| 413995708 | container | 07/12, 08:16 AM UTC | -0.06 h | — |
| 413847486 | container | 07/12, 08:03 AM UTC | 0.12 h | — |
| 413762729 | container | 07/12, 08:03 AM UTC | 0.39 h | — |
| 413465010 | container | 07/12, 08:00 AM UTC | 0.91 h | — |
| 477996426 | product | 07/12, 07:48 AM UTC | 0.40 h | — |
| 477996955 | product | 07/12, 07:42 AM UTC | -0.55 h | — |
| 412400040 | container | 07/12, 07:40 AM UTC | 0.17 h | -317.68 h |
| 413868409 | container | 07/12, 07:10 AM UTC | -0.16 h | -2.18 h |
| 477995437 | container | 07/12, 07:03 AM UTC | -7.54 h | — |
| 413470850 | container | 07/12, 06:54 AM UTC | 1.89 h | — |
| 352003105 | container | 07/12, 06:47 AM UTC | -0.15 h | -599.79 h |
| 477997254 | container | 07/12, 06:22 AM UTC | -0.26 h | — |
| 413465130 | container | 07/12, 06:16 AM UTC | 1.24 h | — |
| 413907175 | container | 07/12, 06:07 AM UTC | -0.14 h | — |
| 636092898 | general-cargo | 07/12, 06:06 AM UTC | 0.81 h | -1039.10 h |
| 412412420 | container | 07/12, 06:02 AM UTC | -4.34 h | 1.97 h |
| 413467550 | container | 07/12, 05:54 AM UTC | 0.28 h | -6.41 h |
| 477997254 | container | 07/12, 05:51 AM UTC | 1.37 h | — |
| 477996397 | product | 07/12, 05:42 AM UTC | 2.19 h | — |
| 477996397 | product | 07/12, 05:30 AM UTC | 2.29 h | — |
| 413492280 | container | 07/12, 05:12 AM UTC | 1.08 h | -223.21 h |
| 413904227 | container | 07/12, 05:10 AM UTC | 0.35 h | -213.68 h |
| 413856971 | container | 07/12, 04:54 AM UTC | -3.05 h | — |
| 413876063 | container | 07/12, 04:27 AM UTC | -9.83 h | — |
| 413846694 | container | 07/12, 04:24 AM UTC | -22.00 h | — |
| 235068032 | container | 07/12, 04:23 AM UTC | -10.19 h | -11.89 h |
| 538007820 | container | 07/12, 04:19 AM UTC | -1.88 h | -926.33 h |
| 477996204 | product | 07/12, 04:08 AM UTC | -2.99 h | — |
| 413906353 | container | 07/12, 03:35 AM UTC | 0.19 h | — |
| 413572850 | container | 07/12, 03:21 AM UTC | 2.36 h | -63.36 h |
| 413470850 | container | 07/12, 03:07 AM UTC | 2.43 h | -105.63 h |
| 413906914 | container | 07/12, 02:25 AM UTC | -1723.87 h | — |
| 413855543 | container | 07/12, 02:18 AM UTC | 2.73 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.