ETA accuracy benchmark · 🇧🇷 Santos
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Santos, 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)
14.68 h
MAE 10.32 h · 522 voyages
Broadcast ETA (RMSE)
61.35 h
crew-declared, 253 voyages (same set)
Our advantage
76.1 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (162 excluded). Both figures are computed on the same remaining voyage set — apples to apples.
Closed voyages
error = predicted/broadcast minus actual arrival (hours)| 712204006 | product | 10/12, 01:54 AM UTC | -0.31 h | — |
| 710004636 | general-cargo | 10/11, 11:47 PM UTC | 0.33 h | -624.79 h |
| 257199000 | product | 10/11, 11:40 PM UTC | 1.98 h | -34.67 h |
| 219505000 | container | 10/11, 11:13 PM UTC | 2.26 h | -336.72 h |
| 249163000 | product | 10/11, 10:51 PM UTC | 0.91 h | -609.36 h |
| 563758000 | container | 10/11, 10:47 PM UTC | -0.48 h | -244.79 h |
| 710100009 | product | 10/11, 10:05 PM UTC | 0.54 h | — |
| 229553000 | product | 10/11, 06:44 PM UTC | 2.27 h | -27.73 h |
| 712204006 | product | 10/11, 04:59 PM UTC | -0.29 h | — |
| 712204006 | product | 10/11, 04:41 PM UTC | -0.38 h | — |
| 352003659 | product | 10/11, 04:32 PM UTC | 1.03 h | -28.54 h |
| 538008595 | container | 10/11, 01:31 PM UTC | 0.38 h | -133.53 h |
| 414665000 | container | 10/11, 12:39 PM UTC | -0.05 h | -0.66 h |
| 477174900 | container | 10/11, 09:16 AM UTC | 1.09 h | 616.73 h |
| 257524000 | container | 10/11, 09:11 AM UTC | 1.48 h | -4.19 h |
| 710100009 | product | 10/11, 08:48 AM UTC | -0.14 h | — |
| 538003692 | container | 10/11, 08:46 AM UTC | 3.78 h | -149.28 h |
| 566794000 | container | 10/11, 05:18 AM UTC | 0.33 h | -0.82 h |
| 352003837 | container | 10/11, 04:43 AM UTC | 1.45 h | -181.73 h |
| 477113100 | general-cargo | 10/11, 04:34 AM UTC | 0.52 h | -164.58 h |
| 712204006 | product | 10/11, 03:38 AM UTC | 1.05 h | — |
| 710100009 | product | 10/11, 01:39 AM UTC | 1.58 h | — |
| 636025634 | container | 10/11, 12:19 AM UTC | 1.05 h | -11.33 h |
| 710071000 | container | 10/11, 12:08 AM UTC | 0.11 h | -132.13 h |
| 538010606 | container | 10/11, 12:02 AM UTC | 0.55 h | -335.04 h |
| 636025568 | container | 10/10, 11:13 PM UTC | 1.93 h | -178.23 h |
| 636026671 | container | 10/10, 11:06 PM UTC | -0.01 h | -1.10 h |
| 636023145 | container | 10/10, 11:04 PM UTC | 0.45 h | -1.57 h |
| 710100009 | product | 10/10, 09:32 PM UTC | -0.49 h | — |
| 219107000 | container | 10/10, 06:07 PM UTC | 1.04 h | 14.87 h |
| 636018721 | container | 10/10, 05:39 PM UTC | 0.69 h | -294.66 h |
| 636022122 | container | 10/10, 05:38 PM UTC | -0.23 h | -137.64 h |
| 255916520 | chemical | 10/10, 05:17 PM UTC | 0.51 h | -3.80 h |
| 563033800 | container | 10/10, 05:13 PM UTC | 0.39 h | -25.73 h |
| 538009615 | product | 10/10, 02:12 PM UTC | 2.19 h | -214.21 h |
| 710100009 | product | 10/10, 01:37 PM UTC | -0.19 h | — |
| 712204006 | product | 10/10, 08:04 AM UTC | 0.90 h | — |
| 712204006 | product | 10/10, 07:42 AM UTC | 2.99 h | — |
| 712204006 | product | 10/10, 07:14 AM UTC | -0.18 h | — |
| 247341900 | container | 10/10, 07:09 AM UTC | 0.32 h | -31.16 h |
| 710100009 | product | 10/10, 06:34 AM UTC | 1.04 h | — |
| 538011110 | container | 10/10, 05:31 AM UTC | 2.65 h | -314.52 h |
| 371956000 | container | 10/10, 05:15 AM UTC | 0.30 h | -16.25 h |
| 710006782 | general-cargo | 10/10, 05:08 AM UTC | 0.89 h | -39.14 h |
| 538009665 | container | 10/10, 05:07 AM UTC | 0.35 h | -62.12 h |
| 249397000 | container | 10/10, 04:52 AM UTC | 0.85 h | -28.88 h |
| 255917223 | dry-bulk | 10/10, 01:17 AM UTC | 0.38 h | -37.29 h |
| 710100009 | product | 10/10, 12:09 AM UTC | 0.14 h | — |
| 712204006 | product | 10/09, 11:41 PM UTC | 0.01 h | — |
| 477155900 | container | 10/09, 11:27 PM UTC | 0.34 h | -4.21 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.