NixtlaClient.explain() when someone asks:
Which signals in my historical data deserve attention?The result ranks your features using their past relationship with the target. You do not need to make a forecast or provide future feature values.
The analysis runs as an asynchronous job on the server.
NixtlaClient.explain()
submits the job and polls its status until the weights are ready, so the call
blocks like any other client method. By default the client waits up to 10
minutes; adjust async_job_wait_timeout and async_job_poll_interval when
creating the NixtlaClient if you need a different behavior. A job that fails
on the server raises nixtla.AsyncJobError with the server’s message.Retail-demand example
The store in our example has one year of daily demand, price, promotion, and temperature data.Create the example data
Create the example data
Rank the historical signals
Callexplain() with the features you want to review:
The weights add up to one. In this historical window, promotion has the
strongest measured signal, followed by temperature. Price does not add a
measurable linear lagged signal in this particular run.

Promotion is the strongest historical signal in the default analysis. Results were generated with TimeGPT 2.1.
Use the ranking
This result can help you:- Decide which data sources deserve closer monitoring.
- Prioritize features for a forecasting experiment.
- Check whether important business signals are present in the data.
- Compare feature rankings across stores, products, or time periods.
0.863 means promotion is the
strongest signal among these three features; it is not a percentage of the
forecast.
Use your own data
By default,explain() analyzes every column except the series ID, timestamp,
and target. Passing features makes the scope explicit:
unique_id. TimeGPT respects the boundary between each series and
returns one combined ranking.
Non-numeric features must be declared as categorical. Any feature that is not
numeric and not listed in categorical_exog_list is rejected, naming the
column:
explain() infers the frequency from df; pass freq explicitly for
polars input, or to be strict about which spacing you expect:
Historical signals are especially useful for exploration and feature
prioritization. Re-run an important analysis on another time period to see
whether the same signals remain useful.