Machine learning & data science

Forecast time series

Seasonality, ARIMA/Prophet/gradient boosting, backtesting for demand/finance use cases.

~12 focused hours·intermediate

Tools: Prophet, statsmodels (ARIMA/ETS), scikit-learn/XGBoost, pandas

Market relevance — share of job ads asking for this
Prerequisite capability — not asked for directly, but needed for others.
What employers mean

You should be able to…

  1. Decompose a time series into trend, seasonality and residual components
  2. Build a classical statistical forecast (ARIMA/ETS/Prophet) with confidence intervals
  3. Build a machine-learning forecast (feature-engineered gradient boosting) and compare it to the classical baseline
  4. Backtest a forecasting model correctly with a rolling/expanding time-based split, never a random split
  5. Handle holidays, promotions and other known events that shift demand
  6. Choose the right evaluation metric (MAPE, RMSE, WAPE) for a business forecasting problem
  7. Communicate forecast uncertainty (intervals, not just a point estimate) to a business stakeholder

Needs first: Train and evaluate classical ML models

Learn — free, link-checked

The few resources that matter

Read · beginner · 30 min · facebook.github.io

Quick Start

Official Prophet quickstart -- fit a seasonal forecast with holidays and uncertainty intervals in under an hour, a common demand-forecasting baseline. — Meta (Facebook)
Read · intermediate · 60 min · tensorflow.org

Time series forecasting

Shows windowing, feature engineering and comparing a naive baseline against RNN/CNN forecasters -- the backtesting mindset interviewers want. — TensorFlow
Course · intermediate · 180 min · kaggle.com

Time Series

Hands-on trend/seasonality/cycle decomposition and hybrid model notebooks with an immediate competition-style evaluation. — Kaggle Learn
Read · intermediate · 300 min · otexts.com

Forecasting: Principles and Practice (3rd ed)

The standard free forecasting textbook -- seasonality decomposition, ARIMA, ETS and backtesting explained by the authors of the R forecast/fable packages. — Rob J Hyndman & George Athanasopoulos
Practice

Festival-season demand forecast for an Indian retail/NBFC dataset

Using a public retail sales dataset (or an NBFC loan-disbursal proxy series) with visible seasonality around festivals like Diwali, build a Prophet baseline with Indian holiday effects included, then a feature-engineered XGBoost forecaster, and backtest both with a rolling time-based split. Report WAPE/MAPE and visualize forecast vs actuals with confidence intervals.

Done when
  • Prophet model includes an Indian holiday/festival calendar as regressors, not just default seasonality
  • XGBoost (or similar) forecaster built with lag/rolling features and compared against the Prophet baseline
  • Backtesting uses a rolling or expanding time-based split across multiple folds, with per-fold WAPE/MAPE reported
  • README includes a plot of forecast vs actuals with confidence intervals and states which model won and why
Prove it

Evidence a recruiter can check

  • Public GitHub repo with backtesting code showing the time-based split logic explicitly
  • A results table comparing WAPE/MAPE across models and backtest folds
  • Forecast-vs-actual plots with confidence intervals checked into the README
  • Can explain live why a random train/test split would have been invalid here
Interview

Questions you'll get asked

  1. Walk me through how you'd forecast next month's demand for a product with strong seasonality
  2. Why must you backtest a forecasting model with a time-based split instead of random cross-validation?
  3. ARIMA vs Prophet vs a gradient-boosted regressor for forecasting -- when would you pick each?
  4. How do you incorporate known future events (festivals, promotions) into a forecast?
  5. What's the difference between MAPE and WAPE, and when does MAPE break down?
  6. How would you communicate forecast uncertainty to a non-technical stakeholder?
  7. How do you detect and handle a structural break (e.g. COVID-like shock) in historical demand data?