ETA accuracy benchmark · 🇸🇬 Singapore
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Singapore, 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)
48.68 h
MAE 87.93 h · 988 voyages
Broadcast ETA (RMSE)
59.36 h
crew-declared, 289 voyages (same set)
Our advantage
18.0 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (511 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 566702000 | product | 08/26, 11:28 PM UTC | 2.23 h | 7.33 h |
| 538090616 | product | 08/26, 11:21 PM UTC | 2.19 h | -42.35 h |
| 564287000 | chemical | 08/26, 11:13 PM UTC | -32.59 h | -87.23 h |
| 563038800 | product | 08/26, 10:58 PM UTC | -9.29 h | -26.47 h |
| 574005160 | container | 08/26, 10:48 PM UTC | -10.33 h | — |
| 229592000 | container | 08/26, 10:40 PM UTC | 3.42 h | -1818.68 h |
| 563294700 | product | 08/26, 10:16 PM UTC | 2.70 h | -639.77 h |
| 563208100 | product | 08/26, 10:01 PM UTC | 6.14 h | -204.03 h |
| 525109023 | container | 08/26, 09:22 PM UTC | -2.80 h | — |
| 563235100 | container | 08/26, 08:53 PM UTC | 3.83 h | — |
| 354942000 | general-cargo | 08/26, 08:42 PM UTC | 2.38 h | -780.72 h |
| 564886000 | product | 08/26, 08:33 PM UTC | 4.43 h | -545.22 h |
| 563235100 | container | 08/26, 08:26 PM UTC | 2.51 h | -402.44 h |
| 563204400 | product | 08/26, 08:26 PM UTC | 4.10 h | -52.74 h |
| 563083810 | product | 08/26, 08:24 PM UTC | -10.19 h | -18.91 h |
| 563226900 | product | 08/26, 08:04 PM UTC | 0.72 h | -82.07 h |
| 565173000 | product | 08/26, 08:03 PM UTC | 2.67 h | -308.05 h |
| 212671000 | container | 08/26, 07:28 PM UTC | 4.59 h | 4.02 h |
| 566754000 | chemical | 08/26, 07:28 PM UTC | 6.57 h | -15.97 h |
| 565662000 | product | 08/26, 06:12 PM UTC | -5.88 h | -2.20 h |
| 563233500 | product | 08/26, 05:45 PM UTC | -5.52 h | — |
| 564735000 | product | 08/26, 05:33 PM UTC | -0.99 h | -249.81 h |
| 533133774 | product | 08/26, 04:50 PM UTC | 0.00 h | -29.84 h |
| 431792000 | container | 08/26, 04:23 PM UTC | 1.74 h | — |
| 477664500 | container | 08/26, 03:59 PM UTC | 11.43 h | — |
| 563856000 | product | 08/26, 03:41 PM UTC | -1.51 h | -181.19 h |
| 565660000 | product | 08/26, 03:22 PM UTC | -87.30 h | — |
| 477664500 | container | 08/26, 03:11 PM UTC | 0.53 h | -617.19 h |
| 563001270 | product | 08/26, 03:06 PM UTC | -1.05 h | — |
| 533133444 | product | 08/26, 02:47 PM UTC | -748.20 h | -95.80 h |
| 566942000 | general-cargo | 08/26, 02:43 PM UTC | 1.91 h | — |
| 636024524 | container | 08/26, 02:19 PM UTC | 1.28 h | -4.83 h |
| 563086920 | product | 08/26, 02:18 PM UTC | 5.58 h | -11.30 h |
| 636018769 | container | 08/26, 02:07 PM UTC | 5.19 h | — |
| 563086920 | product | 08/26, 02:01 PM UTC | -0.42 h | -59.02 h |
| 566065000 | product | 08/26, 01:55 PM UTC | 1.04 h | 5.74 h |
| 566942000 | container | 08/26, 01:54 PM UTC | 2.53 h | -2122.90 h |
| 565587000 | container | 08/26, 01:49 PM UTC | 3.11 h | 7.18 h |
| 563078430 | product | 08/26, 01:32 PM UTC | 3.51 h | -41.04 h |
| 538008708 | product | 08/26, 01:15 PM UTC | 1.53 h | 7.77 h |
| 566511000 | product | 08/26, 01:08 PM UTC | -28.53 h | -1453.72 h |
| 563024400 | product | 08/26, 01:03 PM UTC | 0.20 h | — |
| 563279500 | general-cargo | 08/26, 12:45 PM UTC | -0.62 h | -1730.77 h |
| 636024525 | container | 08/26, 12:25 PM UTC | 3.93 h | -1861.43 h |
| 352822000 | container | 08/26, 12:14 PM UTC | 3.76 h | -1325.24 h |
| 563233500 | product | 08/26, 11:51 AM UTC | 3.05 h | -4.86 h |
| 518998488 | container | 08/26, 11:32 AM UTC | 1.78 h | — |
| 477921700 | general-cargo | 08/26, 11:24 AM UTC | 2.66 h | -2098.41 h |
| 353851000 | general-cargo | 08/26, 11:16 AM UTC | 1.38 h | -610.28 h |
| 565553000 | product | 08/26, 11:12 AM UTC | 1.64 h | -1342.70 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.