lunes, 27 de junio de 2016

Caso detallado: Predicción de índices bursátiles con redes neuronales

 Desde hace tiempo la predicción de series temporales en el ámbito financiero ha sido extensamente estudiado debido a la dificultad del problema. Generalmente los datos no son lineales, por lo que hay que usar metodos complejos para realizar los estudios, así como que la distribuciones de ruidos son no gausianas, los datos suelen ser no estacionarios y existe el fenomeno de la relacion señal/ruido, donde en comparación con el ruido el ratio de señal es muy bajo (existe mucho ruido). El concepto de distribucion de ruido no gausiano quiere decir que el ruido no evoluciona de la misma manera en el tiempo por lo que no se puede eliminar facilmente. Por esta tarea predecir el valor exacto de un índice bursátil es practicamente imposible, se considera un reto y es motivo de competición. Éste es el motivo por el cual nadie se hace rico usando estas técnicas e invirtiendo en bolsa. Los sistemas que existen para realizar este tipo de predicción no son fiables y la gente no se atreve a invertir dinero. En este caso práctico vamos a considerar realizar la predicción de si el índice en cuestion va a subir o bajar al cierre de la sesión. Es decir, se va a intentar predecir tendencias de la bolsa.

        Para predecir algo que consideramos mas o menos relevante en este ámbito debemos acotar más el problema, y extraer datos importantes de sistemas dinámicos, es decir modelar una relación que existe entre los valores de un intervalo de tiempo pasado y los valores de un intervalo futuro, bien sea t+1, t+2, …, t+n. Aun así al tratarse de ámbitos no estacionarios no se puede asegurar que el modelo de predicción obtenido funcione en un futuro ya que los datos se encuentran en constante cambio.


Modelo de predicción económico.

        Antes de explicar el funcionamiento del experimento con redes de neuronas vamos a comentar una de las técnicas que se han usado hasta el momento para realizar predicciones y estimaciones de estos índices y que no pertenece al ambito de la inteligencia artificial. El modelo más importante que se ha usado para predecir series temporales es un modelo econométrico llamado ARIMA. Está basado en el uso de regresiones lineales de prediccion de series temporales. Aunque más que para predecir series se usa para obtener cómo se comporta un conjunto de datos en el tiempo pudiendo obtener patrones que sirvan para generar modelos de predicción. Estos modelos tienen estrecha relación con la estacionariedad y el ruido mencionados anteriormente. 

        Para poder conseguir una buena predicción es necesario encontrar un modelo ARIMA perfecto que cumpla los requisitos de estacionariedad y ruido blanco en la autovarianza y autocovarianza. A continuación se muestran varios experimentos con modelos ARIMA para la predicción de bolsa con datos de 1995-1996:

# Modelo                     Interpretación de la Predicción

1 T(t+1) = T(t) + E                     N/A

2 T(t+1) = aT(t) + b                     62.58%

3 T(t+4) = (lq)T(t+3) + qT(t+2) + q^2 T(t) + c     58.84%

4 T(t+s) = aT(t) + b                     79.6%

5 T(t+2s) = aT(t+s) + bT(t) + c             75.92%

Modelo de predicción con redes de neuronas


        Entre las tecnicas más usadas en el ambito de la IA para realizar predicciones están la mineria de datos junto a arquitectura hibridas de redes de neuronas y algoritmos geneticos, teoria del caos y lógica difusa. En este caso el sistema inteligente que se va a estudiar consiste en un sistema híbrido donde la base de la predicción se realiza con redes de neuronas y se va a aplicar algoritmos genéticos para ver cuales son los atributos de entrada mas relevantes para la red de neuronas. La justificación de este sistema radica en la gran importancia de elegir unos datos significativos de entrada al problema, ya que depende el resultado en gran medida del valor anterior del índice, su relación con otros índices bursátiles y otros atributos del ámbito.

        Por tanto el caso tiene como objetivo predecir el valor que va a tomar el índice bursátil SP500 al cierre de una jornada. Este índice junto con el NYSE y el NASDAQ se considera unos de los mas importantes de estados unidos, por ello se sigue muy fielmente para conocer cual es el estado actual de los mercados. Los tres índices están muy relacionados entre sí y dependen unos de otros por lo que consideramos que el genético va a funcionar bien si encuentra información de estos índices como parte de la solución.

Selección de variables con AG


La predicción que se va a realizar de este índice tan solo va a decir si al final de una jornada el valor del SP500 está por encima o por debajo del valor que tenia al abrir la jornada. Para ello se realiza un estudio basado en Algoritmos Genéticos que estima cuales son los atributos más relevantes que existen para predecir este indice. Los resultados obtenidos han sido:
  •     SP500 High, Low
  •     NYSE Advancing/Declining issues
  •     NASDAQ Advancing/Declining issues
  •     NYSE New Highs/New Lows
  •     NASDAQ New Highs/New Lows
  •     NYSE Total Volume
  •     NYSE Advancing/Declining issues volume
  •     NASDAQ Total Volume
  •     NASDAQ Advancing/Declining issues volume
  •     Three-Month Treasure Bill Yield
  •     30-Year Treasure Bond Yield
  •     Gold
  •     SP500 Closing Price
Forman un total de 14 atributos que van a utilizarse como entrada a la red de neuronas. Los datos recopilados de estos atributos abarcan un periodo de 20 semanas por lo que son datos fiables y en buena cantidad lo que nos va a indicar que muy probablemente los resultados obtenidos sean bastante buenos.

Resultados de predicción con redes de neuronas


        Una vez que tenemos los datos de entrada elegimos el algoritmo de aprendizaje que va a usar la red de neuronas. Como el problema consiste en la predicción de series temporales es idóneo utilizar el algoritmo backpropagation, ya que es el más utilizado en estos casos.

        El modelo realizado consiste en una simulación en un entorno ideal con los datos monitorizados. Esto quiere decir que se han estudiado intervalos donde existe cierta estacionalidad de los datos y sobre ellos se ha realizado el modelo. Para ello se divide el conjunto total en porcentajes de entrenamiento y validación. En los resultados la tasa de acierto asciende a un 95% mas o menos, lo que es un resultado inicial bastante prometedor.

        ¿Pero qué ocurriría si con esta simulación se hiciese con datos reales? Es decir, si este modelo de predicción lo testeasemos con datos nuevos que no han sido utilizados para entrenar.

        Los resultados obtenidos son logicamente peores que en el modelo anterior ya que la tasa de aciertos baja a un 80%.

        Sobre este modelo podemos concluir que es relativamente aceptable ya que se obtienen buenos resultados, pero que no son significativos para elaborar un modelo que sirva para la realidad, ya que se han realizado en ámbitos controlados y con valores de datos obtenidos de periodos estacionarios.

Interpretación de la salida

        Como sabemos las redes de neuronas no son muy hábiles en otorgar una explicación clara a los resultados obtenidos, ya que se consideran una caja negra, pero existen técnicas en este ámbito que pueden elaborar reglas básicas y muy genéricas para extraer información de las redes de neuronas.

        Podemos resumir esta técnica en esta serie de pasos:
1. Clusterizar la activación de las neuronas.
2. Asignar estados a los clusters.
3. Insertar transiciones entre los clusters y los atributos de entrada relevantes.

        Podemos entender estos pasos, como una clusterización de las entradas en base a la salida que genera la red de neuronas. Para cada cluster se estudian los atributos más relevantes que influyen en la salida generada y finalmente se crean reglas que relacionan los atributos más relevante con los cluster creados. Básicamente lo que se realiza es mineria de datos para determinar si existe relacion entre los atributos más relevantes y la salida generada.

        Se pueden obtener reglas del tipo:
  • “IF el precio de A es mayor al precio de B AND el numero de instancias de A es mayor que el numero de instancias de B THEN el volumen de stock de A es mayor que el volumen de sctock de B”.
  • “IF el último cambio en las series fue negativo THEN el siguiente cambio será positivo”.
  • “IF el último cambio en las series fue positivo THEN el siguiente cambio será negativo”.

Conclusiones

        Como conclusiones de este caso práctico podemos destacar que se pueden realizar modelos que realmente funcionan en entornos controlados y pueden servir como base para estimar predicciones reales de índices bursátiles. Aun así y como se ha comentado anteriormente este ámbito es muy complejo y no es viable implementar un sistema que se pueda comercializar debido a la naturaleza del problema.

        En cambio sería interesante realizar estudios sobre temas que pueden ser más viables como la predicción de si una inversión puede ser beneficiosa o no, predicción de bienes de mercado o cualquier otro elemento donde se la complejidad sea menor y se traten de entornos más estáticos y estacionarios.
, , ,

No hay comentarios:

Publicar un comentario