2 votos

¿Por qué mi vida media de reversión es completamente errónea?

Estoy utilizando un par de recursos ( ici y ici ) para calcular la vida media de reversión de una serie temporal. Este método de cálculo también se presenta en la obra de Ernest Chan Comercio algorítmico en la página 47.

El método, según tengo entendido, consiste en utilizar la fórmula: vida media = -log(2)/G

Donde G es el coeficiente de una regresión lineal donde la variable dependiente es la serie diferenciada (Yt - Y(t-1)) y la variable dependiente es la serie retardada (Y(t-1)).

Aquí está mi código:

a <- sin(0.2*seq(1, 100, 0.25))
y <- diff(a)
x <- a[1:(length(a)-1)]
lm <- lm(y~x)
halflife <- -log(2)/lm$coefficients[2]

Quería probarlo con una serie claramente cíclica, así que utilicé una función sinusoidal. Aquí está el gráfico de la función: enter image description here

El resultado que obtengo, sin embargo, es: -1064 .

¿Cómo es posible? En primer lugar, el valor debería ser positivo. Esto significa que mi coeficiente no es negativo, lo que sugiere que la serie no es de reversión media. Pero está claro que lo es, ¿no?

Agradecería mucho cualquier ayuda para entender lo que está pasando aquí.

2 votos

Una función de pecado no es una reversión de la media. La SDE de un proceso estocástico de reversión de la media (a cero) es como $dX_t=-\beta X_t\,dt+\sigma dW_t$ . Si se ignoran las fluctuaciones brownianas la solución es $X_t=X_0e^{-\beta t}$ .

0 votos

@KurtG. Entonces, ¿estás diciendo que debo generar una función utilizando esa última fórmula que diste, y tratar de aplicar el método que he probado para probar / asegurar que da un tiempo razonable de "reversión media"?

0 votos

Lo único que digo es que la reversión de la media a cero es un decaimiento exponencial (o aumento si $X_0<0$ ). No es algo que "parezca" una reversión de la media porque oscila alrededor de la media a largo plazo. Si quiere probar cómo un determinado método estadístico detecta la reversión a la media correcta en una serie temporal, podría simular correctamente una serie temporal con reversión a la media y luego soltar su método en ella.

3voto

duxk.gh Puntos 123

Creo que el principal problema es que, como dice @KurtG, la función senoidal de tu ejemplo muestra un fuerte impulso (aunque con inversiones) y el ajuste de un proceso de Ornstein-Uhlenbeck a la misma da lugar a parámetros extraños.

Sin embargo, sería bueno comprobar que su código es correcto. Para ello, vamos a simular un proceso que sabemos que es OU con una vida media evidente:

e <- rnorm(n, 0, 1)
a <- array(data = NA, dim = n)
a[1] = 0
for (i in 2:n) { a[i] <- 0.5 * a[i - 1] + 0.1 * e[i] }

Ahora a contiene una gran muestra de un proceso OU con media 0 y vida media de 1.

Comprobamos su código de adaptación:

y <- diff(a)
x <- a[1:(length(a)-1)]
lm <- lm(y~x)
halflife <- -log(2)/lm$coefficients[2]

y obtengo una vida media de (con mis números aleatorios) alrededor de 1,38. Lo cual está cerca, pero es erróneo y demasiado alejado del valor real para ser explicado sólo por el azar debido al gran tamaño de la muestra.

Revisemos las fórmulas de la vida media. En primer lugar, y más fácil de derivar, si tenemos el proceso OU (con media cero) $$ dX_t = -\theta X_t dt + \sigma dW_t $$ con $\theta > 0$ y $\sigma > 0$ entonces la vida media es $$ h = \frac{\log \left( 2 \right)}{\theta} $$ Si escribimos esto en tiempo discreto tenemos: $$ X_t = \phi X_{t-1} + \epsilon $$ con $0 < \phi < 1$ . Entonces la vida media es $$ h = -\frac{\log \left( 2 \right)}{\log \left( \phi \right)} $$ Pero su regresión utiliza la forma diferenciada de: $$ X_t - X_{t-1} = \left(\phi - 1 \right) X_{t-1} + \epsilon $$ Podemos definir $\beta = \phi - 1$ (y por lo tanto $\phi = 1 + \beta$ ) para conseguirlo: $$ X_t - X_{t-1} = \beta X_{t-1} + \epsilon $$ que es la regresión que está ejecutando. Específicamente, lm$coefficients[2] te está dando $\beta$ . Reescribiendo una fórmula anterior obtenemos: $$ h = -\frac{\log \left( 2 \right)}{\log \left( 1 + \beta \right)} $$ Si lo intentamos:

halflife <- -log(2)/log(1 + lm$coefficients[2])

obtenemos un número que es casi exactamente 1, como se esperaba. Así que esa fórmula es probablemente la mejor para usar.

¿De dónde viene su fórmula original? Bueno, la función $\beta \mapsto \log \left( 1 + \beta \right)$ es aproximadamente lineal cerca de cero, por lo que sustituir $\log \left( 1 + \beta \right)$ con $\beta$ es una aproximación razonable. No obstante, probablemente merezca la pena utilizar la fórmula más exacta la mayor parte de las veces, ya que no es cara de evaluar.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X