covariatesforecastingtirexchronospractical-guide

Covariates in Time Series Forecasting: A Practical Guide to Exogenous Regressors

Covariates like holidays, promotions, and weather can dramatically improve forecast accuracy. Here's how modern TSFMs handle them and when they actually help.

T
TSFM.ai Team
April 15, 20255 min read

Most real-world forecasting problems are not univariate. When you forecast retail demand, the number that matters is unit sales, but that number is shaped by forces outside the series itself: upcoming holidays, active promotions, weather conditions, competitor pricing, and macroeconomic indicators. These external signals are called covariates (also known as exogenous regressors or external features), and incorporating them has long been one of the biggest gaps between time series foundation models and traditional statistical methods like ARIMAX or Prophet. That gap has been closing rapidly. As of early 2025, several leading TSFMs now support covariates natively, and the results are substantial.

What Are Covariates?

A covariate is any time-aligned variable that provides information about the target series but is not the target itself. Covariates fall into two categories:

Known future covariates are values you know ahead of time for the entire forecast horizon. Holidays, day-of-week indicators, planned promotions, scheduled events, and calendar features are classic examples. You know that December 25th is Christmas regardless of your forecast horizon.

Observed (historical) covariates are values you only have for the past, not the future. Weather observations, concurrent sales of related products, website traffic, and economic indicators often fall here. You can use their historical relationship with the target to improve forecasts, but you cannot assume their future values are known (unless you forecast them separately or use lagged versions).

The distinction matters because models handle these two types differently at inference time. Known future covariates can condition the forecast directly at every horizon step. Historical covariates can only condition the model through their past relationship with the target.

Why Covariates Matter for Accuracy

The case for covariates is straightforward: they explain variance that the target series alone cannot. A grocery store's ice cream sales exhibit seasonality, but a heat wave in April creates a demand spike that no amount of historical pattern matching will predict from sales data alone. Temperature as a covariate bridges that gap.

Quantitative evidence from the Monash Forecasting Archive and M-competition datasets shows that covariates provide the largest accuracy gains in three scenarios: series with strong external drivers (energy demand driven by temperature), series with irregular events (retail demand during promotions), and short-history series where the model has limited historical context to learn from.

Conversely, covariates can hurt when they are noisy, loosely correlated, or available only with a lag that makes them stale at inference time. Adding dozens of weakly relevant covariates is a common mistake that increases model complexity without proportional accuracy gains.

Which Foundation Models Support Covariates?

The first generation of TSFMs (original Chronos, early TimesFM) focused on univariate forecasting and did not accept covariates. The landscape has shifted considerably.

Nixtla TiRex. TiRex is built with a dedicated covariate encoder that processes exogenous variables alongside the target series. Known future covariates are projected into the same latent space as the target through a parallel encoder branch, allowing the model to learn cross-attention patterns between the target and covariates during pretraining. TiRex was pretrained on TimeGEN's large-scale corpus with covariates included, so the model has seen the statistical relationships between targets and external drivers across millions of series. In benchmarks, TiRex with covariates outperforms its own covariate-free baseline by 8-15% on datasets with strong exogenous drivers.

Chronos v2 (Chronos-Bolt). Chronos-Bolt extended the original Chronos architecture with support for exogenous inputs. Covariates are concatenated with the target series in the input embedding layer, and the encoder's self-attention operates over the combined representation. This is a simpler integration than TiRex's dedicated encoder, but it is effective and adds minimal inference overhead. Amazon's benchmarks show consistent improvements on the Electricity and Traffic datasets when temperature and calendar covariates are provided.

Moirai (Any-Variate Attention). Moirai handles covariates through its Any-Variate Attention mechanism. Rather than a separate covariate encoder, Moirai treats covariates as additional variate channels in its multivariate framework. The target series and each covariate are patched and embedded independently, then attention is applied across all variate-time tokens. This means Moirai does not distinguish between "target" and "covariate" at the attention level; instead, the model learns which channels are predictive of which. The approach scales naturally to many covariates but requires specifying which channel is the forecast target at inference time.

Passing Covariates in API Requests

If you are using the TSFM.ai forecast API, covariates are passed as additional columns in your request payload alongside the target series. The API expects a covariates field containing a dictionary of named covariate arrays, each aligned to the same timestamps as the target. For known future covariates, you provide values spanning both the historical window and the forecast horizon. For historical-only covariates, you provide values for the historical window only.

{
  "target": [120, 135, 128, 142, ...],
  "timestamps": ["2025-04-01", "2025-04-02", ...],
  "horizon": 14,
  "covariates": {
    "is_holiday":    [0, 0, 0, 1, ..., 0, 0, 1, 0, ...],
    "temperature":   [18.2, 19.1, 17.8, 22.0, ...],
    "promo_active":  [0, 0, 1, 1, ..., 0, 1, 1, 0, ...]
  }
}

The platform handles normalization, alignment, and routing to a covariate-capable model automatically. See the API reference for the full schema and supported options.

Practical Guidance: When Covariates Help vs. Hurt

Not every forecasting problem benefits from covariates. Here is a decision framework based on what we see across production deployments.

Add covariates when: the external driver has a clear, well-understood causal relationship with the target (temperature and energy demand, promotions and retail sales); the covariate is available reliably and on time for your forecast cadence; and you have enough historical data (200+ timestamps) for the model to learn the covariate-target relationship.

Skip covariates when: the relationship is speculative or weak (social media sentiment and B2B SaaS revenue); the covariate is noisy or frequently missing; you are running zero-shot inference on a new series with no covariate history; or your model already captures the effect implicitly through seasonality (day-of-week effects are often learned from the target alone).

Start simple. Begin with one or two high-signal covariates rather than dumping every available feature into the request. Measure the accuracy delta on a held-out test set. Add more covariates incrementally, validating each one's marginal contribution. This pipeline-oriented approach prevents covariate bloat and keeps inference costs manageable.

Looking Ahead

Covariate support in TSFMs is maturing quickly. We expect the next wave of models to handle covariates with missing values, learn covariate relevance automatically (attention-based feature selection), and support categorical covariates natively without manual encoding. The gap between what traditional models like ARIMAX offer and what foundation models can do with external signals is narrowing with each release. You can experiment with covariates today in the Playground or browse covariate-capable models in the model catalog.

Related articles