sábado, 22 de marzo de 2014

Econometria en Forex I. Modelos autorregresivo y de media móvil

Las armas se deben reservar para el último lugar, donde y cuando los otros medios no basten. Nicolás Maquiavelo

Intermedio

La Econometría es una rama de la economía en el que haciendo uso de modelos matemáticos con el objeto de analizar, interpretar y predecir variables de estudio: precios, costes, demandas, crecimiento, evolución del PIB, venta de coches, etc. y actuar en consecuencia.

El aspecto de la econometría que nos interesa es el análisis y predicción de series temporales, como son los precios de las acciones, pares de divisas, indicadores, etc. Estos valores dependientes del tiempo pueden ser modelados de diferentes maneras para su posterior estudio y aportar valores futuros.

Modelo autorregresivo AR(p)
El modelo autorregresivo es una representación de un proceso aleatorio (estocástico) y el que asume que el valor actual es dependiente de los valores anteriores. Así, de esta forma:


X(t) y X(t-1) son los valores de la serie al momento t y t-1 respectivamente, c es una constante y e(t) es ruido blanco o valor aleatorio que no depende de los valores anteriores, tiene media cero y varianza constante.
Para entender su funcionamiento, veamos una AR(1) y hagamos una predicción partiendo de una serie en Excel. Debemos asumir que los valores e(t) son cero ya que no son previsibles pero su valor esperado sí lo es.
Una AR(1)se representa por X(t)=alfa * X(t-1) + eps. Por lo que debemos encontrar en una serie temporal dada aquellos valores alfa y eps que minimicen la diferencia entre la predicción y la serie.
En una columna A, ponemos los valores conocidos, en B la predicción y en C la diferencia al cuadrado de los dos.
La fórmula en B3 es =E$3*A2+E$4 y se arrastra hacia abajo
Debemos poner dos valores iniciales alfa y eps que son los que debemos optimizar para minimizar los valores de C. Por ejemplo alfa en E3 y eps en E4. La suma de las diferencias al cuadrado en F13.
La hoja queda así:


Para minimizar el valor de la suma de diferencias utilizamos la función Solver (debe estar como complemento activo). Debe quedar así:


Y obtendremos los parámetros que minimizan la diferencia entre el resultado y la predicción. Una vez obtenidos, es fácil realizar futuras predicciones.
Si queremos crear un modelo AR(2), sólo tenemos que cambiar la ecuación en la columna B y añadir una nueva variable en E5. La nueva ecuación en B3 seria =E$5*A1+E$3*A2+E$4. En este caso se utilizan dos valores anteriores anteriores de la columna A. Para el modelo general A(p) se actuaría de la misma forma.

Modelo de media móvil MA(q)
El modelo de medias móviles es otra representación de un proceso aleatorio pero al contrario que el autorregresivo, no depende de los valores anteriores sino de los errores cometidos con anterioridad.

MEDIA MOVIL
Al que en el modelo autorregresivo, en este modelo los valores de e(t) lo asignamos valor cero.
En una columna A, ponemos los valores conocidos, en B la predicción y en C la diferencia al cuadrado de los dos. En B3 ponemos la fórmula =E$3*RAIZ(C2)+E$4 y nuevamente hacemos uso de la herramienta solver. Quedaría así:

Solver MA

Hacer una predicción una vez calculados los dos factores es fácil
Tanto el AR(1) como el MA(1) puede ser descargado aquí.
Los modelos AR y MA combinados dan lugar a los modelos ARMA que veremos en los próximos posts.




sábado, 15 de marzo de 2014

Harmonic trading III. Patrón Gartley y patrón Butterfly

Estamos especializados en una armoniosa repetición del desastre y la estupidez. Terenci Moix

Intermedio

Patrón Gartley o 222
Aunque el patrón AB=CD visto anteriormente es el patrón armónico más simple, el más conocido y empleado por los traders es el patrón Gartley, también descrito en 1935 por H.M. Gartley en su libro Profits in the Stock Market, en su página 222, por lo que a veces se le llama el patrón 222.

Aunque el sr. Gartley no describió las relaciones de Fibonacci, éstas fueron añadidas más tarde por Larry Pasavento, mejorando la fiabilidad del patrón, cuando éste rescató del olvido este patrón 60 años más tarde.
Aunque originalmente fue descrito como un "retest" de un soporte (en un bearish pattern) o de una resistencia (en un bullish pattern), actualmente se le considera más como una corrección B o 2 de una onda impulsiva de Elliott, ya que en este caso la interpretación por ondas o por patrones armónicos coinciden. Según las ondas, una vez completado este patrón seguiría una onda 3 o la continuación correctiva C, por lo que en ambos casos, el movimiento seguiría la tendencia previa al patrón.
Veamos cómo es.
gartley
Patrones Gartley
Éstas relaciones de Fibonacci son las más aceptadas actualmente:
El punto B es un retroceso 0,618 de un movimiento anterior XA.
El punto C continua el movimiento anterior entre el 0,382 y el 0,886 del movimiento AB
El punto D está el PRZ. Si se han cumplido las condiciones anteriores, el punto D es un fuerte soporte/resistencia ya que confluyen dos importantes relaciones:
El punto D es la proyección 1,27 o 1,618 (éste es su valor máximo) semejante a un patrón AB=CD y 
El punto D es el retroceso 0.786 del movimiento XA
Como hemos comentado debe existir el patrón AB=CD para que sea válido el patrón, y en esto se diferencia de otros patrones armónicos.
En el punto D se esperaría una continuación del movimiento XA al rebotar en ese soporte o resistencia. Se deben buscar otras señales de confirmación.

Patrón Butterfly
También se considera que fueron Gerry Glimore y Larry Pasavento los descubridores de este patrón en 1991. En esencia es un patrón AB=CD que logra completar un nuevo máximo y después rebota. Aunque su forma es parecida al Gartley, el punto D está más allá del inicio de en X. 
Veamos cómo es.
butterfly
Patrones Butterfly
El punto B es un retroceso obligatorio de 0,786 para la validez del patrón, y forma un patrón AB=CD en el que el brazo CD es mayor que el AB.
Al igual que el patrón Gartley, en el punto D se produce una coincidencia de relaciones de Fibonacci: una proyección XA de 1,27 o 1,618 y una proyección 1,618 o 2,618 de BC. Esta coincidencia de relaciones crea un soporte o resistencia fuerte en el que el precio puede hacer un fuerte rebote y aquí es donde los trader buscan entrar en el mercado.
Al igual que el patrón Gartley, este patrón es compatible con la teoria de Elliott. En concreto el brazo CD, se puede interpretar como una onda impulsiva 3 o 5 o correctiva compleja W.
Se considera un patrón más fiable cuando en D existen divergencias en el precio y otro indicador y cuando el brazo CD se puede subdividir en 5 subondas.

Patrón Bat
Por último, presentaré el patrón Bat (murciélago), muy parecido al Gartley, pero en el que la posición del punto B y el punto D difieren ligeramente. Fue descrito por primera vez por Scott Carney en 2001
Veamoslo. 
Bat pattern
Patrones Bat
El punto B está o en el punto 0,382 o 0,50 del movimiento XA, se genera un nuevo patrón AB=CD al igual que el patrón Gartley  hasta llegar a la zona potencial de reversión en D, que está a 0,886 del movimiento XA y a proyección 1,618 o 2,618  del movimiento CB.
En D, un trader debería buscar señales adicionales para entrar a comprar en un patrón bullish, o vender en el bearish.


sábado, 8 de marzo de 2014

Harmonic trading II. Desmontando el patrón AB=CD. Uso de Excel para identificar patrones

El mundo recompensa antes las apariencias de mérito que al mérito mismo. François de La Rochefoucauld

Intermedio

Parece sorprendente que exista tan poca literatura científica o al menos cierta investigación basada en la evidencia acerca de determinadas afirmaciones acerca de estrategias de trading.
Existe multitud de programas capaces de buscar patrones que se repiten y encontrar formas de encontrar maneras de batir al mercado: redes neuronales, algoritmos genéticos, etc. Algunos de ellos están disponibles para el pequeño inversor por módicos precios aunque dudo que los que realmente funcionen estén disponibles para el pequeño inversor. Recordemos la base del principio de los mercados eficientes: si una estrategia provechosa, que haya localizado una ineficiencia en el mercado, cuando se hace pública, rápidamente esta ineficiencia desaparece por la cantidad de agentes que quieren aprovecharse de ella.
A veces no es necesario disponer de tan sofisticados programas. Con un sencillo Excel es posible realizar pequeñas investigaciones acerca del mercado que nos den una valiosa información.
Para comenzar he utilizado datos históricos del GBPUSD 15 min de periodo entre 07/08/11 hasta 28/02/14. No hay ninguna razón particular por esta selección. Es descargable aquí. Son obtenidos a partir de los datos históricos de Metaquotes, con la plataforma MT4.
He utilizado este indicador Xlab_ZZ y este otro out_hist, disponibles libremente en la web para obtener los datos históricos de los valores de zigzag.
El indicador zigzag simplemente conecta los máximos y los mínimos más significativos de un conjunto de precios. Es frecuentemente usado para identificar patrones. He aquí un ejemplo.
indicador zigzag
El uso de máximos y mínimos locales sirve a la identificación de patrones
A menudo se utiliza el indicador ZigZag en asesores expertos, aunque se debería tener cuidado con él. Es el clásico indicador que repinta, no sólo el último valor (que es algo lógico) si no valores ya determinados previamente. Es preferible el indicador personalizado Xlab_ZZ, más respetuso con valores anteriores.
Con el indicador out_hist es posible crear un archivo csv con los datos históricos de cualquier indicador. Desde Excel podemos importar esos datos para convertirlos en formato xls más práctico.
Mi intención es encontrar la frecuencia de patrones ABCD y averiguar si por ejemplo los establecidos por Harmonic Trading aparecen más frecuentemente que otros o encontrar patrones nuevos.
Con el archivo de datos, creamos una columna con todos los valores zigzags sin los valores intermedios. Obviaremos para simplificar los cálculos el número de barras entre máximos y mínimos.
Con esos valores, es sencillo calcular los retrocesos y proyecciones de los cuatro últimos zigzags. Si por ejemplo tenemos una columna A1, A2, A3, A4 con los cuatro últimos zigzags, los retrocesos y proyecciones de esos valores los ponemos en B3 y B4. 
B3=ABS((A3-A2)/(A1-A2))  y
B4=ABS((A4-A3)/(A2-A3))
y arrastramos la columna B hacia abajo hasta acabar los valores en A.
Con esto tenemos todos los retrocesos y proyecciones de los últimos 4 zigzags. Se debe destacar dos cosas. Una es que sólo miramos 4 zigzags consecutivos, sin tener en cuenta patrones con zigzag intermedios. No creo que esto influya en la conclusión final. Lo otro a destacar es que la proyección de cuatro zigzags es igual al retroceso de los cuatro zigzgas siguientes. En el ejemplo anterior B4 es la proyección del patrón A1A2A3A4. El siguiente patrón es A2A3A4A5 (a esto se le llama sliding window, muy usado en redes neuronales), su retroceso es otra vez B4 y su proyección es B5, y así sucesivamente.
En la columna C colocamos los mismos valores que B pero sustituyendo los valores DIV/0! por 99999. Esto se produce cuando en el patron ABCD, los valores B y C son iguales, el retroceso es cero y da como proyección infinito.
Ahora queremos conocer la frecuencia de cuáles son los retrocesos/proyecciones más frecuentes. Para ello en la columna D ponemos el rango en el que queremos subdividir los valores. He elegido de 0 a 20 a intervalos de 0,1. En la columna E usamos la fórmula Frecuencia() de Excel. 
Hacemos el gráfico de frecuencias.
frecuencia retrocesos

Éste es el resultado. Por lo visto sorprendentemente no aparece como más frecuente ningún valor relacionado con fibonacci, sino que es más bien una curva de frecuencias con cola hasta el infinito y cuyo máximo es el número 0,8, como retroceso/proyección más frecuente. El cálculo realizado puede descargarse aquí.
Ahora queremos saber la proyección y el retroceso del patrón más frecuente. Obviando el número de barras entre máximos y mínimos, toda la información del patrón está definido por su retroceso en C y su proyección en D. Esto se puede codificar multiplicando por 10 esos valores (para eliminar la coma decimal), uniéndolos con la función Concatenar de Excel y con una separación mediante una letra, por ejemplo la Z.
Según esta codificación, el patrón 6Z16, corresponde al patrón harmónico de retroceso 0,6 y proyección 1,6. Todo esto se hace de una sola vez en Excel con esta función en la columna F.
=CONCATENAR(REDONDEAR(C5*10;0);"Z";REDONDEAR(C6*10;0))
teniendo los retrocesos y proyecciones en la columna C.
Con la función Contar.Si , podemos calcular la frecuencia de los patrones en columna G mejor que con la función Frecuencia ya que los patrones son valores alfanuméricos. Copiamos y pegamos sólo los valores de los patrones en F y frecuencia en G a la Hoja2. Eliminamos los repetidos y pasamos de 14515 patrones a sólo 2170. Ordenamos por frecuencia y vemos el gráfico.

Frecuencia de los patrones

Los primeros puestos están copados por unos cuantos patrones y luego van disminuyendo de forma exponencial. Veamos los primeros puestos.

patrón

frecuencia
absoluta
8Z10
85
9Z9
83
10Z8
82
7Z9
82
8Z9
81
5Z10
80
9Z6
77
6Z10
75
9Z11
75
11Z6
74
10Z9
74
10Z10
73
11Z7
72
7Z11
72
6Z11
71
9Z10
71
6Z9
70
7Z8
70
11Z8
70

 Los datos completos se pueden descargar aquí.
Vemos que los más frecuentes son 8Z10 9Z9 y 10Z8. Todos alrededor de 8 y 9 en el retroceso y proyección. Estos corresponden a patrones 0,8/0,9. El patrón armónico 0,618/1,618 (6Z16) está con sólo una frecuencia de 29, lejos de los primeros puestos.
¿Qué forma tiene nuestro patrón 8Z10 (0,8/1,0) o 9Z9 (0,9/0,9)?
Patrones más frecuentes
8Z10 y 9Z9
Conclusión
Podemos dar varias explicaciones acerca de estos patrones. Una, la más evidente es que son los patrones habituales de un mercado en rango, en el que C y D toman valores parecidos a A y B. Esto significa que el mercado en rango es más predecible que el de tendencia, con mayor número de patrones. La otra explicación menos evidente es que efectivamente A y B forman soportes y resistencias que el precio no suelen sobrepasar. Los patrones con valores 11 (9Z11 por ejemplo con frecuencia 75) son menos probables que los de valores 8 o 9.

Por último anotar que los patrones armónicos no tienen una mayor frecuencia que el correspondiente a sus patrones más semejantes. Esto no quiere decir que sean más o menos provechosos, pero sí igual de frecuentes.
Quiero destacar un patrón anómalo en su frecuencia, el 5Z10 (frecuencia 80), mayor que el 10Z10 (frecuencia 73) del mercado en rango o el de su semejante 10Z5 (frecuencia 43) . No encuentro una explicación satisfactoria. Tal vez sea una ineficiencia a explotar. Lo dejo para futuras investigaciones:
5Z10
¿5Z10, posible ineficiencia del mercado?