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 7 days. We publish the number — good or bad. Lower error is better.
Port Flow predicted ETA (RMSE)
11.93 h
MAE 15.16 h · 535 voyages
Broadcast ETA (RMSE)
67.29 h
crew-declared, 189 voyages (same set)
Our advantage
82.3 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (212 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 |
|---|---|---|---|---|
| 563208100 | product | 07/12, 11:33 AM UTC | -0.38 h | — |
| 563711000 | product | 07/12, 11:31 AM UTC | -1.13 h | -141.52 h |
| 563084060 | product | 07/12, 11:24 AM UTC | 0.47 h | — |
| 563208100 | product | 07/12, 10:56 AM UTC | -2.45 h | — |
| 563208100 | product | 07/12, 10:39 AM UTC | 0.37 h | -174.65 h |
| 248161000 | container | 07/12, 10:30 AM UTC | -0.51 h | -2.76 h |
| 636016179 | container | 07/12, 10:29 AM UTC | 0.74 h | -636.99 h |
| 477895500 | general-cargo | 07/12, 10:08 AM UTC | -1.99 h | -534.14 h |
| 563029230 | product | 07/12, 09:43 AM UTC | -2.24 h | — |
| 477664500 | container | 07/12, 09:28 AM UTC | -1.12 h | -283.98 h |
| 248161000 | container | 07/12, 09:15 AM UTC | -0.58 h | -1.51 h |
| 565102000 | product | 07/12, 09:11 AM UTC | -1.57 h | -1033.19 h |
| 565780000 | container | 07/12, 08:35 AM UTC | -2.24 h | -151.59 h |
| 566702000 | product | 07/12, 08:32 AM UTC | -15.47 h | -6.38 h |
| 566630000 | product | 07/12, 08:19 AM UTC | -2.46 h | -1391.32 h |
| 565173000 | product | 07/12, 07:33 AM UTC | -2.22 h | 784.45 h |
| 211779000 | container | 07/12, 07:02 AM UTC | -2.01 h | 5.47 h |
| 636023520 | container | 07/12, 06:47 AM UTC | -9.54 h | -722.54 h |
| 373721000 | container | 07/12, 06:31 AM UTC | -1.24 h | -1.53 h |
| 563336000 | product | 07/12, 06:13 AM UTC | -1.60 h | — |
| 566019000 | product | 07/12, 05:16 AM UTC | -0.83 h | -179.12 h |
| 311000188 | container | 07/12, 05:13 AM UTC | -5.19 h | -706.72 h |
| 563253500 | product | 07/12, 05:09 AM UTC | 0.48 h | -115.65 h |
| 564058000 | container | 07/12, 05:04 AM UTC | -5.47 h | -468.07 h |
| 636022036 | container | 07/12, 04:07 AM UTC | -20.76 h | -148.12 h |
| 563235700 | product | 07/12, 04:00 AM UTC | -2.91 h | -215.01 h |
| 351124000 | container | 07/12, 03:37 AM UTC | -6.32 h | -438.12 h |
| 566373000 | chemical | 07/12, 03:35 AM UTC | -2.13 h | — |
| 440880000 | container | 07/12, 03:32 AM UTC | -1.02 h | -102.04 h |
| 565102000 | product | 07/12, 03:20 AM UTC | -2.28 h | -1027.33 h |
| 416428000 | container | 07/12, 03:11 AM UTC | 0.10 h | -664.20 h |
| 563336000 | product | 07/12, 02:10 AM UTC | 0.18 h | 697.82 h |
| 566961000 | container | 07/12, 12:49 AM UTC | 1.65 h | -943.83 h |
| 636020769 | container | 07/12, 12:43 AM UTC | 2.54 h | -2.72 h |
| 636020769 | container | 07/12, 12:21 AM UTC | 2.32 h | -338.35 h |
| 563214100 | product | 07/12, 12:21 AM UTC | -5.32 h | -70.85 h |
| 563001270 | product | 07/11, 11:27 PM UTC | -1.03 h | — |
| 356815000 | container | 07/11, 11:16 PM UTC | -4.99 h | -8.78 h |
| 563082690 | product | 07/11, 11:00 PM UTC | 0.27 h | 3.33 h |
| 574908000 | container | 07/11, 10:59 PM UTC | 2.08 h | -102.00 h |
| 352002561 | container | 07/11, 10:53 PM UTC | 1.27 h | -947.89 h |
| 305346000 | general-cargo | 07/11, 10:49 PM UTC | -36.63 h | -48.82 h |
| 564892000 | product | 07/11, 10:48 PM UTC | 2.99 h | -335.80 h |
| 352002088 | container | 07/11, 09:55 PM UTC | -0.30 h | -3.43 h |
| 566241000 | product | 07/11, 09:43 PM UTC | -21.48 h | -175.72 h |
| 636024183 | product | 07/11, 09:28 PM UTC | -0.83 h | -780.97 h |
| 352002088 | container | 07/11, 09:27 PM UTC | 0.03 h | -2.96 h |
| 563086610 | product | 07/11, 08:59 PM UTC | -10.97 h | -183.32 h |
| 636093094 | general-cargo | 07/11, 08:36 PM UTC | 4.90 h | -83.61 h |
| 563251100 | product | 07/11, 08:11 PM UTC | 1.43 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.