i'm trying to forecast inflation using the macroeconomic variables i understand to be determinants of inflation (e.g. inflation expectations, exchange rates e.t.c) however, what ive noticed is that in each case, the statsmodels varmax model using the exogenous variables does not improve the baseline arima forecast (using auto.arima). RMSEs are compared using walk-forward validation for a 12 month test set. it also does not show the variables as statistically significant.

The challenge here is that i would like to establish the connection between these variables and inflation (which exist according to the Central bank), but the forecasts simply are not demonstrating that. Is my best bet to give up and go with the arima model? i would like to be able to perform forecast with releveant exogenous variables. thanks.


1 Answer 1


Challenges of using time series forecasting to predict inflation

The main issue with using exogenous variables to forecast inflation is that inflation is impacted by a myriad of different factors - and no one model could possibly account for all of them.

In addition, the issue with attempting to predict inflation using time series forecasting methods is that inflation (or any macroeconomic variable) tends to be more of a stochastic time series with inherent randomness as opposed to deterministic - where there is a clearly defined pattern over time.

As a contrasting example, let us take an example of forecasting weather data vs. inflation.

Here is an autocorrelation function generated using statsmodels in Python for monthly weather data.

autocorrelation function weather

We can see that there is a clear seasonal trend in correlation every 12 months - as we would expect since cold temperatures in January are likely to be similar to that of the previous January, July temperatures will be similar to that of last July, etc.

However, let us now look at an autocorrelation function generated using yearly U.S. inflation data from 1960-2019 as sourced from fred.stlouisfed.org:


We can see that there is no particular seasonal pattern to inflation, as evidenced by the drop-off in autocorrelations as the time lags increase.

In this regard, when predicting using auto_arima for the first 40 years of data and then predicting on the last 20 - ARIMA(0,1,3)(0,0,0)[0] was selected as the best fit. This essentially means that the model is forecasting a random walk as below:


Alternative solution: Detecting causal inference between macroeconomic variables

The challenge here is that i would like to establish the connection between these variables and inflation (which exist according to the Central bank)

If this is the case, then the recommended path is not necessarily using forecasting methods to predict the time series, but in implementing causal inference to establish the degree to which a relationship exists between two variables.

Let's consider an example. Suppose that one wishes to investigate the relationship between fluctuations in exchange rates and inflation. This could be accomplished using CausalImpact, which uses Bayesian structural time-series models to detect casual inference. This package can be implemented in either Python or R.

Here is an example of how one might apply the model. Let us suppose that one wishes to investigate whether there is a relationship between European inflation and an intervention, e.g. a change in ECB interest rates. To do this, one would need to select a control time series that would not be affected by the intervention. For instance, one would hypothesise that Japanese inflation rates would not be impacted by changes in ECB interest rates. Therefore, Japanese inflation rates could be used as a control variable - and using causal inference would seek to answer the question - what would happen to inflation if the interest rate change had not taken place?

By establishing this, one could then seek to establish causal inference and attempt to quantify the degree to which a change in one variable impacts another.

Disclaimer: The examples in the above answer are given merely to facilitate the explanation of time series principles - none of the above is intended as any sort of financial or investment advice.

  • $\begingroup$ thank you for this detailed answer Michael. to clarify, would you recommend that i use ARIMA for a forecast and then use something like CausalImpact to establish correlation between different variables? i would like to have both a forecast as well as an explanation of that forecast. e.g Inflation is expected to go down to 3% because of exchange rate appreciation. $\endgroup$ Feb 22 at 2:30
  • $\begingroup$ Inflation is difficult to forecast outright for the reasons that I have mentioned. You could potentially take a probability-based approach, e.g. a Monte Carlo simulation to investigate the potential range in inflation over a given period. If you wanted to make a forecast, then I would recommend using a probability-based time series model, e.g. a Bayesian structural time series model that can account for uncertainty in the forecasts. You could investigate PyMC3 and TensorFlow Probability in Python, or bsts in R to build such a model. $\endgroup$ Feb 22 at 14:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.