Skip to main content

Model & Methodology

Historical cancellation data, prediction model performance, and how FerryForecast works.

Historical Cancellation Data

Based on 522 historical cancellation events currently sourced from SSA cancellation-email records and Hy-Line #ALERT feed records.

Steamship Authority

212 cancellations (2023-01-16 to 2026-07-07)
Weather
45%
95
Mechanical
32%
68
Crew Shortage
12%
25
Trip Consolidation
13
Unforeseen Circumstances
10
Unknown
1

Hy-Line Cruises

310 cancellations (2023-08-25 to 2026-07-08)
Weather
95%
293
Mechanical
9
Unspecified
8

Cancellations by Month

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
SSA
Hy-Line

Key Takeaways

  • Weather is the dominant cause: 45% of SSA and 95% of Hy-Line cancellations
  • SSA has more mechanical (32%) and crew (12%) cancellations, consistent with running year-round car/passenger service
  • Winter months (Dec-Mar) see the most cancellations from both operators
  • Hy-Line runs year-round but with reduced winter service (~6 departures/day vs. 10+ in summer)

Source note: This card currently uses alert-derived labels. We are migrating to operator trip-level logs (primary) plus AIS run/no-run verification (secondary), with monthly reconciliation against SSA’s official performance reports. Until that transition is complete, category percentages here remain alert-derived.

Model Performance

Trip-level metrics evaluated on 33,411 labeled trips (Jan 2023 – Feb 2026). Probabilities are calibrated so a “20%” estimate reflects roughly a 20% observed running rate for similar weather conditions.

98%
Trip Accuracy
0.42
McFadden R²
0.018
Brier Score

Calibration

Trip-level reliability: when we predict X% chance of running, how often did that trip actually run?

0-10
10-20
20-30
30-40
40-50
50-60
60-70
70-80
80-90
90-100
Predicted
Actual

Feature Importance

Odds ratio per 1 standard deviation increase (significant vs. not significant)

Wind Speed (mph)
1.53x
Wind Gusts (mph)
1.52x
Wave Height (ft)*
1.80x
Wave Period (sec)
1.08x
NE Wind Direction
1.06x
Month*
0.90x

* Statistically significant (p < 0.05). Wave Height (1.80x) is the strongest predictor.

Daily Accuracy by Month

Percentage of trips the model correctly predicted cancellation vs. running, by month

Jan
94%
n=1650
Feb
93%
n=1474
Mar
93%
n=1754
Apr
98%
n=2376
May
98%
n=2712
Jun
100%
n=3151
Jul
100%
n=3942
Aug
100%
n=3941
Sep
98%
n=3670
Oct
97%
n=3460
Nov
97%
n=2585
Dec
96%
n=2696
Detailed statistics

Confusion Matrix

Predicted Running
Predicted Cancelled
Actually Ran
32470
Correct
90
False Alarm
Actually Cancelled
734
Missed
117
Caught
Precision: 57%Recall: 14%

Trip-level model on imbalanced data (97.4% of trips run): intentionally conservative on false alarms.

Model Fit

McFadden's R²0.425
Training samples33,411
Log-likelihood-2279.9
LR Chi²3367.1

Full Coefficient Table

Odds ratios and Wald test p-values for all model features.

FeatureCoeffSEWaldp-valueOR95% CI
Intercept-4.67900.06425317.64<0.001[-4.80, -4.55]
Wind Speed (mph)0.42250.24562.960.08531.526[-0.06, 0.90]
Wind Gusts (mph)0.41890.23513.170.07481.520[-0.04, 0.88]
Wave Height (ft)0.58740.0567107.52<0.0011.799[0.48, 0.70]
Wave Period (sec)0.07650.08240.860.35281.080[-0.08, 0.24]
NE Wind Direction0.05530.03023.350.06731.057[-0.00, 0.11]
Month-0.10700.030512.28<0.0010.899[-0.17, -0.05]

Wind speed and gusts have high coefficients but large standard errors due to multicollinearity. Wave height is the strongest independently significant predictor.

Methodology

How this site predicts whether Nantucket ferries will run, start to finish.

What we predict

For each scheduled ferry departure between Hyannis and Nantucket, we estimate the probability that the trip will operate as planned, based on forecast weather conditions. A “95%” means that historically, trips operating under similar weather conditions ran about 95% of the time. A “40%” means conditions resemble those when roughly 6 in 10 comparable trips were cancelled.

We estimate weather-related cancellation risk only. Mechanical breakdowns, crew shortages, and operational decisions are outside the model’s scope. SSA’s official performance data attributes about 33% of Nantucket trip cancellations to weather and 10% to mechanical causes, with the remainder in a broad “other” category that likely includes some weather-adjacent decisions. Hy-Line cancellations skew more heavily toward weather (~85% in our dataset).

When the estimate is above 95%, weather-related cancellation risk appears low based on current forecasts. When it falls below 40%, conditions resemble historical cancellation days. Non-weather cancellations are not modeled and will not appear in these estimates.

The prediction model

We use logistic regression, a well-understood statistical model that estimates the probability of a binary outcome (cancelled or not cancelled) given a set of weather measurements.

Training data: Trained on 33,445 individual trip records from January 2023 to July 2026, each labeled as cancelled or normal. Of those, 870 were confirmed cancellations (542 from SSA email alerts, 328 from Hy-Line alerts) and 32,541 were confirmed running from published schedules. The model retrains weekly on an expanding dataset (see Continuous improvement below).

Performance (5-fold cross-validated): AUC 0.952, Brier Score 0.018, 97.5% accuracy. AUC and Brier Score are the most informative measures here — accuracy appears high largely because cancellations are rare (~2.6% of trips), so a model that always predicted “runs” would already score ~97%. Probabilities are calibrated using isotonic regression so when the site shows 80%, roughly 80% of comparable trips in our historical data ran as scheduled.

Why logistic regression? It’s interpretable (you can see exactly which weather variables matter and by how much), stable with limited data, and hard to overfit. More complex models (random forest, gradient boosting) showed marginal accuracy gains but lost interpretability.

Variables and what they mean

The model uses six weather features, listed by predictive importance:

Wave Height (strongest predictor, 1.80x odds ratio)
Significant wave height — the average of the tallest third of waves. This is what mariners mean by “seas are 5 feet.” In our training data, cancelled trips average 3.1 ft waves vs. 1.3 ft on normal trips. Measured in feet.
Wind Speed (1.53x)
Sustained wind speed at 10m height. The baseline wind condition — less dramatic than gusts but more persistent. Cancelled trips in our dataset average 24.4 mph sustained wind vs. 13.1 mph on normal trips. Measured in mph.
Wind Gusts (1.52x)
Maximum wind speed recorded during the observation period. Gusts cause the sudden lurches that make docking dangerous. Measured in mph.
Wave Period (1.08x — not significant)
Time between wave crests. Shorter periods (3–5 seconds) mean choppy wind waves; longer periods (8–12 seconds) mean smoother ocean swells. Included in the model but not a statistically significant predictor on its own.
NE Wind Direction (1.06x — not significant)
Northeast winds (20°–80°) blow directly across Nantucket Sound, building steep, short-period waves. The effect is present but small.
Month (0.90x, significant)
Calendar month captures seasonal patterns. Later months (summer) have fewer cancellations than winter months at the same wind speed. The model correctly learns that July is safer than February even with identical conditions.

Odds ratios are per 1 standard deviation increase. A 1.80x ratio means each standard deviation increase in wave height raises cancellation odds by 80%. Month has a protective effect (0.90x) — each SD toward summer months reduces cancellation odds by 10%.

Fast ferries vs. traditional ferries

Fast ferries (Hy-Line’s Grey Lady, SSA’s Iyanough) are high-speed catamarans that make the crossing in ~1 hour. They’re more sensitive to rough seas due to their hull design and higher operating speed.

Traditional ferries (SSA’s Eagle, Woods Hole) are larger, heavier car/passenger vessels. They take ~2.25 hours but tolerate significantly worse conditions.

How we adjust: The base model produces a single cancellation probability. For fast ferries, we shift the internal score toward cancellation (+0.3 logit). For traditional ferries, we shift it toward running (−0.8 logit). In calm weather both show ~99%. In marginal weather (20 mph wind, 3 ft waves), a fast ferry might show 85% while a traditional ferry shows 97%.

Classification: All Hy-Line Nantucket service is fast ferry (Grey Lady catamaran). SSA trips are classified by their published vessel type — “Fast Ferry” (Iyanough) vs. “Vehicle/Passenger” (traditional).

Data sources
Historical cancellation labels
Trip-level ground truth: SSA cancellation emails (542 weather cancellations), Hy-Line #ALERT feed records via Flockler API (328 weather cancellations), and 33,445 scheduled trips from the ACK Schedules API used as the baseline schedule. Cross-referenced against SSA annual performance reports for QA.
Current weather: NOAA Buoy 44020
A physical weather buoy operated by the National Oceanic and Atmospheric Administration, moored directly in Nantucket Sound on the ferry route. Reports wind speed, gusts, direction, wave height, wave period, temperature, and pressure every 10 minutes. Wave height and dominant wave period (DPD) are reported less frequently than wind data and are found independently — wave height is available on roughly a third of readings, while DPD may be unavailable for longer stretches. When the latest reading lacks either value, we backfill from the most recent reading that includes it (scanning up to 12 hours of data). The model was trained exclusively on DPD; we do not substitute the average wave period (APD) as a fallback.
Forecast weather: Open-Meteo
Free, open-source weather API that blends multiple models (ECMWF IFS, GFS, ICON, and others) to select the best forecast for a given location. For marine data (wave height, period), it uses ECMWF WAM and NCEP GFS Wave models. No API key required. Forecasts are sampled at 3-hour intervals during ferry operating hours (6 AM, 9 AM, 12 PM, 3 PM, 6 PM, 9 PM ET). Each trip’s forecast is matched to the nearest 3-hour interval.
Fallback weather: Open-Meteo current
If the NOAA buoy is offline (maintenance, communication failure), we fall back to Open-Meteo’s model-derived current conditions for the same coordinates. This is a forecast model’s estimate, not a direct observation, so it’s less accurate. The data source is shown on the Current Conditions card.
SSA schedule & status
Scraped from the Steamship Authority website. Includes departure times, vessel types, and real-time status (On Time, Delayed, Cancelled).
Hy-Line schedule
Retrieved from ACK Schedules API, a third-party service that publishes Hy-Line’s departure times and route information.
Hy-Line alerts
Fetched from Hy-Line’s social media feed via the Flockler API. We check for posts tagged #alert that mention cancellation-related terms (cancel, suspend, weather, wind, sea, storm).
How training data was built

The model is trained on trip-level data: for each individual scheduled departure from January 2023 to July 2026, was this specific trip cancelled due to weather?

Label sources (33,445 trips total): SSA weather cancellations are from their automated email alert system (542 confirmed cancellations). Hy-Line cancellations come from their #ALERT social media feed via the Flockler API (328 confirmed cancellations). The remaining 32,541 scheduled trips without a corresponding cancellation alert were assumed to have operated as scheduled — the standard approach for modeling rare events from alert-based data sources.

SSA cancellations were extracted from the full history of trip-cancellation email alerts, yielding 542 weather cancellations used for training. Reasons include weather, mechanical, crew shortage, and other causes — only weather-attributed trips were labeled cancelled.

Hy-Line cancellations were matched from Flockler alert posts to specific ACK Schedules API trip records (328 confirmed weather cancellations).

Weather data for each trip was pulled from NOAA Buoy 44020’s historical records. Each trip is matched to the nearest observed reading within the ferry operating window, capturing wind speed, gusts, wave height, wave period, and direction at trip time.

SSA annual performance statistics (downloaded from steamshipauthority.com/performance) were cross-referenced with our email data. Note: SSA’s official breakdown categorizes only ~33% of Nantucket cancellations as “weather,” while our email alerts show 64%. The discrepancy likely reflects SSA’s broad “other” category (56% of their total) capturing some weather-adjacent operational decisions that their email alerts explicitly label as weather.

Forecast accuracy by day

Our 7-Day Outlook uses Open-Meteo’s forecast models, which blend ECMWF, GFS, and regional models. Forecast accuracy degrades with lead time — here’s what we know:

HorizonWind accuracyWave accuracyOur confidence
Day 1–2RMSE ~2.1 m/s (~4.7 mph)High skill, RMSE <0.3 mHigh
Day 3–4RMSE ~2.3 m/s (~5.1 mph)Good skill, RMSE ~0.3–0.5 mModerate
Day 5–7RMSE ~2.4+ m/s (~5.4+ mph)Useful for large signals onlyLower

Wind RMSE figures are from ECMWF verification reports. Open-Meteo does not publish its own accuracy statistics. Wave forecast verification from the WMO Lead Centre indicates wave forecasts are “useful to day 5 in the Northern Hemisphere.”

What this means for our predictions: Cancellation days in our dataset average 24.4 mph wind and 3.1 ft waves. A 5 mph RMSE at day 5 could swing a 15 mph forecast to 20 mph (still below typical cancellation conditions) or a 20 mph forecast to 25 mph (now in the danger zone). Days 1–3 are reliable. Days 4–5 are useful. Days 6–7 should be treated as directional only — good for spotting obvious storm patterns, not for making travel decisions.

Assumptions and limitations
  • Weather only. We cannot predict mechanical failures, crew shortages, or operational decisions. SSA attributes about 10% of cancellations to mechanical causes, with a large “other” bucket covering the rest. Hy-Line’s non-weather cancellations are ~15%.
  • Single buoy. Conditions at Buoy 44020 represent mid-Sound conditions. Harbor conditions at Hyannis or Nantucket may differ, especially in fog.
  • Captain’s discretion. Cancellation decisions are ultimately made by the vessel captain and operator dispatch. Two identical weather days can have different outcomes depending on the captain, vessel condition, passenger load, and tidal state.
  • Schedule approximation. Tomorrow’s trips use today’s published schedule. If the operator adjusts the schedule overnight (e.g., adding or removing trips in response to weather), our departure list may be stale.
  • Forecast weather matched to trips. We sample Open-Meteo forecasts at 3-hour intervals (6 AM, 9 AM, 12 PM, 3 PM, 6 PM, 9 PM). Each trip is matched to the nearest interval. A trip at 10:30 AM uses the 9 AM forecast. This is approximate — conditions can change within a 3-hour window.
  • Coastal accuracy. Open-Meteo’s marine API notes that “accuracy at coastal areas is limited.” Nantucket Sound is semi-enclosed, which may cause local wave patterns that global models underestimate.
Why weather-only predictions

There are two reasonable approaches to predicting ferry cancellations: model the base rate (what percentage of trips get cancelled on any given day?) or model weather-conditional probability (given today’s specific weather, what’s the chance of cancellation?).

Base rate approach: About 11.6% of days in our dataset had at least one weather cancellation. You could simply say “there’s an 88% chance boats will run today” every single day. This would be correct 88% of the time — but it tells you nothing useful. It can’t distinguish a calm July morning from a nor’easter.

Weather-conditional approach (what we use): We feed current wind speed, gusts, wave height, and other conditions into a logistic regression model. On a calm day, the model returns 99%. When a storm approaches, it drops to 60% or lower. This is genuinely useful — it answers the question people actually ask: “Should I worry about my ferry today?”

What we intentionally leave out: Mechanical failures, crew shortages, and operational decisions. SSA officially attributes about 10% of cancellations to mechanical causes and 56% to a broad “other” category (which likely includes weather-adjacent operational decisions). Hy-Line’s non-weather cancellations are ~15%. We don’t model these because they’re effectively random from a passenger’s perspective — there’s no public data that would let us predict them. Including them would add noise without adding predictive value.

Transparency note: When the model says 95%, it means “weather conditions are fine for running.” There’s still a small residual risk from non-weather factors that the model doesn’t capture. We think this is more honest than inflating uncertainty to cover unknowable events.

Continuous improvement

The model retrains itself weekly. Every day at 11 PM ET, a cron job records the day’s weather conditions and whether either operator cancelled. Every Sunday, the model retrains on the accumulated dataset with quality gates: the new model must not drop AUC by more than 0.02 or increase Brier Score by more than 0.01 compared to the current model. If quality gates fail, the existing model is kept.

This means the model gradually incorporates new weather patterns and operator behavior changes without manual intervention.