I want to simulate $y_t$ given a set of parameters $\theta = (\mu, \phi)$, where $y_t$ is given by

$y_t = \epsilon_texp(h_t/2)$,

$h_{t+1} = \mu + \phi(h_t - \mu) + \eta_t,\,\, t = 0,1,...,n.$


$ \begin{pmatrix} \epsilon_t\\ \eta_t \end{pmatrix}\Bigg|(\rho, \sigma) \sim\,\,i.i.d.\,\,\mathcal{N}_2(0,\Sigma), \,\,\, \Sigma = \begin{pmatrix} 1 & \rho\sigma\\ \rho\sigma & \sigma^2 \end{pmatrix}$.

Before I had to simulate $y_t$ with $\rho = 0$ (meaning that there was no correlation between $\epsilon_t$ and $\eta_t$) which was pretty straightforward. I just simulated the vector h with the given parameters $\theta$ and then calculated the $y_t$ given the $h_{t+1}$. With $\rho\neq0$ however, I'm not so sure how to handle this problem.

Q: How do I simulate the $y_t$, taking the correlation between $\epsilon_t$ and $\eta_t$ into account?

  • $\begingroup$ Does this require the self-study tag? Is it intentional that $\eta_t$ drives $h_{t+1}$ (i.e., with a lag)? $\endgroup$ Jun 27, 2017 at 11:10
  • $\begingroup$ Yes that's intentional! $\endgroup$
    – titusAdam
    Jun 27, 2017 at 12:05

1 Answer 1


You could first generate the errors from a bivariate normal distribution, as in

rho <- 0.5
sigma <- 1
Sigma <- matrix(c(1,rho*sigma,rho*sigma,sigma^2), nrow=2)
n <- 101
u <- mvrnorm(n,c(0,0),Sigma)
eps <- u[2:n,1]
eta <- u[1:(n-1),2]
mu <- 1
phi <- 0.5
h <- mu + arima.sim(n=n-1, list(ar=phi), innov = eps)
y <- eps*exp(h/2)

I haven't fully checked if that solution corresponds with how you aim to specify the lag structure.


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.