ETA accuracy benchmark · 🇲🇦 Tanger Med
How Port Flow's predicted ETA compares to each vessel's own broadcast ETA at Tanger Med, 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)
20.90 h
MAE 10.95 h · 237 voyages
Broadcast ETA (RMSE)
36.48 h
crew-declared, 133 voyages (same set)
Our advantage
42.7 %
lower error than the broadcast ETA
Broadcast ETAs more than 7 days from the actual arrival are excluded as AIS sentinel / placeholder values (37 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 |
|---|---|---|---|---|
| 636023890 | product | 07/11, 05:19 AM UTC | 2.98 h | -45.32 h |
| 211897760 | container | 07/11, 03:49 AM UTC | 1.76 h | — |
| 244850075 | container | 07/10, 10:59 PM UTC | 9.32 h | -4.99 h |
| 215640000 | container | 07/10, 12:28 PM UTC | -16.93 h | -18.47 h |
| 211897760 | container | 07/10, 11:35 AM UTC | -13.13 h | -15.09 h |
| 249831000 | container | 07/09, 10:28 PM UTC | -11.45 h | 1403.53 h |
| 224473460 | product | 07/09, 09:05 PM UTC | -0.67 h | -541.09 h |
| 275524000 | container | 07/09, 08:42 PM UTC | -268.79 h | -244.70 h |
| 224473460 | product | 07/09, 08:38 PM UTC | -8.44 h | — |
| 210707000 | general-cargo | 07/09, 06:08 PM UTC | -1.61 h | -19.14 h |
| 477174600 | container | 07/09, 03:06 PM UTC | -7.66 h | -13.12 h |
| 218026640 | container | 07/09, 02:27 PM UTC | 0.78 h | -4.45 h |
| 224879000 | container | 07/09, 02:21 PM UTC | 0.05 h | -18.86 h |
| 565449000 | container | 07/09, 08:32 AM UTC | -0.12 h | -236.55 h |
| 636023890 | product | 07/09, 07:55 AM UTC | 2.34 h | 0.07 h |
| 247217500 | container | 07/09, 07:33 AM UTC | 0.03 h | — |
| 220442000 | product | 07/09, 05:30 AM UTC | -1.20 h | -4.51 h |
| 636015524 | container | 07/09, 04:47 AM UTC | 0.05 h | -1.78 h |
| 636019673 | general-cargo | 07/09, 04:09 AM UTC | -2.08 h | -5.66 h |
| 224473460 | product | 07/09, 03:53 AM UTC | 3.06 h | -523.89 h |
| 218026640 | container | 07/09, 02:44 AM UTC | -6.71 h | -9.74 h |
| 219018692 | container | 07/09, 01:26 AM UTC | -102.50 h | -59.94 h |
| 224473460 | product | 07/08, 11:00 PM UTC | 5.42 h | — |
| 248084000 | product | 07/08, 10:52 PM UTC | 6.65 h | — |
| 636018703 | container | 07/08, 09:50 PM UTC | 1.56 h | -4.35 h |
| 255915654 | general-cargo | 07/08, 08:58 PM UTC | 0.50 h | -3.48 h |
| 219018765 | container | 07/08, 08:03 PM UTC | -0.62 h | 571.45 h |
| 566796000 | general-cargo | 07/08, 07:48 PM UTC | -5.54 h | -7.81 h |
| 249962000 | product | 07/08, 07:26 PM UTC | 3.17 h | 2.56 h |
| 210707000 | container | 07/08, 03:32 PM UTC | 1.15 h | -16.04 h |
| 224879000 | container | 07/08, 01:02 PM UTC | -3.52 h | -22.54 h |
| 212633000 | product | 07/08, 12:53 PM UTC | -21.54 h | -71.90 h |
| 563168300 | container | 07/08, 12:14 PM UTC | -2.46 h | -843.25 h |
| 224473460 | product | 07/08, 11:33 AM UTC | -0.15 h | -507.56 h |
| 248159000 | chemical | 07/08, 11:29 AM UTC | 2.51 h | — |
| 538009923 | container | 07/08, 11:06 AM UTC | -18.36 h | -22.11 h |
| 219057000 | product | 07/08, 11:03 AM UTC | 5.18 h | — |
| 304907000 | container | 07/08, 10:56 AM UTC | 1.07 h | -57.94 h |
| 224473460 | product | 07/08, 10:23 AM UTC | -4.19 h | -506.40 h |
| 219057000 | product | 07/08, 10:08 AM UTC | -4.15 h | -1.14 h |
| 636093143 | container | 07/08, 07:35 AM UTC | 0.00 h | -1.59 h |
| 209918000 | product | 07/08, 07:26 AM UTC | 0.46 h | -1.44 h |
| 538004913 | general-cargo | 07/08, 05:10 AM UTC | -2.31 h | -3.67 h |
| 248159000 | chemical | 07/08, 05:07 AM UTC | -0.54 h | 718.88 h |
| 376205000 | container | 07/08, 04:52 AM UTC | 2.71 h | 202.12 h |
| 538007353 | container | 07/08, 04:18 AM UTC | 2.09 h | 1.70 h |
| 232013524 | container | 07/08, 04:17 AM UTC | -1.53 h | -4.28 h |
| 376205000 | container | 07/08, 04:08 AM UTC | -0.84 h | 202.87 h |
| 255806469 | container | 07/08, 01:26 AM UTC | -0.37 h | — |
| 248084000 | product | 07/08, 01:25 AM UTC | -0.55 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.