# Incorporating autocorrelation into forecasts

I have a time series $x_{t}$ which is an AR(1) process with a constant term, e.g.

$x_{t} = c + \phi x_{t-1} + \epsilon_{t}$

How can I incorporate information about the autocorrelation of $x_{t}$ in order to maximize $\frac{\mu_x^*}{\sigma_x^*}$ where $x_{t}^* = a_{t}x_{t}$?

where $\mu_x^*$ and $\sigma_x^*$ are the sample mean and standard deviation of $x_{t}^*$ respectively and $a_t$ is some function of the past history of $x_{t}$, e.g. $a_t = f(x_{t-1}, x_{t-2},...)$

As a concrete example, here is some R code to generate an AR(1) process

> phi <- 0.3
> var_x <- 0.001^2
> mean_x <- 0.0015 / sqrt(252)
> var_eps <- var_x * (1 - phi^2)
>
> set.seed(1)
> eps <- rnorm(252*15, sd = sqrt(var_eps))
> c <- mean_x * (1 - phi)
> x <- filter(c + eps, 0.3, method = "recursive")
>
> mean(x) / sd(x)
[1] 0.09388863


If I were just to observe $x_t$ generated above, I could diagnose that this is in fact an AR(1) process using acf and pacf

and then fit an AR(1) model to estimate $\mu$ and $\phi$

> ar1 <- arima(x, order = c(1, 0, 0))

Call:
arima(x = x, order = c(1, 0, 0))

Coefficients:
ar1  intercept
0.3047      1e-04
s.e.  0.0155      0e+00

sigma^2 estimated as 9.847e-07:  log likelihood = 20776.83,  aic = -41547.65


Using this estimate I can forecast $x_t$

c_est <- ar1$coef[2] * (1 - ar1$coef[1])
x_fcst <- ar1$coef[1] * x[-c(1)] + c_est  But here I am at a bit lost regarding how to incorporate this forecast in an optimal way into$a_t$, where as above optimal is defined as maximizing$\frac{\mu_x^*}{\sigma_x^*}$. Note In the above$\frac{\mu_x^*}{\sigma_x^*}$represents the Information Ratio with a benchmark of 0, and$x_t$can be thought of as a time series of returns. • What are$a_t$,$\mu_x^*$,$\sigma_x^*$? What is the point of maximizing$\frac{\mu_x^*}{\sigma_x^*}$? – Richard Hardy Apr 19 '16 at 19:15 • @RichardHardy responded inline – mgilbert Apr 19 '16 at 19:54 • @RichardHardy I'm wondering if there is anything still unclear in your mind? This question unfortunately doesn't seem to be getting much traction – mgilbert Apr 21 '16 at 12:40 • Sorry. The activity at Cross Validated has been relatively high the last few days, so there is a lot to do :) Unfortunately, I do not think I will be able to help you in the nearest future. Still, I hope you don't mind my earlier comment asking for clarification; it should have helped any other users seeing the question and could potentially have attracted an answer. – Richard Hardy Apr 21 '16 at 12:46 • No absolutely, all feedback welcome. Just wanted to check that as it's currently formulated the question is reasonably clear. Thanks. – mgilbert Apr 21 '16 at 12:51 ## 1 Answer I've added my own attempt at an empirical solution/observation, partly because I believe it helps clarify my question. This does not really address the core issue of the question which is related to the theoretical underpinnings of determining$a_{t}$. Define$a_t$as follows$a_t = 1 + \frac{x_{t|t-1} - \mu_{x}}{\sqrt{Var(x_{t|t-1})}}n$where$n$is some scalar,$\mu_{x}$is estimated using the full sample mean of$x_t$and similarly$Var(x_{t|t-1})$uses the full sample variance of$x_{t|t-1}$. Admittedly this is not a function of the form$a_t=f(x_{t-1},x_{t-2},...)$since it uses full sample estimates but ignoring this for the time being, we can implement the above as follows level <- x_fcst - ar1$coef[2]
calc_at <- function(level, n) {
conv <- 1 + (level / sd(level))*n
conv <- c(1, conv)
conv
}

ats <- list()
scale <- c(0, 0.2, 0.4, 0.6, 0.8, 1:5)
for (i in 1:length(scale)){
ats[[i]] <- calc_at(level, scale[i])
}

calc_ir <- function(at, x) {mean(x*at) / sd(x*at) * sqrt(252)}
irs <- lapply(ats, calc_ir, x=x)


which shows an asymptotic increase in $\frac{\mu_{x^*}}{\sigma_{x^*}}$

plot(scale, unlist(irs), ylab = "mu / sigma")


accompanied by decreases in the scaled returns autocorrelation

acf(x*ats[[4]])


acf(x*ats[[8]])