data { int n; real ret[n]; real rvol[n]; real sigma1; } parameters { real gamma0; real gamma1; real mu; real alpha0; real alpha1; real beta1; real tau; } transformed parameters { real sigma[n]; real mean1[n]; sigma[1] = sigma1; for (t in 2:n) sigma[t] = sqrt(alpha0 + alpha1 * pow(ret[t-1] - mu, 2) + beta1 * pow(sigma[t-1], 2)); for (t in 1:n) mean1[t] = gamma0 + gamma1 * pow(sigma[t],2); } model { ret ~ normal(mu, sigma); rvol ~ normal(mean1,tau); }