How do I find an $h$-step prediction interval (forecast interval) for a zero-mean ARMA(p,q) process $$ x_t = \varphi_1 x_{t-1} + \dots + \varphi_p x_{t-p} + \varepsilon_t + \theta_1\varepsilon_{t-1} + \dots + \theta_q\varepsilon_{t-q} \ ? $$

  • $\begingroup$ For the case of multistep ARMA-GARCH forecasting (point and interval), see this thread. $\endgroup$ Commented Oct 11, 2018 at 19:46
  • $\begingroup$ Please, see this link in which there is a similar question stats.stackexchange.com/questions/419313/… $\endgroup$
    – Bert
    Commented Jul 26, 2019 at 15:25
  • $\begingroup$ @Bert, thanks, I like the question. +1 $\endgroup$ Commented Jul 30, 2019 at 13:37

2 Answers 2


The $h$-step-ahead point forecast, or the predicted conditional mean, is obtained by predicting one step ahead, $$ \hat x_{t+1} = \varphi_1 x_{t} + \dots + \varphi_p x_{t-p+1} + 0 + \theta_1 e_{t} + \theta_2 e_{t-1} + \dots + \theta_q e_{t-q+1}, $$ taking that forecast and plugging it in place of the true value $x_{t+1}$ and iterating such as $$ \hat x_{t+2} = \varphi_1 \hat x_{t+1} + \dots + \varphi_p x_{t-p+2} + 0 + \theta_1\times 0 + \theta_2 e_{t} + \theta_3 e_{t-1} + \dots + \theta_q e_{t-q+2}, $$ until $\hat x_{t+h}$ is reached. Here $e_t$ stands for the estimate of $\varepsilon_t$.

The $h$-step-ahead $(1-\alpha)$-level prediction interval (large sample approximation) is constructed as $$ [ \ \hat x_{t+h} - q_{\alpha/2}(\hat\sigma^2(h)); \ \hat x_{t+h} + q_{1-\alpha/2}(\hat\sigma^2(h)) \ ] $$ where $q_\alpha$ is the $\alpha$-level quantile of the error distribution with variance $\hat\sigma^2(h)$, $$ \hat\sigma^2(h) = \hat\sigma^2\sum_{j=0}^{h-1} \hat\psi_j^2 $$ where $\hat\sigma^2$ is the estimated error variance and $\hat\psi_j$ are the estimated coefficients of a moving-average representation of the ARMA(p,q) process.

Under normally distributed errors, the interval is $$ \hat x_{t+h} \pm z_{\alpha/2}\hat\sigma(h) $$ where $z_\alpha$ is the $\alpha$-level quantile of the N(0,1) distribution.

This derivation ignores parameter estimation uncertainty, so the actual intervals should be wider (recall the qualifier large sample approximation above). The problem diminishes with the sample size, though, and vanishes asymptotically.

(Based on Brockwell and Davis "Introduction to time series and forecasting" (3rd ed., 2016), p. 93-94.)

Keywords: multi-step, multi-period, multistep, multiperiod, multiple step, multiple period, steps ahead, periods ahead, forecast, predict, forecasting, prediction, point, interval, ARMA, ARIMA.


Practically it's the easiest to do it with Monte Carlo. I think that's what most people do anyways. You simulate the error term with and collect quantiles of the forecast. In R this can be done with arima.sim.

The quantiles are not so easy to estimate theoretically especially if the series are further combined with other predictions to obtain a composite forecast or when you model a transformed series, but are no brainer in simulation. The quantiles are popularized by BoE in fan charts in inflation report as shown below

enter image description here

Another application of Monte Carlo is for the case when you model correlated time series separately. Suppose, that for some reason you don't want to do a vector model, e.g. for complexity or lack of data. In this case you could still - similar to seemingly unrelated regression (SUR) - get the correlation of residuals of models, then generate correlated innovations and supply them into a command such as arima.sim to obtain correlated predictions

  • $\begingroup$ To the contrary, I think that most people use built-in fuctions such as predict.Arima in the case of R. Since predict.Arima does not do Monte Carlo, my conjecture is that most people do not use Monte Carlo. (R is just an example, of course, and there may be other software that has built-in Monte Carlo functionality for ARMA forecasting. Depending on how widespread it is, this could change my opinion.) $\endgroup$ Commented Oct 12, 2018 at 6:09
  • $\begingroup$ @RichardHardy, predict is used often, but in my experience arima.sim is more useful, because you can easily obtain quantiles for fan charts or supply it with your own innovations, which is important when your errors are correlated with other series $\endgroup$
    – Aksakal
    Commented Oct 12, 2018 at 11:00

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.