---
title: "Add Exogenous Variables to Forecasts"
description: "Learn how to incorporate external factors to improve forecast accuracy."
icon: "table-list"
---
# Adding Exogenous Variables to Your Forecasts
Exogenous variables are additional features external to your target time series. They can significantly improve forecasting accuracy when historical and/or future values are available.
Install and import the required libraries:
```python Setup Environment
import pandas as pd
from nixtla import NixtlaClient
nixtla_client = NixtlaClient(
api_key='my_api_key_provided_by_nixtla'
)
```
Use an Azure AI endpoint by setting the **base_url** argument:
```python Azure AI Endpoint Configuration
nixtla_client = NixtlaClient(
base_url="your azure ai endpoint",
api_key="your api_key"
)
```
Depending on your use case, you can include only historical variables, only future variables, or both.
Use past exogenous data for your forecast by including it in `df`.
Supply future values of exogenous variables to the `X_df` parameter to forecast beyond the historical period.
Combine both historical and future exogenous data for maximum flexibility and accuracy.
Include historical exogenous variables in the same DataFrame you pass to `forecast`:
```python Historical Exogenous Variables Example
# Read data
df = pd.read_csv(
'https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short-with-ex-vars.csv'
)
# Forecast using historical exogenous variables
forecast_df = nixtla_client.forecast(
df=df,
h=24,
id_col='unique_id',
target_col='y',
time_col='ds',
hist_exog_list=[
'Exogenous1',
'Exogenous2',
'day_0',
'day_1',
'day_2',
'day_3',
'day_4',
'day_5',
'day_6'
]
)
```
Provide future exogenous values via the `X_df` parameter:
```python Future Exogenous Variables Example
import numpy as np
# Read historical data
df = pd.read_csv(
'https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short-with-ex-vars.csv'
)
# Load future exogenous variable data
future_ex_vars_df = pd.read_csv(
'https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short-future-ex-vars.csv'
)
# Forecast using future exogenous variables
forecast_df = nixtla_client.forecast(
df=df,
X_df=future_ex_vars_df,
h=24,
id_col='unique_id',
target_col='y',
time_col='ds'
)
```
Combine both historical and future exogenous variables for a more comprehensive model:
```python Historical and Future Exogenous Variables Example
# Read historical data
df = pd.read_csv(
'https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short-with-ex-vars.csv'
)
# Load future exogenous variable data
future_ex_vars_df = pd.read_csv(
'https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short-future-ex-vars.csv'
)
# Select specific exogenous variable columns from future data
future_ex_vars_df = future_ex_vars_df[[
"unique_id",
"ds",
"Exogenous1",
"Exogenous2"
]]
# Forecast using both historical and future exogenous variables
forecast_df = nixtla_client.forecast(
df=df,
X_df=future_ex_vars_df,
h=24,
id_col='unique_id',
target_col='y',
time_col='ds',
hist_exog_list=[
'day_0',
'day_1',
'day_2',
'day_3',
'day_4',
'day_5',
'day_6'
]
)
```
**Run on Azure AI Models**
When using an Azure AI endpoint, set `model="azureai"`:
```python Azure AI Model Example
nixtla_client.detect_anomalies(
...,
model="azureai"
)
```
The public API supports two models: `timegpt-1` and `timegpt-1-long-horizon`.
By default, `timegpt-1` is used.
For more details on exogenous features and long-horizon forecasting, see:
- [Exogenous variables tutorial](https://docs.nixtla.io/docs/tutorials-exogenous_variables)
- [Categorical variables tutorial](https://docs.nixtla.io/docs/tutorials-categorical_variables)
- [Long-horizon forecasting tutorial](https://docs.nixtla.io/docs/tutorials-long_horizon_forecasting)