2012-04-14 21 views
5

Tengo una serie temporal de precios de las acciones y deseo calcular el promedio móvil en una ventana de diez minutos (vea el diagrama a continuación). Como los tics de precios ocurren esporádicamente (es decir, son no periódicos), parece más justo calcular un promedio móvil ponderado en el tiempo.Calculando la media móvil ponderada en el tiempo

Time Series

En el diagrama hay cuatro cambios de precios: A, B, C y D, con los tres últimos se producen dentro de la ventana. Tenga en cuenta que debido a que B solo ocurre un tiempo en la ventana (digamos 3 minutos), el valor de A todavía contribuye al cálculo.

De hecho, por lo que yo puedo decir el cálculo debe basarse únicamente en los valores de A, B y C (no D) y las duraciones entre ellos y el siguiente punto (o en el caso de una : la duración entre el inicio de la ventana de tiempo y B). Inicialmente D no tendrá ningún efecto ya que su ponderación de tiempo será cero. ¿Es esto correcto?

Suponiendo que esto sea correcto, mi preocupación es que la media móvil se "retrasará" más que el cálculo no ponderado (que representaría el valor de D inmediatamente), sin embargo, el cálculo no ponderado tiene su propio desventajas:

  • "A" tendría tanto efecto en el resultado como en los otros precios a pesar de estar fuera de la ventana de tiempo.
  • Una ráfaga repentina de las garrapatas de precios rápidas haría muy sesgar la media móvil (aunque quizás esto es deseable?)

¿Alguien puede ofrecer algún consejo sobre qué enfoque parece mejor, o si hay una alternativa (o híbrido) enfoque que vale la pena considerar?

Respuesta

4

Su razonamiento es correcto. ¿Para qué quieres usar el promedio? Sin saber que es difícil dar algún consejo.

Quizás una alternativa sea considerar su promedio móvil A, y cuando entre un nuevo valor V, calcule el nuevo promedio A 'a ser (1-c) * A + c * V, donde c está entre 0 y 1. De esta forma, las garrapatas más recientes tienen una influencia más fuerte, y el efecto de las garrapatas viejas se disipa con el tiempo. Incluso podría haber dependido del tiempo desde las marcas anteriores (c disminuyendo a medida que se acercan los tics).

En el primer modelo (ponderación), el promedio sería diferente cada segundo (a medida que las lecturas anteriores obtienen un peso menor y las lecturas nuevas son más altas) por lo que siempre cambia lo que puede no ser deseable. Con el segundo enfoque, los precios hacen saltos repentinos a medida que se introducen nuevos precios y los antiguos desaparecen de la ventana.

+0

Gracias; ajustar c en función del tiempo desde que la marca anterior es una gran idea. Significa que puedo factorizar un tiempo de ponderación sin tener que mantener un montón de estado adicional. – Adamski

+1

Esa fórmula se conoce como [Suavizado exponencial simple de Brown] (http://en.wikipedia.org/wiki/Exponential_smoothing#The_simple_moving_average). Estoy leyendo sobre esto en Wikipedia en este momento, así que pensé en llamar. – HappyNomad

3

Sí, la media móvil demorará, por supuesto. Esto se debe a que su valor es información histórica: resume las muestras del precio en los últimos 10 minutos. Este tipo de promedio es intrínsecamente "laggy". Tiene una compensación de cinco minutos incorporada (porque un promedio de caja sin compensación se basaría en +/- 5 minutos, centrado en la muestra). Si el precio ha estado en A por mucho tiempo y luego cambia una vez a B, el promedio tarda 5 minutos (A + B)/2.

Si desea promediar/suavizar una función sin cualquier cambio en el dominio, el peso debe estar distribuido uniformemente alrededor del punto de muestra. Pero esto es imposible de hacer por los precios que ocurren en tiempo real, ya que los datos futuros no están disponibles.

Si desea que un cambio reciente, como D, tenga un mayor impacto, utilice un promedio que otorgue un mayor peso a los datos recientes, a un período de tiempo más corto o a ambos.

Una forma de suavizar los datos es simplemente usar un único acumulador (el "estimador suavizado") E y tomar muestras periódicas de los datos S. E se actualiza de la siguiente manera:

E = E + K(S - E) 

es decir, una fracción K (entre 0 y 1) de la diferencia entre la muestra de precio actual S y el estimador E se agrega a E. Supongamos que el precio ha estado en A durante un tiempo prolongado, de modo que E está en A, y luego cambia repentinamente a B. El estimador comenzará a moverse hacia B de una manera exponencial (como calentamiento/enfriamiento, carga/descarga de un condensador, etc.). Al principio hará un gran salto, y luego incrementos cada vez más pequeños. La velocidad a la que se mueve depende de K. Si K es 0, el estimador no se mueve en absoluto, y si K es 1, se mueve instantáneamente. Con K puede ajustar la cantidad de peso que le da al estimador frente a la nueva muestra. Se da más peso a las muestras más recientes implícitamente, y la ventana de muestra se extiende básicamente al infinito: E se basa en cada muestra de valor que haya ocurrido alguna vez. Aunque, por supuesto, los muy antiguos no tienen influencia sobre el valor actual. Un método muy simple y hermoso.

+2

Esto es lo mismo que la respuesta de Tom. Su fórmula para el nuevo valor del estimador es '(1 - K) E + KS', que es algebraicamente lo mismo que' E + K (S - E) ': es una" función de combinación lineal "entre el estimador actual 'E' y la nueva muestra' S' donde el valor de 'K' [0, 1] controla la mezcla. Escribirlo de esa manera es agradable y útil. Si K es 0.7, tomamos el 70% de S, y el 30% de E, que es lo mismo que sumar el 70% de la diferencia entre E y S a E. – Kaz

8

Las dos sugerencias provienen del mundo discreto, pero puede encontrar una inspiración para su caso particular.

Eche un vistazo a exponential smoothing. En este enfoque introduce el factor de suavizado (α ∈ [0; 1]) que le permite alterar la influencia de los elementos recientes en el valor de "pronóstico" (elementos más antiguos se asignan pesos decrecientes exponencialmente):

s t = αx t-1 + (1 + α) s t-1; s = x

He creado una animación simple de cómo el suavizado exponencial sería realizar un seguimiento de la una serie de tiempo uniforme x=[1 1 1 1 3 3 2 2 2 1] con tres α diferente = {0,3, 0,6, 0,9}:

enter image description here

Eche un vistazo a algunas de las técnicas de aprendizaje de refuerzo (consulte los diferentes métodos de descuento), por ejemplo, TD-learning y Q-Learning.

3

En la ampliación de la respuesta de Tom, la fórmula para tener en cuenta la separación entre las garrapatas se pueden formalizar (cerrar garrapatas tienen ponderación proporcionalmente inferior):

ema n = u * ema n-1 + (v - u) * x n-1 + (1 - v) * x n

donde:

a = (t n- t n-1)/T
que es, a es una proporción de delta de tiempo de llegada más de un promedio de intervalo

y

u = e -a

y

v = 1 (utilizar el punto anterior), o
v = (1 - u)/a (interpolación lineal> o
v = u (punto siguiente)

Más información se encuentra en la página 59 del libro Introducción a las finanzas de alta frecuencia.