Minería de datos: Modelos predictivos con RapidMiner
 
 
  • Usted está aquí:
  • Home
  • Software
  • Minería de datos: Modelos predictivos con RapidMiner

Minería de datos: Modelos predictivos con RapidMiner

 
Global - 22 Abr 2017
0 comentarios
 

El diseño de modelos predictivos es uno de los primeros frentes del trading cuantitativo. Desde las plataformas basadas en redes neuronales hasta los modernos generadores automatizados de código, han sido enormes los esfuerzos por conseguir estrategias viables a base de “torturar los datos hasta que canten”. Todos los enfoques que recurren al cómputo intensivo de series de precios para obtener estrategias cuantitativas caen dentro del data mining. También los que exploran los datos sobre sentimiento de mercados y los rastreadores de noticias financieras para desarrollar estrategias del tipo event-driven


El software de minería de datos enfocado al trading tiene la ventaja de ser mucho más específico y sencillo que los grandes entornos de data mining y business intelligence. Sin embargo, utiliza una ínfima parte de los recursos y herramientas analíticas disponibles en estas plataformas de propósito general, diseñadas para buscar todo tipo de relaciones ocultas y hacer predicciones complejas en inmensas bases de datos. Pero empecemos por el principio…

 

1.- ¿QUÉ ES LA MINERÍA DE DATOS?

Entendemos por minería de datos un conjunto de técnicas estadísticas y de modelado de la información  con las que se prende extraer de manera automatizada patrones ocultos, tendencias, anomalías, vinculaciones complejas y significados en grandes volúmenes de datos. El objetivo es crear un modelo a partir de los datos que permita, bien clasificar la información partiendo de un conjunto de reglas inferidas de los datos, bien predecir tendencias o atributos discretos y continuos. Para ello se utilizan diferentes tipos de algoritmos:


De regresión: Para identificar tendencias. La regresión lineal es la más empleada, aunque también son frecuentes las parabólicas, polinómicas y logarítmicas. Sin embargo estos algoritmos son bastante ineficientes en espacios multidimensionales en los que intervienen más de dos variables. En estos casos suele ser mejor utilizar algoritmos basados en modelos probabilísticos o estadísticos.


De clasificación: Para predecir variables discretas o para determinar atributos comunes. Algunos algoritmos de agrupamiento o clustering como los K-means y los K-medoids suelen dar buenos resultados cuando se buscan formas de agrupación basadas en la distancia entre puntos que representan la distancia media entre elementos de un grupo. Mediante técnicas iterativas se pueden buscar soluciones que converjan rápidamente hacia un óptimo local, incluso en grandes conjuntos de datos.


De segmentación: Para organizar los datos en categorías y subcategorías. Los árboles de decisión son una técnica muy empleada tanto en clasificación como en segmentación. En determinados problemas de este tipo también serán de utilidad algunos tipos de redes neuronales e incluso los algoritmos de soporte vectorial (SVM).


De series temporales: Para analizar una secuencia de eventos e identificar patrones con una finalidad predictiva. En series sencillas algunas técnicas de regresión pueden ser de utilidad, aunque tanto las máquinas SVM como el deep learning funcionan muy bien en este tipo de tareas.


De asociación: Para buscar correlaciones y vínculos no lineales en conjuntos de datos. Esto permitirá descubrir reglas de asociación que podrán emplearse con carácter explicativo o predictivo. Los modelos de asociación basados en casos permiten agrupar los elementos que comparten una etiqueta o propiedad en un espacio de búsqueda determinado. Una vez creadas las reglas de asociación y establecida la probabilidad de ocurrencia entre elementos relacionados, el modelo permite elaborar predicciones basadas en la concurrencia de los elementos asociados. Un ejemplo típico de este tipo de predicciones sería sugerir a un cliente la compra de un nuevo producto en base a las últimas compras que ha realizado.


De interpretación: para extraer significados en el ámbito del text mining. La búsqueda de información significativa en textos es una de las tareas más complejas del data mining. Este tipo de algoritmos combinan técnicas de deep learning con lingüística computacional. Un ejemplo de este tipo sería el análisis dinámico del sentimiento del mercado partiendo de una base de noticias financieras en tiempo real.

 

2.- ¿QUÉ APLICACIONES TIENE EN EL ÁMBITO DEL TRADING CUANTITATIVO?

Las aplicaciones son muy variadas y podemos situarlas en estas tres categorías: Analíticas, predictivas y de soporte a la toma de decisiones. Existen numerosos estudios en los siguientes ámbitos:

  • Simulación de los movimientos de precios analizando las relaciones estadísticas entre varios mercados o grupos de activos.
  • Búsqueda de anomalías cíclicas o de calendario.
  • Construcción de modelos dinámicos en el ámbito del portfolio selection.
  • Modelos predictivos simples y multidimensionales.
  • Selección de estrategias de trading o productos invertibles.
  • Determinación de patrones y construcción de reglas de operativa.
  • Interpretación de noticias financieras mediante aprendizaje asociativo.
  • Determinación de oportunidades de compra en sectores y grupos de acciones.

 

3.- ¿QUÉ ES RAPIDMINER?

Existen numerosas plataformas para el desarrollo de sofisticados modelos estadísticos y el análisis predictivo de grandes paquetes de datos: SAS, Oracle Advanced Analytics, KNIME, WEKA, IBM, Neural Designer, etc. Hemos elegido RapidMiner ya que dispone de un potente entorno visual para para el encadenamiento de operadores, extensiones para importar y manejar series financieras, compatibilidad con R y una abundantísima documentación mediante video tutoriales y aplicaciones prediseñadas para diversos escenarios.

Los operadores disponibles cubren una inmensa variedad de tareas; desde conectividad con bases de datos y otras aplicaciones estadísticas hasta algoritmos avanzados de clasificación, segmentación, predicción, text mining y análisis de procesos. Otro de sus grandes atractivos es el ser una herramienta open source muy empleada en el mundo académico y gratuita para usos no comerciales. Para seguir los ejercicios que veremos a continuación es necesario descargar:

- RapidMiner Studio.

- RapidMiner Finance and Economics Extension   

 

4.- CONSTRUCCIÓN DEL MODELO

Seguidamente vamos a construir un modelo predictivo sencillo empleando datos en base diaria del S&P 500 (GSPC),  las notas del Tesoro a 10 años (TNX) y la volatilidad (VIX). El objetivo será predecir la evolución del índice en una ventana temporal de un día. Para ello utilizaremos dos series:

- In Sample: 2001-2015. Construcción, entrenamiento y validación de los modelos basados en redes neuronales y SVM.

- Out Sample: 2016-2017m. Para realizar las predicciones a un día del cierre del  S&P 500.

El esquema general del modelo a construir será:



Para la obtención de datos la extensión Finance and Economics cuenta con diversos operadores que permiten importar los históricos de cotizaciones y otros muchos datos de mercados de fuentes como Yahoo, Markit, Bloomberg, la FED y Eurostat. Para nuestro modelo elegimos el operador Yahoo Historical Stock Data que nos permitirá extraer las series requeridas en base diaria. También debemos incorporar los operadores Joint, para fusionar las series de cada producto en una única tabla de datos, y Set Role para asignar la fecha como referencia vinculante en todas las series. Esto lo hacemos poniendo a la columna “date” el atributo “id”.

Especial atención merece el operador Windowing, que nos permitirá construir un modelo predictivo multivariado convirtiendo las  series en cortes o ventanas temporales de una longitud específica y “n” elementos. Cada ventana se puede desplazar en saltos de “x” intervalos temporales. En nuestro ejemplo, configuramos este operador del siguiente modo:




Donde el tamaño de la ventana es de un día, lo que significa que en cada corte tendremos una muestra de datos para la variable a predecir (GPSC_CLOSE) que se desliza en saltos de 1 día (step size) a lo largo de la serie. El horizonte de la predicción (parámetro horiozon) será también de un día.

Nuestro siguiente paso será especificar el motor de entrenamiento y validación. El operador Sliding Window Validation nos permitirá establecer el tamaño de las regiones de entrenamiento y testeo. En la primera podemos utilizar diferentes algoritmos predictivos; desde modelos simples basados regresiones lineales y polinómicas hasta modelos tipo SVM y de autoaprendizaje, como perceptrones y redes neuronales.  En la ventana de testeo utilizaremos los operadores Apply Model, para aplicar el modelo construido en la región de entrenamiento a la región de validación y Forecasting Performance para calcular la calidad de la predicción en base al criterio elegido.



Para la evaluación Out-Sample basta con cortar y pegar los operadores Yahoo Historical Data, Joint, Set Role y Windowing y unir la salida de datos de Sliding Window Validation con la entrada de un nuevo Apply Model. Las únicas modificaciones a relazar son: Especificar en los operadores Yahoo las nuevas fechas de comienzo y fin de la serie O-S y en el horizonte temporal de Windowing poner el valor 0. El mapa completo de procesos tendrá este aspecto:




5.- RESULTADOS

Diversos estudios académicos sostienen que es imposible predecir la evolución de los precios de los productos cotizados a un día con fines especulativos. Es decir, el margen de error supera ampliamente el beneficio potencial una vez descontados los gastos de la operativa. Nuestro pequeño experimento parece apuntar en la misma dirección.  Probamos diferentes algoritmos predictivos con resultados bastante desiguales. Las RNNs muestran en general un comportamiento pobre. El algoritmo de Deep Learning parece comportarse algo mejor que una RNN simple, en todo caso la precisión de las predicciones no supera el 50%. 


Seguidamente mostramos los resultados obtenidos con algunos algoritmos de este grupo. La línea roja es la serie de cierres diarios del S&P 500 y la azul las predicciones en la región  Out-Sample del valor de los cierres proyectados a un día. La imagen inferior muestra el resultado obtenido con una red neuronal simple que emplea el algoritmo de back-propagation. El modelo parece funcionar bien cuando las variaciones en los movimientos de precios son pequeñas y continuas, pero es incapaz de predecir y adaptarse a los cambios bruscos en la tendencia.  



Seguidamente utilizamos una red multicapa compleja o algoritmo de Deep Learning. A diferencia del modelo anterior el algoritmo puede utilizar un número ilimitado de capas ocultas y combina un algoritmo de back-propagation junto con avanzadas técnicas de aprendizaje adaptativo que permiten una mayor precisión en las predicciones.  En la imagen inferior vemos el resultado de aplicar este algoritmo:




En este caso sí se aprecia cierta capacidad predictiva para determinar los cambios en la dirección de la tendencia, aunque el valor de los pecios previstos está aún muy lejos del necesario para generar algún edge aprovechable.

Las máquinas de soporte vectorial SVM son los algoritmos más empleados en este tipo de estudios. Son muy eficientes en tareas predictivas que requieren técnicas de regresión y clasificación. Sin embargo, en la tarea que nos ocupa, aunque se consigue cierta mejora respecto a los modelos RNN, el potencial predictivo sigue estando por debajo del requerido para ser empleado como herramienta de trading. Estas son las estadísticas serie Out-Sample pronosticada con esta técnica y las de la serie real:


 


El histograma de ambas series es muy similar. Un alto grado de solapamiento implica mayor precisión del modelo. 



Por último, la capacidad predictiva de este modelo, como podemos ver en la imagen inferior, es notablemente mejor que la obtenida mediante redes neurales y otras técnicas predictivas disponibles en RapidMiner que hemos probado y descartado debido a su bajo rendimiento.



Como ya hemos dicho, resulta muy difícil pronosticar el valor de los cierres a un día ya que los precios siguen un paseo cuasi-aleatorio. Sin embargo, el potencial predictivo de estos modelos aumenta considerablemente si nos conformamos con inferir la tendencia alcista o bajista de la próxima sesión.

 

6.- DATA MINING Y PREDICCIÓN DE TENDENCIAS

Una de las gandes áreas del data mining es la clasificación o etiquetado de los elementos de una serie que cumplen determinadas propiedades. La extensión Finance and Economics dispone de un operador (“Classify by Trend”) que permite determinar en series temporales de cotizaciones el sesgo alcista o bajista. Una vez etiquetados los datos diarios podremos emplear técnicas de segmentación y operadores de auto-aprendizaje para predecir tendencias. La siguiente imagen muestra el etiquetado del S&P 500 en base diaria con el operador Classify by Trend: 


 


Otro elemento importante para mejorar la capacidad predictiva del modelo es determinar en qué grado participan o qué relevancia tienen para la predicción cada una de las series que tomamos como input.  El operador evolutivo Optimize Selection seleccionará mediante un algoritmo genético los atributos más relevantes en la predicción.  En nuestro caso obtenemos la siguiente tabla de resultados:




El atributo GSPC_CLOSE se utiliza por defecto para el etiquetado de las tendencias. De los otros 12 atributos comprobamos que solo 7 de ellos son relevantes para el análisis predictivo, por lo que podemos eliminar el resto, con lo que disminuiremos el tiempo de evaluación y obtendremos resultados más precisos al filtrar el ruido. Con un modelo de este tipo obtenemos una mayor precisión:




En cambió su valor predictivo para el trading será mucho más limitado y debemos utilizar el modelo en combinación con otros indicadores. No es lo mismo, aventurar si la tendencia a un día será alcista o bajista que establecer los valores óptimos de entrada y salida de una posición partiendo de un pronóstico sobre el nivel que alcanzarán los precios en la próxima sesión. En definitiva, cuanta más información exigimos al modelo menos precisión vamos a obtener.  

 

En conclusión, el uso de plataformas genéricas de minería de datos para desarrollar modelos predictivos  sobre series de precios no debe tener como objetivo el trading, sino la investigación. Por ejemplo, se pueden utilizar estas técnicas para clasificar los mercados en función de su tendencialidad o para encontrar cambios de régimen y alteraciones significativas en la dinámica de las formaciones de precios. Los algoritmos SVM y k-NN son muy buenos en tareas de clasificación, por lo que también pueden empelarse en el desarrollo de  modelos de selección de activos para la creación de portfolios.

 

Andrés A. García

© Tradingsys.org, 2017



 

Añadir comentario

 
Modificado por AndyG - 23 Ago 2017
 
 

Secciones

 
 

Entradas recientes

 
 

Enlaces