Recent demand
Lagged hourly pickup counts capture short-term momentum and weekly seasonality.
Public model card
Flowcast predicts hourly pickup demand at the NYC taxi-zone level using recent demand history, rolling behavior, calendar signals, weather, and zone context. Evaluation is time-based so the model is tested on periods that occur after the training data.
Run: Full-scale SageMaker Pipeline run.
Evaluation metrics
| Horizon | Flowcast WAPE | Baseline WAPE | Improvement | MAE | Zone-hours scored |
|---|---|---|---|---|---|
| 1h | 17.9% | 24.7% | +27.7% | 3.57 | 961,540 |
| 6h | 19.1% | 24.7% | +22.8% | 3.81 | 961,540 |
| 24h | 18.9% | 24.7% | +23.8% | 3.77 | 961,540 |
Validation
Historical period used to learn model parameters.
Jan 1, 2024 – Dec 31, 2025
13,779,890 zone-hour-horizon examples
Used for tuning, feature decisions, and uncertainty calibration.
Jan 1, 2026 – Feb 28, 2026
1,112,976 zone-hour-horizon examples
Held out until the final evaluation.
Mar 1, 2026 – Jul 31, 2026
2,885,406 zone-hour-horizon examples
The test period is scored once, after training and calibration are finished. The quality gate and the published metrics both come from that single evaluation.
What the model sees
Lagged hourly pickup counts capture short-term momentum and weekly seasonality.
Shifted rolling averages and volatility summarize demand patterns without leaking the target hour.
Hour, weekday, weekend/holiday, month, and cyclical time encodings describe recurring patterns.
Temperature, precipitation, wind, visibility, and pressure provide environmental context.
Taxi-zone and borough context allow the model to learn persistent geographic differences.
Lags and rolling windows are computed per zone on the series shifted one hour, so no window includes the origin hour or anything after it. The origin hour’s own in-progress count is never an input. Target-hour weather in backtests is the observed value (see limitations).
Mean absolute SHAP contribution by input group on 2,000 held-out test rows (TreeExplainer, log scale). Longer bars move forecasts more.
Baseline & quality gate
The seasonal-naive baseline predicts that a zone will behave like the same hour one week earlier. Flowcast compares against that baseline on the same held-out data before a model version is accepted.
In the SageMaker Pipeline, a condition step registers the model in the SageMaker Model Registry only when every check below passes.
Passed: WAPE 18.6% vs. baseline 24.7% (24.8% better; required ≥ 5% and WAPE ≤ 35%).
Uncertainty
Intervals are calibrated on the validation period only, from how far real demand landed from the forecast, separately for each horizon and for low- and high-volume zones. They are multiplicative, so a quiet zone gets a narrow range and a busy one a wider range.
Share of held-out zone-hours whose actual value fell inside the band. Nominal targets: 80% and 95%.
| Horizon | 80% band | 95% band |
|---|---|---|
| 1h | 82.5% | 95.9% |
| 6h | 82.8% | 96.1% |
| 24h | 83.0% | 96.1% |
The Forecast page shows the 80% band.
Limitations
TLC trip records identify taxi zones, not exact pickup GPS coordinates. Every map color is a zone total.
Public TLC trip data is not a real-time feed; it is published with a delay of about two months. The current data runs through Jul 31, 2026.
Historical evaluation uses the observed weather at the target hour. Operational forecasting should use weather forecasts available at the origin time; the “forecast from latest data” mode carries the origin-hour observation forward instead.
Events are not modeled. Concerts, parades, disruptions and sudden regime shifts can be hard to predict from recent history alone.
Yellow-taxi pickups concentrate in Manhattan and at the airports. Many outer-borough zones see only a few pickups per hour, where percentage errors swing widely. 2 zones had no pickups at all in training.
Flowcast models yellow-taxi pickups. Green taxis and app-based for-hire vehicles are not included, so it is not total ride demand.
Coverage: 262 of 262 five-borough TLC zones. Not NYC zones, so not modeled: Newark Airport (EWR, ID 1); N/A (Unknown, ID 264); Outside of NYC (N/A, ID 265).