1
$\begingroup$

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

acf 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.

$\endgroup$
5
  • $\begingroup$ What are $a_t$, $\mu_x^*$, $\sigma_x^*$? What is the point of maximizing $\frac{\mu_x^*}{\sigma_x^*}$? $\endgroup$ – Richard Hardy Apr 19 '16 at 19:15
  • $\begingroup$ @RichardHardy responded inline $\endgroup$ – mgilbert Apr 19 '16 at 19:54
  • $\begingroup$ @RichardHardy I'm wondering if there is anything still unclear in your mind? This question unfortunately doesn't seem to be getting much traction $\endgroup$ – mgilbert Apr 21 '16 at 12:40
  • $\begingroup$ 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. $\endgroup$ – Richard Hardy Apr 21 '16 at 12:46
  • $\begingroup$ No absolutely, all feedback welcome. Just wanted to check that as it's currently formulated the question is reasonably clear. Thanks. $\endgroup$ – mgilbert Apr 21 '16 at 12:51
0
$\begingroup$

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")

objective

accompanied by decreases in the scaled returns autocorrelation

acf(x*ats[[4]])

acf1

acf(x*ats[[8]])

acf2

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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