Time Series Forecasting Implementation
Time series forecasting with Prophet, N-BEATS, and LightGBM requires careful walk-forward validation to avoid data leakage. We regularly encounter projects where data—sales, IoT sensors, or stock quotes—contains temporal dependencies easily broken by improper handling. An incorrect split or ignoring seasonality leads to data leakage and falsely optimistic backtest results. For instance, in one spare parts demand forecasting project, seasonal naive gave MAPE of 40%, Prophet 28%, but after walk-forward validation Prophet was 10% worse on last three months. Over years of real-world projects, we have built over 20 forecasting systems and developed a robust methodology. For each task, we select appropriate stack—from classic SARIMA to modern Transformers—considering budget and interpretability. We analyze your data and propose a roadmap in 2–3 days.
In one retail project with 5000 SKUs, we implemented LightGBM with walk-forward validation and quantile forecasts, reducing MAPE from 35% to 18% and saving the client €1M annually in inventory costs. Our pricing starts at €5k for baseline models and goes up to €30k for full MLOps pipeline.
Time Series Forecasting with Prophet, N-BEATS, and Walk-Forward Validation
Before choosing a method, we analyze series properties:
- Stationarity: ADF test. Non-stationary series require differencing or specialized methods.
- Seasonality: ACF/PACF analysis. Single (weekly) or multiple (weekly + yearly) influences model selection.
- Intermittency: ADI > 1.32 calls for special methods (Croston, IMAPA).
- Nonlinearity: Teräsvirta test or BDS test. Linear models (ARIMA) inadequate under strong nonlinearity.
There is no universal answer—we compare candidates on historical data. Typical options with trade-offs:
- Naive / Seasonal Naive — simplest baseline to verify complex methods outperform.
- ETS (Exponential Smoothing) — works well on series with single seasonality.
- SARIMA — classic with confidence intervals, but slow for large observations.
- Prophet — convenient for business data with holidays, interpretable, but loses to neural networks on complex patterns.
- LightGBM with lags — high accuracy with many external factors, but requires engineering work on features.
- N-BEATS / N-HiTS — SOTA on M4/M5 competitions, works without external features.
- Temporal Fusion Transformer — leader for ensembles of multiple series, but demands GPU.
- TimesGPT / TimesFM — foundation models for zero-shot forecasting, accelerate start.
For example, LightGBM trains 5x faster than N-BEATS on medium datasets (10k rows), yet N-BEATS achieves 1.5x lower MAPE on complex seasonal patterns. We choose based on your data.
How to Avoid Data Leakage in Time Series Forecasting?
Standard train/test split violates temporal ordering.
Walk-Forward Validation:
|---Train---| Test |
|----Train----| Test |
|-----Train-----| Test |
Average metrics across all windows
Test window size = forecast horizon. Shift step = horizon / 2 or horizon (no overlap).
Data leakage sources:
- Using future data in scaling (fit scaler on entire dataset)
- Target encoding with future values
- External features with future information (known future covariates vs. past covariates)
Without it, any test metric is optimistic. We guarantee all models undergo temporal split without overlap. Using statsforecast library with automatic window selection, we obtain realistic quality estimates and avoid overpaying for false expectations.
| Validation Method | Application | Features |
|---|---|---|
| Hold-out (train/test) | Quick baseline | Breaks temporal structure, data leakage |
| Walk-forward with overlap | Recommended | Honest evaluation, iterative training |
| Rolling window (no overlap) | Alternative | Fewer test windows, faster |
| Timeseries CV (Blocked CV) | scikit-learn | Convenient but often ignores seasonality |
Walk-forward with overlap gives most stable metrics and matches production load.
Feature Engineering and Probabilistic Forecasting
Temporal features:
df['hour'] = df.index.hour
df['day_of_week'] = df.index.dayofweek
df['week_of_year'] = df.index.isocalendar().week
df['month'] = df.index.month
df['is_weekend'] = df['day_of_week'].isin([5, 6]).astype(int)
df['sin_hour'] = np.sin(2 * np.pi * df['hour'] / 24)
df['cos_hour'] = np.cos(2 * np.pi * df['hour'] / 24)
Lag features: t-1, t-7, t-14, t-28 for daily data; t-1, t-24, t-168 for hourly.
Rolling statistics: mean, std, min, max over 7/28/90 days. Differences: (t-1) - (t-7) to capture trend.
A point forecast without uncertainty is insufficient. Quantile forecasts give intervals. Example: LightGBM with objective='quantile', alpha=0.1/0.5/0.9. Conformal prediction provides theoretically grounded intervals. N-HiTS in neuralforecast library supports quantiles natively.
Using quantile forecasts, a retail client reduced inventory costs by 20% compared to point forecasts—saving €200k annually.
What Is a Quantile Forecast?
A quantile forecast provides an uncertainty interval instead of a point value. For example, forecast of 100 units with percentiles [70, 130] allows risk-aware decisions. Implemented via quantile regression (LightGBM), conformal prediction, or Monte Carlo Dropout.
Production Pipeline
from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA, AutoETS, AutoTheta
models = [AutoARIMA(season_length=7), AutoETS(season_length=7), AutoTheta()]
sf = StatsForecast(models=models, freq='D', n_jobs=-1)
sf.fit(train_df)
forecasts = sf.predict(h=28, level=[80, 95])
MLflow tracks each experiment: data version, hyperparameters, metrics, model artifact. Airflow DAG schedules daily retraining and publishes forecasts to Data Warehouse. Evidently monitors data drift and prediction drift.
Implementation Plan and Deliverables
- Analyze raw data, identify patterns (stationarity, seasonality, intermittency).
- Select baseline and 3–5 candidates (from simple to complex).
- Walk-forward validation of each model, compare by MAPE, RMSE, MASE.
- Develop production pipeline: MLflow, Airflow, Evidently.
- Integrate forecasts into Data Warehouse, set up alerts.
Timeline: 2–3 weeks for baseline (€5k–€10k), 8–12 weeks for full system (€15k–€30k). Contact us for a project assessment—we will evaluate your time series and prepare a roadmap in 2–3 days.
Our team's experience includes over 20 completed projects, average MAPE reduction of 15–30% after tuning. Reach out to get a detailed commercial proposal.
Model Comparison Details
| Model | Accuracy (MAPE) | Interpretability | Multiple Seasonality | Training Time | Cost | |-------|----------------|------------------|----------------------|---------------|------| | Prophet | Medium (28% typical) | High | Partial | Fast (<10 min) | €5k–€10k | | N-BEATS | High (15% MAPE on complex) | Low | Yes | Medium (30 min) | €10k–€15k | | LightGBM | High (18% MAPE) | Medium | No (requires lags) | Fast (5 min) | €10k–€15k | | TFT | Very High (12% MAPE) | Low | Yes | Long (2h GPU) | €20k–€30k |Deliverables
- Data analysis report with stationarity, seasonality, and nonlinearity tests.
- Selection and tuning of 3–5 candidate models, compared via walk-forward validation.
- Production-ready pipeline: MLflow tracking, Airflow orchestration, Evidently monitoring.
- Documentation: model cards, data schemas, deployment guide.
- API or database integration for forecasts.
- Training session for your team (2 hours).
- 3 months of support and model retuning.
In time series forecasting, walk-forward validation is essential for honest evaluation. For time series forecasting projects, we recommend starting with a baseline like Prophet and scaling up to LightGBM or N-BEATS for better accuracy. Our clients typically see ROI within 6 months, with savings ranging from €100k to €1M.







