MetaTrader4
Cómo utilizar el Filtro Hodrick-Prescott para Predecir Precios en Trading
Autor: gpwr
Una de las características más distintivas del filtro Hodrick-Prescott es que no introduce retrasos en las señales. Este filtro se calcula minimizando una función objetivo que se puede expresar de la siguiente manera:
F = Suma((y[i] - x[i])^2,i=0..n-1) + lambda*Suma((y[i+1]+y[i-1]-2*y[i])^2,i=1..n-2)
donde x[] son los precios y y[] son los valores del filtro. A continuación, puedes ver un ejemplo del comportamiento del filtro (consulta el archivo HP.mq4 que se incluye más abajo).
Si el filtro Hodrick-Prescott pudiera ver el futuro, ¿qué valores futuros sugeriría? Para responder a esta pregunta, debemos encontrar un filtro digital de baja frecuencia cuyo parámetro de frecuencia sea similar al del filtro Hodrick-Prescott, pero que calcule los valores usando directamente los valores pasados del "filtro gemelo". Esto se expresa así:
y[i] = Suma(a[k]*x[i-k],k=0..nx-1) - filtro FIR
o
y[i] = Suma(a[k]*x[i-k],k=0..nx-1) + Suma(b[k]*y[i-k],k=1..ny) - filtro IIR
Es mejor seleccionar el "filtro gemelo" teniendo un retraso constante Tdel (retraso grupal constante). Los filtros IIR no son adecuados para esto. En el caso de los filtros FIR, la condición para un retraso independiente de la frecuencia es:
a[i] = +/-a[nx-1-i], i = 0..nx-1
El filtro FIR más simple con retraso constante es el Promedio Móvil Simple (SMA):
y[i] = Suma(x[i-k],k=0..nx-1)/nx
Si nx es un número impar, Tdel = (nx-1)/2. Si desplazamos los valores del filtro SMA hacia el pasado por la cantidad de barras igual a Tdel, los valores del SMA coinciden con los del filtro Hodrick-Prescott. La matemática exacta no se puede lograr debido a las diferencias significativas en los parámetros de frecuencia de los dos filtros (consulta el gráfico más abajo):
Para lograr la coincidencia más cercana entre los valores de los filtros, recomiendo que sus anchos de canal sean similares (por ejemplo, -6dB). El ancho de canal de -6dB para el filtro Hodrick-Prescott se calcula de la siguiente manera:
wc = 2*arcsin(0.5/lambda^0.25).
El ancho de canal de -6dB para el filtro SMA se calcula mediante computación numérica a través de la siguiente ecuación:
|H(w)| = sin(nx*wc/2)/sin(wc/2)/nx = 0.5
El gráfico a continuación compara los valores de los dos filtros que tienen un ancho de canal similar: rojo - filtro Hodrick-Prescott (FiltPer = 25), azul - SMA (Period = 15, Shift = -7). Ten en cuenta que no hay datos de SMA para las últimas 7 barras ya que necesita conocer los precios futuros. Por otro lado, el filtro Hodrick-Prescott (rojo) muestra algunos valores. Si el SMA desplazado repite los valores del filtro Hodrick-Prescott en las últimas 7 barras una vez que los precios futuros aparecen, ¿cuáles podrían ser esos valores?
Algoritmos de Predicción:
El indicador cuenta con dos métodos de predicción:
Método 1:
1. Establecer la longitud del SMA en 3 y desplazarlo hacia el pasado por 1 barra. Con esta longitud, el SMA desplazado no existe solo para la última barra (Bar = 0), ya que necesita el valor del próximo precio futuro Close[-1].
2. Calcular el ancho de canal del filtro SMA. Igualarlo al del filtro Hodrick-Prescott y encontrar lambda.
3. Calcular el valor del filtro Hodrick-Prescott en la última barra HP[0] y asumir que SMA[0] con Close[-1] desconocido proporciona el mismo valor.
4. Encontrar Close[-1] = 3*HP[0] - Close[0] - Close[1]
5. Aumentar la longitud del SMA a 5. Repetir todos los cálculos y encontrar Close[-2] = 5*HP[0] - Close[-1] - Close[0] - Close[1] - Close[2]. Continuar hasta que se calculen la cantidad especificada de precios futuros FutBars.
Método 2:
1. Establecer la longitud del SMA igual a 2*FutBars+1 y desplazar el SMA hacia el pasado por FutBars.
2. Calcular el ancho de canal del filtro SMA. Igualarlo al del filtro Hodrick-Prescott y encontrar lambda.
3. Calcular los valores del filtro Hodrick-Prescott en las últimas FutBars y asumir que el SMA se comporta de manera similar cuando aparecen nuevos precios.
4. Encontrar Close[-1] = (2*FutBars+1)*HP[FutBars-1] - Suma(Close[i],i=0..2*FutBars-1), Close[-2] = (2*FutBars+1)*HP[FutBars-2] - Suma(Close[i],i=-1..2*FutBars-2), etc.
El indicador cuenta con los siguientes inputs:
Método - método de predicción
LastBar - número de la última barra para verificar las predicciones en los precios existentes (LastBar >= 0)
PastBars - cantidad de barras anteriores para las que se calcula el filtro Hodrick-Prescott (cuanto más, mejor, o al menos PastBars>2*FutBars)
FutBars - cantidad de valores futuros predichos
El indicador destaca los valores predichos en rojo. El método 1 se utiliza en el ejemplo a continuación:
Método 2:
El segundo método es más preciso, pero a menudo presenta picos grandes en el primer precio predicho. Se puede mejorar el método de predicción buscando un filtro FIR con un parámetro de frecuencia más cercano al del filtro Hodrick-Prescott. Por ejemplo, puedes probar con filtros Hanning, Blackman, Kaiser, y otros filtros con retraso constante en lugar de SMA.
El autor agradece al usuario Korey por el indicador original del filtro Hodrick-Prescott publicado en la siguiente sección del Foro (en ruso):
https://www.mql5.com/ru/forum/113677/page2
2009.01.15