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 intervals
- outputs/fig_history_forecast.png
- outputs/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) |