Redes Neuronales en Metatrader

Índice del artículo

En los últimos meses parece que estamos asistiendo a un "revival" de las redes neuronales aplicadas al trading, sobre con la aparición del paquete gratuito Fann2MQL para Metatrader que permite utilizar redes neuronales dentro de los Expert Advisors. Para remate, el interés se ha avivado al conocerse que los sistemas utilizados por el ganador de la edición 2007 del Automated Trading Championship se basaban en redes neuronales. Personalmente debo reconocer que soy bastante escéptico (aunque también algo profano ;)) sobre estos temas, si bien estuve experimentando con Neuroshell allá por el año 2001 y los resultados no fueron demasiado interesantes: en el mejor de los casos, la capacidad predictiva de las redes neuronales entrenadas no superaba el 40%. No obstante, posiblemente este tipo de algoritmos haya evolucionado y mejorado en los últimos años por lo que quizás sea un buen momento para retomar la investigación.


¿Qué es una Red Neuronal?
Según la Wikipedia, las redes neuronales consisten en una simulación de las propiedades observadas en los sistemas neuronales biológicos a través de modelos matemáticos recreados mediante mecanismos artificiales. El objetivo es conseguir que una máquinas produzca respuestas similares a las que es capaz de dar el cerebro, las cuales se caracterizan por su generalización y su robustez.

Una red neuronal se compone de unidades llamadas neuronas. Cada neurona recibe una serie de entradas a través de interconexiones y emite una salida. Esta salida viene dada por tres funciones:

  • Una función de propagación (también conocida como función de excitación), que por lo general consiste en el sumatorio de cada entrada multiplicada por el peso de su interconexión (valor neto). Si el peso es positivo, la conexión se denomina excitatoria; si es negativo, se denomina inhibitoria.

  • Una función de activación, que modifica a la anterior. Puede no existir, siendo en este caso la salida la misma función de propagación.

  • Una función de transferencia, que se aplica al valor devuelto por la función de activación. Se utiliza para acotar la salida de la neurona y generalmente viene dada por la interpretación que queramos darle a dichas salidas. Algunas de las más utilizadas son la función sigmoidea (para obtener valores en el intervalo [0,1]) y la tangente hiperbólica (para obtener valores en el intervalo [-1,1]).


A la hora de implementar una red neuronal como parte de un programa o sistema informático, se pueden distinguir 3 fases básicas:

  • Diseño: en esta fase se elige el tipo de red neuronal a usar (la arquitectura o topología), el número de neuronas que la compondrán, etc.

  • Entrenamiento: en esta fase se le presentan a la red neuronal una serie de datos de entrada y datos de salida (resultados), para que a partir de ellos pueda aprender.

  • Uso: se le suministran las entradas pertinentes a la red, y esta genera las salidas en función de lo que ha aprendido en la fase de entrenamiento.

Posiblemente un ejemplo de su utilización permita comprender mejor su funcionamiento: supongamos que vamos a aplicar una red neuronal al diagnóstico de cáncer a través de imágenes. En primer lugar deberemos entrenar el sistema mostrándole imágenes de tejidos cancerígenos y sanos, clasificados correctamente, así como otras variables (edad del paciente, procedencia anatómica del tejido, etc.). Si el entrenamiento se realiza correctamente, al término del mismo el sistema deberá ser capaz de analizar imágenes de tejidos no clasificados y determinar de qué tipo son (sano/cancerígeno) con cierto grado fiabilidad. Lo que hacemos en definitiva mediante el proceso de entrenamiento es enseñar a la red neuronal qué salidas deseamos que nos dé en función de los datos que hemos introducido previamente; en este proceso la red neuronal “aprende” a detectar patrones, pautas, o modelos ocultos en los datos de entrada.

Las características de las redes neuronales las hacen bastante apropiadas para utilizarlas en aplicaciones en las que no se dispone a priori de un modelo identificable que pueda ser programado, pero se dispone de un conjunto básico de ejemplos de entrada (previamente clasificados o no). Por ello son habitualmente utilizadas en problemas de clasificación y reconocimiento de patrones tales como reconocimiento de textos, reconocimiento del habla, simulación de centrales de producción de energía, detección de explosivos o identificación de blancos de radares; y por supuesto también en el campo que nos ocupa, el trading en los mercados financieros.


Y llegó FANN
No hace mucho nos llegó la noticia a través del Foro (gracias YsEkU ;)) de la aparición de una librería de redes neuronales para Metatrader denominada Fann2MQL. Y lo mejor de todo es que es gratuita! El uso típico de esta librería es el de crear redes neuronales no muy complejas, entrenarlas y ejecutarlas, teniendo la posibilidad de almacenar los resultados obtenidos. También podemos incorporarlas dentro de nuestros propios Expert Advisors (EA) e indicadores o incluso para tratar de predecir el comportamiento del precio, si bien el autor de FANN ya advierte de que los resultados y calidad de las predicciones obtenidas, así como las posibilidades de lograr beneficios con ellas, son realmente dudosos.

Pero para poder comprender la utilidad y las posibilidades de esta librería, lo mejor es que veamos algunos ejemplos prácticos. Para poder seguirlos se recomienda instalar previamente dicha librería.



Si te ha gustado este articulo, ¡compártelo en redes!