End-to-end demand forecasting with Python using synthetic time-series sales data. Includes data generation, cleaning, ARIMA/SARIMA model selection by AIC, evaluation with RMSE and MAPE, and 90-day forecasts with confidence intervals. Reproducible scripts and visualizations for portfolio showcase.
Forecast daily sales with ARIMA/SARIMA on synthetic data. Includes generation, cleaning, train/validation split, AIC-based model search, evaluation (RMSE/MAPE), and 90-day forecast with confidence intervals. Production-ready scripts and charts for portfolio showcase.
- Synthetic daily sales generator (trend + weekly + annual seasonality + noise)
- Train/validation split
- ARIMA/SARIMA model search by AIC (weekly seasonality)
- Metrics: RMSE, MAPE
- 90-day forecast with confidence intervals
- Plots: history vs. forecast, residual diagnostics
- Deterministic seeding for reproducibility
demand-forecasting/
├─ README.md
├─ LICENSE
├─ requirements.txt
├─ data/
│ └─ generate_timeseries.py
├─ src/
│ ├─ forecast_arima.py
│ └─ metrics.py
└─ outputs/
└─ figures & reports
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate
pip install -r requirements.txtpython data/generate_timeseries.py --start 2023-01-01 --end 2024-12-31 --seed 42 --out data/daily_sales.csvpython src/forecast_arima.py --input data/daily_sales.csv --horizon 90 --val_days 60 --outdir outputsOutputs
outputs/metrics.json– RMSE & MAPE (validation)outputs/forecast.csv– point forecast + confidence intervalsoutputs/fig_history_forecast.pngoutputs/fig_residuals.png
| Metric | Value |
|---|---|
| RMSE | 2.11 |
| MAPE | 2.77% |
| ARIMA Order | (2,1,2) |
| Seasonal Order | (0,1,1,7) |
| AIC | 2836.7 |
| column | description |
|---|---|
| date | daily timestamp |
| sales | units sold (int) |