lenatriestounderstand

Chapter 41 of 57

Exogenous Variables in Time Series: The Future You Already Know

Created Jul 5, 2026 Updated Oct 25, 2026

A past-only forecaster learns from one thing: the series' own history. It extrapolates the trend and repeats last-year-like seasonality — and it misses anything planned to differ from history. A bigger promotion than last year, a holiday that lands on a different week, a price change you've already scheduled: the series' past says nothing about it, so a past-only model can't see it coming.

But you often do know part of the future. Exogenous variables (external regressors, covariates) are how you hand that knowledge to the model — driver columns supplied alongside the target:

forecast_t = pattern learned from y's own past  +  effect of external drivers x₁,t … x_k,t

The model learns how each driver has been associated with movements in the target, then applies that relationship to the driver's future values. Typical drivers: holidays, planned promotions, scheduled prices, weather forecasts, macro scenarios.

The distinction that actually matters: past-only vs known-future. Not every covariate is usable the same way.

  • Known-future covariates you know ahead of the forecast — holidays, planned promos, your own price schedule. These are the gold: you can plug their real future values straight in.
  • Past-only covariates you only know up to now — actual weather, realised demand of a related product. To use their future you'd first have to forecast them, and your target then inherits their forecast errors on top of its own.

Good forecasting frameworks make you declare which is which, because feeding a model a "future" value you don't actually know is a classic way to leak information and get an over-optimistic backtest.

The idea is universal; only the plumbing changes. Gradient-boosted trees take drivers as extra columns beside the lags, with no special API. Deep forecasters (TFT, DeepAR, TiDE) keep them in a separate future_covariates channel. Prophet has add_regressor, and classical SARIMAX takes exog= at fit time and the known future rows at forecast time — one coefficient per driver, which makes it the easiest place to watch the mechanism work:

Six years of monthly sales with three exogenous drivers — holidays, promotions, weather — and a hold-out year planned to differ from the last one: a holiday season twice the size of last year's, and two promo months at calendar months that had none a year earlier. Monthly data makes the seasonal trap visible: last December is a strong clue, but not enough when this December is planned to be different. Toggle each driver and watch the known future events enter the forecast.

Two conditions decide whether a driver earns its place, whichever model you use:

  • You must know it over the forecast horizon. Holidays and planned promos are ideal. Weather and macro indicators are usually forecasts or scenarios themselves, so your target inherits their errors on top of its own.
  • It has to add information the series doesn't already carry. In the demo above, weather is a smooth annual cycle — identical to its own value a year earlier — so once the model has seasonality there is nothing left to explain: its fitted coefficient is zero and the forecast does not move at all. The drivers that pay are the irregular ones — a one-off promo, a calendar shift, a step change in price — and weather qualifies exactly when it is irregular: a heat wave, not July.

One caveat travels with all of it: these models learn associations, not causal effects. If promotions were historically run in unusually weak or strong months, the promo coefficient absorbs that too, and reading it as "the lift from running a promo" is a claim the model didn't earn (endogeneity, in econometrics terms).

So: a forecaster learns the rhythm the series can repeat, and exogenous variables inject the parts of the future that are already known but invisible in the target's own past. The question is never "can I add this column?" but "will I know this value at prediction time, and does it say anything the series hasn't already said?"

For a classical worked example end to end, see the Classical Statistical Forecasting note.