Predicción de criptomonedas con técnicas de Deep Learning - Grado en Ingeniería Informática Trabajo Fin de Grado
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
Predicción de criptomonedas con técnicas de Deep Learning Grado en Ingeniería Informática Trabajo Fin de Grado Autor: Anton Chernysh Tutor/es: Antonio Javier Gallego Sánchez Jorge Calvo Zaragoza Mayo 2021
Predicción de criptomonedas con técnicas de Deep Learning - Autor Anton Chernysh Directores Jorge Calvo Zaragoza Dpto. Lenguajes y Sistemas Informáticos Antonio Javier Gallego Sanchez Dpto. Lenguajes y Sistemas Informáticos G RADO EN I NGENIER ÍA I NFORM ÁTICA Alicante, Spain, 1 de junio de 2021
Justificación y Objetivos Este trabajo aborda el estudio de distintas técnicas de Deep Learning para la predic- ción de series temporales. Para hacer este estudio, usaremos los datos históricos de la criptomoneda Ethereum con un periodo de vela de cinco minutos. Realizaremos un análisis de los datos y extrae- remos nueva información a partir de algunos indicadores técnicos. Finalmente, estudia- remos distintos tipos de arquitecturas neuronales y llevaremos a cabo una comparativa de su rendimiento. Aunque en este documento aplicamos el estudio sobre el mercado de las criptomo- nedas, este trabajo es extrapolable a cualquier otro mercado de valores como el bursátil, e incluso a otro tipo de datos de series temporales.
Agradecimientos En esta sección quisiera agradecer a Darı́o, Marı́a y Carlos por ser las personas que más me han apoyado y las que más me han enseñado en los últimos años. Por último agradecer a mis tutores, Jorge Calvo y Antonio Javier Gallego Sánchez, por ayudarme y guiarme durante este trabajo.
Si compras cosas que no necesitas, pronto tendrás que vender las cosas que necesitas. Warren Buffet. VI
Índice general 1 Introducción 1 1.1 Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Estructura del trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Introducción a los mercados financieros 6 2.1 Análisis fundamental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Análisis técnico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.1 Teorı́a de Dow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Velas japonesas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.1 Retorno de vela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 Portafolio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5 Drawdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.6 Conclusiones del capı́tulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3 Fundamentos sobre Aprendizaje Automático 12 3.1 Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2 Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2.1 Arquitectura de una neurona . . . . . . . . . . . . . . . . . . . . . 14 3.2.2 Función de Activación . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3 Entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.1 Funciones de pérdida . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.2 Evaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4 Series temporales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4 Metodologı́a 23 4.1 Análisis de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.1.1 Preprocesado básico . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.1.2 Extracción de información . . . . . . . . . . . . . . . . . . . . . . . 24 4.1.3 Técnicas trigonométricas . . . . . . . . . . . . . . . . . . . . . . . 27 4.1.4 Escalado y normalización de los datos . . . . . . . . . . . . . . . . 28 4.1.5 Conclusiones del la sección de Análisis . . . . . . . . . . . . . . . 30 4.2 Arquitecturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2.1 Arquitectura MLP . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2.2 Arquitectura Residual . . . . . . . . . . . . . . . . . . . . . . . . . 31 VII
Índice general VIII 4.2.3 Arquitecturas recurrentes . . . . . . . . . . . . . . . . . . . . . . . 32 4.3 Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3.1 Split de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3.2 Entrenamiento y la evaluación de los modelos . . . . . . . . . . . 37 4.4 Tecnologı́as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.4.1 Librerı́as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.4.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5 Experimentación 40 5.1 Parámetros de entrenamiento . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.2 Modelo Base Naive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.3 Modelo Dense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.4 Modelo Dense Residual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.5 Modelo LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.6 Modelo LSTM Residual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.7 Modelo GRU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.8 Modelo GRU Residual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.9 Modelo TCN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.10 Modelo TCN-MLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.11 Modelo TCN-RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.12 Modelo TCN-RNN-MLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.13 Backtesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.14 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6 Conclusiones y trabajos futuros 54 Bibliografı́a 57 Lista de Acrónimos 58
Índice de figuras 2.1 Ejemplo de análisis técnico (Binance). . . . . . . . . . . . . . . . . . . . . 7 2.2 Anatomı́a de las velas japonesas. . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 Drawdown en la rentabilidad de un portafolio. . . . . . . . . . . . . . . . 10 3.1 Arquitectura de una red neuronal. . . . . . . . . . . . . . . . . . . . . . . 14 3.2 Arquitectura de una neurona. . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Puertas lógicas con neuronas. . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4 Descomposición de los datos con periodos de una semana. . . . . . . . . 21 4.1 Relación del error y la complejidad de la red. . . . . . . . . . . . . . . . . 25 4.2 Coseno aplicado a los datos de fecha con ciclos de una semana y un año. 28 4.3 Bloque residual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.4 Arquitectura de una célula LSTM. . . . . . . . . . . . . . . . . . . . . . . 33 4.5 Arquitectura de una célula GRU. . . . . . . . . . . . . . . . . . . . . . . . 34 4.6 Ejemplo de aplicación de un filtro de convolución. . . . . . . . . . . . . . 34 4.7 CNN para detección de caras. . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.8 Splits de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.1 Modelo Dense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Modelo Dense Residual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.3 Modelo LSTM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.4 Modelo LSTM Residual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.5 Modelo GRU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.6 Modelo GRU Residual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.7 Modelo Convolucional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.8 Modelo TCN-MPL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.9 Modelo TCN-RNN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.10 Modelo TCN-RNN-MLP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.11 Relación entre las métricas obtenidas respecto al MAE. . . . . . . . . . . 52 IX
Índice de tablas 3.1 Puertas logicas OR y XOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1 Parámetros de configuración de la simulación de backtesting. . . . . . . 49 5.2 Resultado de los modelos estudiados. . . . . . . . . . . . . . . . . . . . . 51 X
Índice de Listados 5.1. Pseudocodigo del algoritmo de backtesting . . . . . . . . . . . . . . . . . 50 XI
1 Introducción Actualmente nos encontramos en una época donde el mundo de Inteligencia Arti- ficial esta en auge y hasta las empresas más pequeñas quieren explotarlo. A pesar de haber sido acuñado por primera vez a mitades del siglo XX por Alan Turing, no se ha hecho tan popular hasta los últimos años gracias a los recientes avances en las tarjetas gráficas que permitı́an reducir en gran medida su tiempo de cómputo. La popularidad de estos algoritmos se debe a que son capaces de perfeccionarse en base a ”entrena- mientos”, llegando a reemplazar por completo a un humano. En este trabajo estudia- remos y experimentaremos con las últimas técnicas de Deep Learning, un subárea del Aprendizaje Automático. Otro sector que también ha sido muy popular en los últimos años es el de las crip- tomonedas. Se trata de una divisa digital que surge como alternativa a la moneda tra- dicional. Este criptoactivo utiliza criptografı́a fuerte para asegurar las transacciones, controla la creación de unidades adicionales y verifica la transferencia usando tecno- logı́as de registro distribuido. El control de cada moneda funciona a través de una base de datos descentralizada mediante cadena de bloques (blockchain en inglés). Desde el surgimiento de la primera criptomoneda, Bitcoin, en 2009, su valor y el de muchas otras ha aumentado drásticamente. Este evento ha provocado que tanto inver- sores profesionales como aficionados se interesaran por la inversión, las criptomonedas y su funcionamiento. En este trabajo vamos a unir estas dos tecnologı́as y ver lo que po- demos lograr. 1
Introducción 2 1.1. Motivación Durante los últimos dos años me he interesado mucho por otros tipos de conocimien- to fuera de mi área de estudios, como el emprendimiento y la inversión. Esto, sumado a mi personalidad competitiva, me han llevado al mundo del trading. El trading se puede definir como un conjunto de técnicas y estrategias de compra y venta con el objetivo de aprovechar o intentar predecir el estado de un valor y, a diferencia de la inversión tradicional, este busca beneficios a corto plazo. Los mercados donde se negocian estos valores son cada vez más complejos debido al alto nivel competitivo que hay entre las personas y empresas que participan en él. Además, es considerado totalmente impre- decible tal como la defiende la Efficient-market hypothesis 1 . Por ello, a lo largo de este trabajo vamos a estudiar el uso y aplicaciones que tienen las técnicas de Deep Learning en la capacidad de estimar el precio de un valor en el futuro. En los últimos años estas técnicas nos ha demostrado que podemos detectar patrones o caracterı́sticas en los datos que un humano no puede. Además, a veces el precio de un valor no sube o baja sin motivo, sino que está influenciado principalmente por factores externos como las noticias o publicaciones de gente influyente como Elon Musk, que con una simple palabra son capaces de hacer que el precio de una criptomoneda como Dogecoin suba más del 100 % en tan solo un dı́a. Como podemos ver se trata más de algo sociológico que simple aleatoriedad. Es por esto que realizaremos este estudio a partir de las siguientes ideas: 1. Los mercados no son aleatorios. 2. La historia se repite. 3. Los mercados siguen el comportamiento racional de las personas. 1 Esta hipótesis establece que los precios de los activos reflejan toda la información disponible y que es imposible ”ganarle al mercado”de manera consistente, ya que los precios del mercado solo deberı́an reaccionar ante nueva información
Introducción 3 1.2. Objetivos Los principales objetivos de este trabajo son los siguientes: 1. Estudio y análisis de los mercados financieros. Como veremos en el capı́tulo 2 de introducción a los mercados financieros, existen dos grandes ramas de las cuales nos centraremos solo en el de análisis técnico. 2. Conocer el estado del arte sobre el aprendizaje automático. Estudiaremos las diferentes arquitecturas que se emplean y como emplearlas para abordar nuestro problema. 3. Implementación y experimentación de las distintas arquitecturas de Deep Lear- ning utilizando las librerı́as de gran relevancia como TensorFlow y Keras. 4. Evaluación y comparativa del rendimiento de los modelos implementados. Es- tudiaremos las distintas funciones y métricas mas utilizadas para la regresión de series temporales. 5. Combinar nuestro modelo de predicción con la implementación de un algo- ritmo de trading. Realizaremos una simulación de nuestros modelos sobre los mercados financieros mediante un algoritmo de backtesting .
Introducción 4 1.3. Estructura del trabajo Para facilitar su lectura, el contenido de este documento se encuentra organizado en capı́tulos y secciones. A continuación se describe la estructura que vamos a seguir. Capı́tulo 1: Introducción ⇒ Capı́tulo introductorio que abarca los fundamentos del proyecto y describe los objetivos que se pretenden alcanzar. Capı́tulo 2: Introducción a los mercados financieros ⇒ Breve introducción a los mercados financieros. Capı́tulo 3: Fundamentos sobre Aprendizaje Automático ⇒ Proporciona una ba- se teórica general del ámbito de Machine Learning y su papel en el problema a resolver. Capı́tulo 4: Metodologı́a ⇒ Capı́tulo que abarca las arquitecturas neuronales es- tudiadas, las distintas transformaciones aplicadas a los datos y la estrategia utili- zada para abordar el problema. Capı́tulo 5: Experimentación ⇒ Descripción de los experimentos realizados y los resultados obtenidos. Capı́tulo 6: Conclusiones y trabajos futuros ⇒ Reflexiones sobre los resultados obtenidos y de posibles trabajos futuros a abordar.
2 Introducción a los mercados financieros Para poder entender la complejidad del problema a resolver, es necesario tener unos conceptos básicos previos sobre los mercados financieros. Estos, se pueden definir como un espacio a través del cual se intercambian activos financieros, donde los participantes son los que definen los precios de dichos activos. Un mercado financiero esta regido por la Ley de la Oferta y la Demanda. Es decir, cuando alguien quiere adquirir algo a un precio determinado, sólo lo podrá comprar si hay otra persona dispuesta a venderlo a ese mismo precio. Por otro lado, está el análisis de los mercados financieros, cuyo objetivo es extraer información que nos permita conocer la evolución de un activo en el futuro. Este a su vez, se puede dividir en dos grandes ramas principales: el análisis fundamental y el análisis técnico. 2.1. Análisis fundamental El objetivo del análisis fundamental es intentar establecer un precio teórico de un activo a través del estudio de las variables que afectan a su valor. En caso de que el valor teórico sea mayor al real, significa que su valor está infravalorado y tiene un gran potencial de revalorización de cara al futuro. Las variables que se incluyen en este estudio son muchas, pero las más importantes suelen ser los resultados financieros de la empresa, noticias financieras o polı́ticas, y opiniones públicas de gente influyente. Como podemos ver, la mayorı́a de estas variables no son cuantitativas, por lo que realmente no hay una forma objetiva de obtener su valor. Por tanto, varios análisis pueden llegar a distintos resultados, concluyendo algunos de ellos que el valor del activo está infravalorado y otros que está sobrevalorado. Por otra parte, esto es lógico, ya que para que se realice una operación, debe haber alguien que quiera comprarlo y otro venderlo al mismo precio. 6
Introducción a los mercados financieros 7 2.2. Análisis técnico A diferencia del análisis fundamental, el análisis técnico no pretende calcular el valor teórico del activo, sino de encontrar patrones de comportamiento en la evolución de su cotización, basándose en sus datos históricos. Se trata de un análisis más gráfico, que permite visualizar las tendencias a lo largo del tiempo. Además, utiliza una serie de indicadores u osciladores que permiten extraer nueva información que a simple vista no se ve. Al igual que con el análisis fundamental, no se trata de ciencia exacta, y dos analistas pueden llegar a conclusiones diferentes. Estos dos análisis son muy distintos, pero en la práctica, se utilizan ambos ya que se complementan y permiten obtener más infor- mación. El análisis fundamental se puede ver como un análisis a largo plazo, ya que no sabes cuándo se va alcanzar el valor teórico. En cambio, el análisis técnico es más a corto plazo, que nos permite detectar el mejor momento para realizar cierta operación y ası́ incrementar las posibilidades de obtener beneficios. Figura 2.1: Ejemplo de análisis técnico (Binance).
Introducción a los mercados financieros 8 2.2.1. Teorı́a de Dow La teorı́a de Dow constituye el origen de lo que hoy se conoce como análisis técnico. Los principios básicos de la teorı́a de Dow se resumen en estos 5 puntos: 1. El precio lo refleja todo. Toda la información pasada, presente e incluso futura, como las noticias, inflación y expectativas están incluidas y reflejadas en los pre- cios. 2. El precio se mueve por tres principales tendencias: La tendencia primaria: periodos entre uno y tres años. La tendencia secundaria: periodos mensuales o semanales. La tendencia terciaria: periodos diarios. 3. Las tendencias primarias tienen tres fases. 4. El volumen debe confirmar la tendencia. 5. La tendencia se mantiene hasta que no se demuestre lo contrario. Es decir, hasta que no haya una nueva tendencia en sentido contrario. 2.3. Velas japonesas Las velas japonesas no es mas que una forma de representar el precio de un valor en el mercado y es uno de los componentes más conocidos del análisis técnico. Gracias a esta representación, podemos reflejar el precio en diferentes intervalos de tiempo, per- mitiendo obtener una visualización gráfica de como evoluciona su negociación. Existen dos tipos de velas: velas alcistas y velas bajistas. Como podemos ver en la figura 2.2, la principal diferencia entre ambas es su color. En caso de que el precio de cierre (Close) es superior al de apertura (Open), la vela indica una subida en el precio durante ese periodo de tiempo y será de color verde. En caso contrario, será roja.
Introducción a los mercados financieros 9 Figura 2.2: Anatomı́a de las velas japonesas. 2.3.1. Retorno de vela El retorno de vela hace referencia a las ganancias o pérdidas de una inversión después de un periodo de tiempo. Este retorno puede ser simple o porcentual. ret.simple = preciot+1 − preciot (2.1) preciot+1 − preciot ret.porcentual = ∗ 100 (2.2) preciot 2.4. Portafolio El portafolio de inversión, también llamado cartera de inversión, es un conjunto de activos financieros que posee una persona. Es común intentar diversificarlo en diferen- tes sectores y que en su conjunto te permita multiplicar tu patrimonio a lo largo de los años. Más adelante veremos como se puede comparar el rendimiento de los modelos si- mulando un portafolio y aplicando una estrategia simple de compra y venta.
Introducción a los mercados financieros 10 2.5. Drawdown Durante nuestro periodo de inversión, el valor de nuestro portafolio puede entrar en una racha de pérdidas que se ven reflejadas como grandes caı́das en la gráfica. El Drawdown es una medida que representa el máximo retroceso en la curva del valor respecto al máximo anterior. En el campo del trading, esta medida permite evaluar el riesgo de una estrategia. Figura 2.3: Drawdown en la rentabilidad de un portafolio. 2.6. Conclusiones del capı́tulo Esta breve introducción es necesaria para introducir al lector a los mercados financie- ros, conocer los datos con los que vamos a trabajar y poder entender mejor las gráficas en los siguientes capı́tulos.
3 Fundamentos sobre Aprendizaje Automático En este capı́tulo vamos a explicar un poco en más detalle el problema del que trata este estudio, las técnicas actuales que se usan y el enfoque que vamos a tomar para resolverlo. Para terminar, realizaremos un breve estudio acerca de cómo medir y com- parar el rendimiento de nuestro algoritmo. 3.1. Machine Learning En informática, un programa o algoritmo, se define como una lista de instrucciones finitas y ordenadas que permiten la resolución de un problema determinado. Cuando el algoritmo depende de información externa y no conocida a priori, es necesario espe- cificar una respuesta para cada caso posible y, en caso de no hacerlo, el programa puede fallar provocando una respuesta imprevisible y errónea. A mediados del siglo XX se crea una nueva disciplina de las ciencias de la informa- ción llamada Inteligencia Artificial. Surge con la intención de crear un sistema capaz de aprender y desarrollar una inteligencia como la de un humano y que permita simular su comportamiento. Desde entonces, se han creado una gran cantidad de algoritmos que se pueden considerar ”inteligentes” lo que ha llevado a crear distintas categorı́as de acuerdo a sus propiedades y a los tipos de problemas que pueden solucionar. El subcampo de la Inteligencia Artificial más conocido es Machine Learning[1] (ML). Este área de estudio cuenta con algoritmos capaces de aprender analizando distinta información, permitiendo al programa adaptarse a nuevas situaciones nunca vistas y responder apropiadamente sin ser explı́citamente programadas. Este campo se puede dividir en tres grandes grupos según el tipo de aprendizaje: Aprendizaje supervisado: el aprendizaje se realiza a partir de casos de ejemplo que están etiquetados, de manera que cuando el programa comete un error, pode- mos medirlo y modificar nuestro modelo durante el entrenamiento. Gracias a que 12
Fundamentos sobre Aprendizaje Automático 13 los datos están etiquetado y que podemos saber cuánto nos hemos equivocado, el algoritmo puede aprender de manera mucho más rápida que usando el resto de técnicas. Esta rama a su vez se puede dividir en dos grupos: • Clasificación: la predicción se realiza sobre un conjunto limitado de cate- gorı́as o clases. Por ejemplo clasificación de imagen para distinguir entre distintos tipos de animales. • Regresión: la predicción consiste de un valor numérico. Por ejemplo predecir el numero de ventas de una tienda. Aprendizaje no supervisado: a diferencia del supervisado, este no tiene informa- ción etiquetada. Este algoritmo no intenta ajustarse a los datos de entrada y salida, sino en aumentar el conocimiento estructural de los datos disponibles. Los casos de uso podrı́an ser el agrupamiento de los datos según su similitud (clustering) o detección de anomalı́as. Aprendizaje reforzado: al igual que el no supervisado este tampoco tiene infor- mación etiquetada. Se trata de un agente que explora un entorno desconocido y aprende a base de comportamientos de prueba y error. En caso de cumplir una ta- rea, es recompensado, y en las siguientes iteraciones intentará realizar la tarea de la manera más óptima para obtener la máxima recompensa. Este tipo de apren- dizaje es el más similar a como aprende el ser humano, y de la misma manera necesita de muchas iteraciones para aprender. Los casos de uso mas comunes es en videojuegos, donde el agente se dedica a jugar al videojuego durante muchas iteraciones y evolucionando en cada una de ellas. Para optimizar su tiempo de computo se realizan diferentes simulaciones en paralelo y se mezclan las mejores versiones, lo que recibe el nombre de algoritmos genéticos.
Fundamentos sobre Aprendizaje Automático 14 3.2. Deep Learning A pesar de que la Inteligencia Artificial busca imitar el comportamiento humano, los algoritmos tradicionales de ML siguen un enfoque racional y emplean métodos ma- temáticos y estadı́sticos para solucionar un determinado problema. Con la intención de conseguir imitar mejor el aprendizaje humano, se crean los modelos neuronales. Deep Learning (DL) es un área dentro del Machine Learning que consiste en una jerarquı́a de neuronas interconectadas, denominadas redes neuronales, que permiten detectar patrones y caracterı́sticas más complejas que el ML. Figura 3.1: Arquitectura de una red neuronal. 3.2.1. Arquitectura de una neurona Las neuronas de las que están formadas estas redes funcionan de manera similar que la de nuestros cerebros y se pueden representar como funciones lineales que reciben datos y devuelven otros. Como se puede ver en la figura 3.2 el funcionamiento de la neurona consiste en una suma ponderada de los datos de entrada y los pesos de la neurona. Al resultado se le añade un peso extra denominado bias para modificarlo de forma directa y, finalmente, se le aplica una función de activación que, además de mo- dificar el valor, facilita durante el entrenamiento calcular el grado de influencia de la neurona sobre el resultado final. Este resultado lo reciben como dato de entrada todas las neuronas de la siguiente capa, y ası́ hasta obtener el resultado final.
Fundamentos sobre Aprendizaje Automático 15 Figura 3.2: Arquitectura de una neurona. Ahora bien, estas neuronas por si solas no son capaces de resolver todos los pro- blemas. Por ejemplo imaginemos que queremos realizar un algoritmo que simule el comportamiento de una puerta lógica. Para este ejemplo vamos a utilizar las puertas lógicas OR y XOR. Su funcionamiento se puede ver en la tabla 3.1. Como podemos en la figura 3.3, en el caso de la puerta OR es fácil, solo necesitamos una linea (función) para poder dividir el espacio y ası́ distinguir entre un grupo u otro (rojo representa el 0 y verde el 1). En cambio para la puerta XOR es imposible de lograrlo empleando solamente una función. Es aquı́ donde necesitamos emplear una segunda neurona que permita al modelo ajustarse mejor a los datos. Entrada 1 Entrada 2 OR XOR 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 Tabla 3.1: Puertas logicas OR y XOR.
Fundamentos sobre Aprendizaje Automático 16 Figura 3.3: Puertas lógicas con neuronas. 3.2.2. Función de Activación Las funciones de activación no son mas que funciones no lineales que se le aplican a la salida de la neurona. Gracias a estas funciones la red es capaz de detectar patrones no lineales. Otra caracterı́stica importante es que durante el entrenamiento estas funciones nos permiten calcular de manera mas sencilla la responsabilidad que ha tenido cada neurona en la solución final, para ası́ poder saber cuanto hay que ajustar sus pesos. Las funciones de activación más usadas son las siguientes: Sigmoide: para cualquier valor de x, esta función devuelve su correspondiente valor en el rango de [0, 1]. Su principal uso se encuentra en la última capa de sali- da. Gracias a su rango de valores que devuelve, podemos utilizar las predicciones resultantes como probabilidades que muestras la certeza de la predicción. 1 sigmoide(x) = (3.1) 1 + e−t Hyperbolic tangent (Tanh): para cualquier valor de x, esta función devuelve su correspondiente valor en el rango de [-1, 1]. ex − e−x tanh(x) = (3.2) ex + e−x Rectified Linear Unit (ReLU): esta función es la mas simple y a su vez la mas
Fundamentos sobre Aprendizaje Automático 17 usada. Para una x positiva devuelve el mismo valor, y en caso contrario devuelve cero. x x>0 relu(x) = (3.3) 0 otherwise. 3.3. Entrenamiento Cuando decimos que el modelo aprende, lo que realmente está haciendo es ajustarse a los datos que recibe con el objetivo de obtener un resultado lo más parecido posi- ble al valor real. El proceso de ajuste se denomina entrenamiento de la red y consiste principalmente en dos partes: Feedforward: consiste en darle a la red los valores de entrada y que te devuelva los valores de salida. Como hemos mencionado, este proceso solamente consiste en una serie de sumas ponderadas que heredan el resultado a las siguientes capas hasta obtener un resultado final. Backpropagation: una vez obtenido el resultado, este tendrá un error respecto al valor real que se deberı́a obtener. La siguiente etapa del entrenamiento consiste en medir ese error y castigar a cada neurona modificando sus pesos en función de la influencia que ha tenido sobre el resultado final.
Fundamentos sobre Aprendizaje Automático 18 3.3.1. Funciones de pérdida Para el cálculo del error durante el entrenamiento, se emplean funciones de pérdida, también llamadas funciones de error, y son un elemento fundamental en la teorı́a de optimización de problemas en varias ciencias: Teorı́a de decisión (donde juega un gran papel la Teorı́a Bayesiana, propuesta por el Inglés Thomas Bayes en el siglo XVIII), estimación, pronóstico, inversión financiera y en la econometrı́a, entre otros [2]. La de- finición más sencilla de una función de pérdida podrı́a darse de la siguiente manera: dada una predicción ybi , y el valor real yi , la función de pérdida mide la diferencia o discrepancia entre el algoritmo o modelo de predicción y la salida deseada. El error calculado nos permite propagarlo por la arquitectura actualizando sus pesos, y de esta manera hacer que la red ”aprenda”. Algunos ejemplos de las funciones clásicas son las cuadráticas, las de valor absoluto, las de cuantiles y la 0-1. Cada una de estas funciones se soportan en una medida es- tadı́stica (la media, la media al cuadrado o la mediana), que se convierte en un criterio importante para la decisión del modelo de estimación. Por otro lado, dependiendo de cómo se tratan las magnitudes de los errores y su signo, se podrı́an clasificar las funciones como simétricas y asimétricas. Las más popu- lares son las funciones simétricas, pero a veces con las asimétricas se puede lograr una medición más real desde el punto de vista económico y no matemático. Por ejemplo en [3] crean su propia función de pérdida para que penalice más los errores donde la tendencia de la predicción sea contraria a la que realmente ocurre posteriormente. En nuestro estudio hemos utilizado las siguientes funciones: Mean Absolute Error (MAE): mide el promedio de la diferencia absoluta entre el valor real y el valor predicho. N 1 X M AE = |yi − ybi | (3.4) N i=0 Mean Squared Error (MSE): similar a MAE, pero penaliza más cuanto mayor es el error. Pero como veremos más adelante, tanto MAE como MSE son una medida absoluta, y van a penalizar por igual las diferencias de 20 − 10, que 200 − 190. N 1 X M SE = (yi − ybi )2 (3.5) N i=0 Huber loss: función de pérdida usada para regresiones robustas que combina los dos errores de MAE y MSE. Esta función es menos sensible a los errores muy gran- des. Utiliza MAE para errores más grandes que δ y en caso contrario MSE. Esto
Fundamentos sobre Aprendizaje Automático 19 puede resultar útil cuando queremos utilizar el error cuadrático pero queremos ignorar los errores grandes provocados por anomalı́as. 1 bi )2 Huber = 2 (yi − y for |yi − ybi | ≤ δ, (3.6) δ |yi − ybi | − 12 δ 2 otherwise. 3.3.2. Evaluación Después de entrenar un modelo, para poder clasificarlo y evaluarlo, es necesario tener una medida que mida su rendimiento. Estas medidas pueden ser absolutas si calculan el error sin importar el signo, relativas a una base si utilizan un valor para compararse y relativas al tamaño de los errores si arrojan un valor porcentual. Las funciones que hemos mencionado en el apartado de funciones de pérdida 3.3.1 se consideran solamente absolutas, ya que no miden un error proporcional a la magnitud de los datos y no podemos saber si un es error es grande o pequeño. Esto no impide a que podamos usarlo para compararlo con el resultado de otro modelo de referencia. 3.3.2.1. Métricas relativas De la métricas relativas se han estudiado las siguientes: Mean Absolute Scaled Error (MASE): se calcula como ratio de MAE en datos de test dividido por el MAE de las predicciones del método naı̈ve 1 de un paso sobre el conjunto de entrenamiento. N 1 X M ASE = M AE/Q; Q= |yi − yi−1 | (3.7) N −1 i=2 Mean Absolute Percentage Error (MAPE): es una de las medidas estadı́sticas más usadas para evaluar la precisión de un modelo y permite calcular el error porcentual independientemente de la magnitud de los datos. La desventaja de MAPE es que tiende a infinito con la presencia de valores reales iguales o cercanos a cero, y tiene una curva de error asimétrica porque posee un valor mı́nimo, pero no máximo. N 1 X |yi − ybi | M AP E = ∗ 100 (3.8) N yi i=0 1 Técnica de estimación que utiliza como predicciones los valores reales del pasado.
Fundamentos sobre Aprendizaje Automático 20 Symmetric Mean Absolute Percentage Error (SMAPE): se presenta como una so- lución a las limitaciones de MAPE, pero realmente no soluciona del todo ninguna de ellas [4]. N 1 X |yi − ybi | SM AP E = ∗ 100 (3.9) N (yi + ybi )/2 i=0 3.3.2.2. Backtesting Para nuestro problema concreto, una de las formas para medir el rendimiento de los modelos es simulando su comportamiento mediante backtesting. Esta simulación con- siste en una estrategia de compra y venta utilizando la información proporcionada por las predicciones. Gracias a esta simulación podemos medir y comparar el rendimien- to del portafolio y el drawdown máximo de cada modelo durante el rango de tiempo simulado. Hay que destacar que esta simulación se usa concretamente para medir el riesgo de una estrategia y no la precisión de las predicciones de un modelo. En nuestro caso, las predicciones forman una parte importante de la estrategia, por lo tanto el modelo puede ser preciso y la estrategia poco robusta, donde robusta hace referencia a la constancia de las ganancias y un drawdown bajo. De la misma manera la estrategia puede ser buena, pero si las predicciones son poco precisas, estas harán que la estrategia pierda. 3.4. Series temporales Los datos que vamos a utilizar en este trabajo pertenecen a la categorı́a de series temporales. Una serie temporal se define como una serie de datos recogidos secuen- cialmente en el tiempo. A diferencia de otros tipos de datos, estos tienen registrado el momento exacto en el cual fueron recogidos y que suelen estar tomados en instantes de tiempo equiespaciados o bien acumulados en intervalos. Su caracterı́stica es que las ob- servaciones sucesivas no son independientes entre sı́ y su análisis debe llevarse a cabo teniendo en cuenta su orden temporal. Durante su análisis, cuando se piensa que los datos presentan una tendencia princi- pal o cierta periodicidad, se considera que la serie temporal se puede representar como un agregado (suma) o como una combinación (multiplicación) de estos tres componen- tes: 1. Tendencia: valor y dirección que representa la tendencia principal de la serie a
Fundamentos sobre Aprendizaje Automático 21 largo plazo. 2. Estacionalidad: representa un ciclo repetitivo de la serie que indica tendencias repetitivas en periodos de tiempo equidistantes. 3. Ruido: después de extraer los componentes anteriores lo que queda se considera ruido con comportamiento aleatorio. En la figura 3.4 podemos ver un ejemplo de descomposición de nuestros datos en sus tres componentes principales usando composición mediante combinación y periodos de una semana. Figura 3.4: Descomposición de los datos con periodos de una semana. La predicción de series temporales es un problema muy común ya que la mayorı́a de los datos del mundo real son almacenados junto a su fecha, y esta información resulta muy útil. La distribución de nuestro horario y la forma de medir el tiempo hace que cada cierto tiempo realizaremos acciones similares lo que lo convierte en patrones tem- porales y gracias a ellos podemos obtener predicciones más precisas. Un claro ejemplo es un incremento de compras de regalos en época de fiestas o el tiempo meteorológico que se repite de manera anual.
4 Metodologı́a El trabajo realizado se puede dividir en dos grandes bloques. Por un lado, se ha realizado un estudio sobre los datos con los que hemos trabajado, y de trabajos similares a partir de los cuales poder partir. De la misma manera, se han estudiado algunas de las técnicas modernas de Deep Learning que puedan resultar útiles para la resolución del problema planteado. En este capı́tulo hablaremos de los métodos y estrategias que se han aplicado para abordar el problema planteado en este trabajo. 4.1. Análisis de datos Existen multitud de diferentes activos financieros que podı́an haber sido usados para este estudio. Además, como en el caso de las criptomonedas, su información puede ser extraı́da de diferentes sitios. Se ha optado por la utilización de las criptomonedas por su gran popularidad reciente y el gran potencial que pueden tener en un futuro cercano. Concretamente, los datos que hemos utilizado para el estudio están formados por el histórico de la criptomoneda Ethereum con los precios respecto al dólar, representa- dos como velas con una temporalidad de cinco minutos y extraı́dos de la plataforma Binance. Como vimos en la sección 2.3 de Velas Japonesas, las variables de los que dis- ponemos son cinco: precio máximo, precio mı́nimo, precio de apertura, precio de cierre, el volumen durante el periodo de la vela y, además, la fecha exacta de la apertura de la vela. En los siguientes apartados veremos cómo se han tratado los datos y los distintos tipos de preprocesado aplicados. 23
Metodologı́a 24 4.1.1. Preprocesado básico Los datos crudos descargados presentan valores nulos que se deben a pérdida de información en la plataforma que puede ser provocado por algún fallo o interrupción de su funcionamiento por mantenimiento. Por lo tanto se ha aplicado un preprocesado básico para rellenar los valores vacı́os con los últimos valores disponibles, y además, se ha comprobado que no haya fechas duplicadas ni valores extremos erróneos. 4.1.2. Extracción de información Antes hemos mencionado que las redes neuronales se consideran algoritmos con una capacidad de aprendizaje profundo y que consiguen extraer caracterı́sticas de los datos que a veces un ser humano es incapaz. También, que esto se debe a su jerarquı́a de capas y neuronas, donde cada capa extrae algún tipo de información y la comparte con las siguientes capas. Se podrı́a pensar que cuantas más capas y neuronas tenga una red, mejor va predecir, y que extraer nuevas caracterı́sticas, serı́a como duplicar datos que ya tenemos, ya que la red deberı́a ser capaz de hacerlo por su cuenta y mejor. Por desgracia, la realidad es más compleja. En los siguientes apartados explicaremos cómo influye el tamaño de la red en los resultados, la importancia de extraer nuevas caracterı́sticas y cuáles hemos utilizado. 4.1.2.1. Datos de entrenamiento vs test Los datos de entrenamiento, como su nombre indica, son los datos usados para entre- nar un modelo y conseguir que este aprenda. Ahora bien, no queremos que se memo- rice los datos, sino conseguir extraer caracterı́sticas que nos permitan predecir mejor el futuro. Recordemos que cuando entrenamos un modelo modificamos sus pesos en fun- ción de cuánto se ha equivocado, con el objetivo de obtener predicciones más precisas. Pero ese error no es real, es decir, que tengamos un error bajo en los datos de entre- namiento no asegura que sea igual de bajo en las predicciones que hagamos con datos que el modelo nunca habı́a visto. Es por esto que guardamos una parte de los últimos datos disponibles, que llamaremos test, para saber si el modelo es capaz de predecirlos igual de bien.
Metodologı́a 25 4.1.2.2. Complejidad de la red En Machine Learning, la complejidad de un modelo hace referencia a la cantidad de parámetros o pesos de los que esta formado. Cuantos más parámetros tiene, mayor ca- pacidad tiene de relacionar las distintas caracterı́sticas de los datos de entrada con los de salida. Sin embargo, a medida que vayamos aumentando la cantidad de parámetros, el modelo deja de extraer caracterı́sticas importantes, y empieza a guardarse informa- ción menos importante pero que le permite obtener un error más pequeño durante el entrenamiento. En otras palabras, estarı́a memorizando los datos de entrenamiento pro- vocando que no sepa reaccionar a nuevos datos nunca vistos. En Machine Learning este comportamiento recibe el nombre de Overfitting (sobre-entrenamiento). Por otro lado, si hacemos un modelo muy pequeño, puede ser insuficiente para detectar caracterı́sti- cas más complejas. En la figura 4.1 se puede observar cómo el error converge y diverge, entre los datos usados para entrenar y los datos nunca vistos, a medida que aumenta la complejidad de la red. Figura 4.1: Relación del error y la complejidad de la red. La extracción de información nos permite indicarle a la red caracterı́sticas importan- tes en forma de nuevos datos de entrada. De esta manera podemos reducir la comple- jidad del modelo y evitar en cierta medida que la red aprenda información irrelevante de los datos de entrenamiento.
Metodologı́a 26 4.1.2.3. Indicadores técnicos Los indicadores técnicos [5] son medidas que extraen diferentes tipos de información de un mercado financiero. Miden caracterı́sticas como la tendencia del mercado y son fundamentales en el análisis técnico y las estrategias de trading. En este estudio hemos utilizado los siguientes indicadores: Exponential Moving Average (EMA): es uno de los indicadores de tendencia más usados. Permite visualizar el precio medio de un activo durante un periodo. A diferencia de una media móvil simple (SMA), este indicador realiza una media ponderada aplicando mayor peso a los precios más recientes. Percentage Price Oscillator (PPO): es un oscilador de momentum (impulso), que mide la diferencia entre dos medias móviles1 como un porcentaje de la media móvil más grande. Rate of Change (ROC): también conocido simplemente como Momentum. Mide el retorno porcentual después de cierto periodo. Relative Strength Index (RSI): compara las tendencias alcistas y bajistas para me- dir la velocidad y el cambio de los movimientos del precios de un activo durante un rango de tiempo. Se utiliza principalmente para intentar identificar condicio- nes de sobrecompra o sobreventa en la negociación del activo. Stochastic RSI (stochRSI): mide el valor de RSI respecto al valor máximo y mı́ni- mo durante un periodo de tiempo. Se puede considerar como un indicador de un indicador. Money Flow Index (MFI): es un oscilador de volumen que utiliza el precio y el volumen para medir la presión de compra y venta. Donchian Channel: está formado por dos medias móviles y una linea central. Las dos medias se obtienen de los valores máximo y mı́nimos respectivamente, y la linea central es el resultado de la media. Para no utilizar una cantidad elevada de datos solo se ha utilizado la linea central. Commodity Channel Index (CCI): mide la relación entre el precio actual y el pre- cio medio durante un perı́odo de tiempo. El CCI se puede utilizar para identificar una nueva tendencia o advertir de condiciones extremas. 1 Una media móvil no es más que una media aritmética de los precios en un rango de tiempo.
Metodologı́a 27 Moving Average Convergence Divergence (MACD): es un indicador de tenden- cia que mide la relación entre una EMA rápida (periodo corto) y una EMA lenta (periodo largo). Se suele emplear en estrategias de trading para detectar posibles entradas al mercado. Cuando la media rápida corta a la larga por debajo, se su- pone que el precio va subir, y cuando la corta por arriba, que el precio va bajar. 4.1.3. Técnicas trigonométricas Al trabajar con series temporales, una de las variables más importantes es la fecha. Esta nos puede ayudar a encontrar patrones clave que tienen una fuerte relación con el momento en el cual fue tomada la información, como podrı́an ser, por ejemplo, eventos que se repiten de manera anual. El problema es que nuestros datos no tienen ninguna información que permita indicar esa relación, como tampoco que la hora siguiente de 23 es un cero y, por lo tanto, existen ciclos que necesitamos indicar. Para resolver este problema se emplean técnicas trigonométricas que permiten con- vertir las fechas en ondas con amplitud máxima que indique el fin o el inicio de un nuevo ciclo. El método más común consiste en modelizar los datos mediante una fun- ción armónica como el seno o el coseno. Para aplicar esta técnica hemos transformado los datos en ciclos semanales y anua- les, ya que pueden ser los periodos más importantes. De esta manera podemos detectar cambios en el mercado que puedan ser habituales en festivos o fines de semana. Con- cretamente las fórmulas aplicadas son las siguientes: W eekCos = cos(timestamp ∗ (2π/ws)) (4.1) Y earCos = cos(timestamp ∗ (2π/ys)) (4.2) Previamente a las fechas se les aplica una transformación al formato Timestamp2 pa- ra tenerlas representadas en formato numérico. Por otro lado, las constantes ws y ys representan la duración en segundos de una semana y un año respectivamente. Final- mente se les aplica la función coseno para representar las fechas como ciclos con valores en el rango [-1, 1]. 2 Timestamp es un formato de fecha que representa el número de segundos transcurridos desde 1970.
Metodologı́a 28 Figura 4.2: Coseno aplicado a los datos de fecha con ciclos de una semana y un año. 4.1.4. Escalado y normalización de los datos Una de las técnicas básicas de preprocesado de datos es la normalización y escalado de los datos. Los datos con los que trabajamos tienen mucho ruido, su histograma es muy disperso y no sigue una distribución normal. Además, nuestros valores pueden crecer de forma indefinida en el tiempo y disponen de gran cantidad de valores extremos cuya frecuen- cia en el conjunto de datos es muy pequeña, lo que se traduce en menor probabilidad de ser seleccionado como predicción. Para solucionar estos problemas, se aplica la norma- lización. La normalización de los datos consiste en representarlos en un rango reducido, normalmente en el de [0, 1], y repartirlos de tal manera que siga una distribución nor- mal, también llamada distribución gaussiana. La ventaja de estas transformaciones es que nos permite, como su nombre indica, normalizar los datos, por un lado elimina los valores extremos y, por otro, permite obtener una distribución más repartida y que la diferencia de frecuencia de los valores no sea tan elevada. Las transformaciones más comunes consisten en: Aplicar a los datos una transformación logarı́tmica. De esta manera cuanto mayor sea el valor menor importancia tendrá a sus valores vecinos. Sustituir los datos por cambios porcentuales que representan el porcentaje de cambio de sus valores respecto a los previos. Operaciones con la desviación tı́pica y percentiles de los datos para reducir los valores extremos. Por otros lado, a diferencia de la normalización, el escalado de datos no cambia su
Metodologı́a 29 distribución, sino que se encarga simplemente en reducir el rango de los datos. Durante este estudio hemos estudiado los siguientes escaladores: MinMaxScaler: escala los datos entre un rango de [0, 1]. Cuando trabajamos con datos que pueden superar sus valores mı́nimos o máximos, al utilizar el mismo escalador se van a salir del rango mencionado. Para prevenir esto a veces se utili- zan valores máximos y mı́nimos artificiales que se piensa que no se van a superar, pero sigue sin ser una solución óptima. x − xmin xscaled = (4.3) xmax − xmin StandardScaler: escala y centra los datos restándoles la media y escalándolo res- pecto la desviación estándar. Al igual que el MinMaxScaler, utiliza la media y desviación de los datos del pasado para escalar los nuevos datos, por lo que no puede asegurar un escalado equitativo. x − xmean xscaled = (4.4) xstdev RobustScaler: a diferencia de los anteriores, escala los datos usando estadı́sticas que son robustas a los valores extremos. Para ello escala y centra los datos respec- to al rango del cuartil 1 (percentil 25) y cuartil 3 (percentil 75). x − xq1 xscaled = (4.5) xq3 − xq1 PowerTransformer: aplica una transformación de potencia para que los datos sean más ”gaussianos”. Esto es útil para solucionar problemas de varianza va- riable y permite normalizar los datos. QuantileTransformer: aplica una transformación no lineal a los datos para que sigan una distribución normal o uniforme. De esta manera, tiende a dispersar los valores más frecuentes y, además, reduce el impacto de los valores extremos, por lo tanto también es robusto. Hay que tener en cuenta que puede distorsionar las correlaciones lineales entre las distintas variables, pero por otro lado permite que los datos de diferentes magnitudes sean más comparables.
Metodologı́a 30 4.1.5. Conclusiones del la sección de Análisis El análisis de datos no forma parte de las técnicas de Deep Learning, pero suele re- presentar hasta el 80 % del tiempo total dedicado a la resolución de un problema, ya que es muy importante para que los modelos funcionen correctamente y poder obtener una solución óptima al problema. Con la intención de centrar el trabajo en el estudio de las técnicas de Deep Learning, hemos realizado un análisis básico con las técnicas mencionadas en este capı́tulo.
Metodologı́a 31 4.2. Arquitecturas Durante este bloque, vamos a estudiar y ampliar nuestros conocimientos sobre las distintas técnicas y arquitecturas de redes neuronales. El primer paso fue decidir que querı́amos predecir. Por ejemplo en [3] utilizaron co- mo predicciones el retorno porcentual, es decir, predecı́an cuánto y en qué dirección iba a cambiar el precio tı́pico de la siguiente vela. Hay que recordar que las predicciones del modelo van a funcionar de manera parecida a un indicador técnico, por tanto sigue haciendo falta una estrategia y una gestión de riesgo para poder utilizarlo como un al- goritmo de trading, es decir, podemos predecir lo que queramos con tal de que creamos que esa información pueda resultarnos útil. En este trabajo hemos decidido abordar el problema mediante la predicción del precio tı́pico 3 de la siguiente vela. A diferencia del precio de cierre, este valor esta más centrado a la vela, y en caso de cometer un error en nuestra predicción, el valor estimado tiene más posibilidades de estar dentro del rango entre el valor máximo y mı́nimo real. 4.2.1. Arquitectura MLP La arquitectura Multi Layer Perceptron es la arquitectura más simple. A parte de las capas de entrada y salida, está formada por varias capas ocultas conectadas entre sı́. En los experimentos que vamos a realizar, este modelo va estar estructurado en forma de embudo con el objetivo de ir reduciendo la dimensionalidad de los datos. 4.2.2. Arquitectura Residual Una red neuronal residual, conocida como ”ResNet”[6], se caracteriza por ensam- blar la información de distintos niveles, es decir, concatena la salida de varias capas distintas. La idea de esto es juntar información de distinta granularidad, ya que la in- formación de una capa más profunda se puede considerar más procesada o fina que la información anterior. Además, permite evitar los gradientes que se desvanecen 4 pro- pagando el error directamente a las capas principales. 3 El precio tı́pico es la media aritmética del precio máximo, mı́nimo y de cierre de una vela. 4 El desvanecimiento del gradiente ocurre cuando el gradiente obtenido es muy pequeño y por tanto no consigue modificar suficientemente los pesos
Metodologı́a 32 Figura 4.3: Bloque residual. 4.2.3. Arquitecturas recurrentes Las redes recurrentes están formadas por bucles de realimentación, permitiendo a través de ellos que la información persista un tiempo durante el entrenamiento. Estos bucles devuelven los resultados como nuevos datos de entrada adicionales. Funciona como una red con múltiples copias de sı́ misma, cada una proporciona alguna infor- mación adicional a su sucesor, por lo que resultan muy útiles con secuencias de datos como pueden ser secuencias de palabras o datos temporales como los nuestros. 4.2.3.1. Long Short Term Memory Networks (LSTM) Las LSTMs [7] son un tipo de bloque empleados en la construcción de redes recu- rrentes. Estas, son capaces de aprender y memorizar dependencias del pasado. Esto se debe a que contienen información en su memoria, que puede considerarse similar a la memoria de un ordenador, en el sentido que una neurona de una LSTM puede leer, escribir y borrar información de su memoria. Esta memoria se puede ver como una ”celda” bloqueada, donde ”bloqueada” signifi- ca que la célula decide si almacenar o eliminar información dentro (abriendo la puerta o no para almacenar), en función de la importancia que asigna a la información que está recibiendo. La asignación de importancia se decide a través de los pesos, que tam- bién se aprenden mediante el algoritmo. Esto lo podemos ver como que aprende con el tiempo qué información es importante y cuál no.
Metodologı́a 33 Como podemos ver en la figura 4.4, una unidad LSTM común se compone de una celda, una puerta de entrada, una puerta de salida y una puerta de olvido. La celda recuerda valores en intervalos de tiempo arbitrarios y las tres puertas regulan el flujo de información dentro y fuera de la celda. Concretamente, estas puertas determinan si se permite o no una nueva entrada, si se elimina la información porque no es importante o se deja que afecte a la salida en el paso de tiempo actual. Figura 4.4: Arquitectura de una célula LSTM. Este tipo de bloque, además de ser una potente herramienta para succiones de datos, permite solucionar el problema del desvanecimiento del gradiente mencionado ante- riormente. 4.2.3.2. Gated Recurrent Unit (GRU) Otro tipo de bloque recurrente son las Gared Recurrent Unit [8] (GRU). Este bloque, al igual que las LSTM, permite recordar información del pasado y de la misma ma- nera evitar el problema del desvanecimiento del gradiente. La principal diferencia se encuentra en su estructura. Como podemos observar en la figura 4.5, el bloque de la GRU no dispone de la puerta de olvido y, las dos salidas que contiene la LSTM, GRU las combina en una sola. En la mayorı́a de problemas, ambos bloques obtienen resultados muy similares, con la diferencia de que las GRU tienen un tiempo de computo ligeramente menor.
Metodologı́a 34 Figura 4.5: Arquitectura de una célula GRU. 4.2.3.3. Redes Convolucionales (CNN) Las capas convolucionales consisten en un conjunto de filtros que recorren el con- junto de los datos de entrada en busca de caracterı́sticas. Estos filtros disponen de un tamaño y dimensión que definen el área para la búsqueda de las relaciones entre sus valores vecinos. Como podemos ver en la figura 4.6, los valores del filtro se multiplican por la matriz de entrada hasta recorrer toda la matriz. Figura 4.6: Ejemplo de aplicación de un filtro de convolución. En este caso consiste en un filtro de dos dimensiones, pero puede ser usado también con datos de 3 dimensiones, como podrı́a ser una imagen con varios canales de color.
Metodologı́a 35 Sus aplicaciones más comunes son con datos de entrada que representan los dı́gitos de una imagen. Los filtros son capaces de detectar desde estructuras simples como bordes o formas geométricas simples, hasta estructuras más complejas como caras a partir de la información de las capas anteriores. Figura 4.7: CNN para detección de caras. 4.2.3.4. Temporal Convolutional Network (TCN) Las redes convolucionales temporales son una variación de las redes neuronales con- volucionales preparado para datos secuenciales. Esta arquitectura está diseñada para que la salida sea la entrada en el siguiente paso de tiempo lo que permite extraer infor- mación tanto espacial como temporal. Estas caracterı́sticas hacen esta arquitectura muy interesante para competir con las redes recurrentes.
Metodologı́a 36 4.3. Pipeline Una vez procesados de los datos, se ha establecido una cadena de procesos que se- guir. Esta cadena empieza por dividir los datos, y entra en un bucle de entrenamiento y comparativa de los modelos para seleccionar los mejores. Finalmente se realiza una comparativa del rendimiento de los mejores modelos con los datos de test. 4.3.1. Split de datos Como hemos mencionado, nuestros datos forman parte del grupo de series tempo- rales, y es por ello que la forma más realista de dividir los datos es utilizar los últimos disponibles para la evaluación de los modelos, y el resto para entrenamiento. Por tanto, hemos reservado el ultimo 10 % de los datos para test, y el 90 % de los datos restantes se ha dividido en 5 trozos solapados de manera que los trozos posteriores incluyen todas las partes anteriores, empezando el primero con el primer 1/5 de los datos. Por último, de cada trozo se ha extraı́do su ultimo 10 % para evaluación. En la figura 4.8 se puede observar como queda finalmente la división de los datos para el entrenamiento. Figura 4.8: Splits de datos. Esta estrategia nos permite entrenar y evaluar los modelos sobre distintos grupos de datos con el objetivo de medir su capacidad de generalización.
Metodologı́a 37 4.3.2. Entrenamiento y la evaluación de los modelos Para el entrenamiento de los modelos, se han probado con las distintas funciones de error mencionadas en la sección 3.3.1, pero la que mejores resultados ha obtenido ha sido la función de perdida de MAE. Por otro lado, para la evaluación de los modelos se han utilizado las métricas men- cionadas en la sección 3.3.2. Sobre todo, nos hemos fijado en los valores de SMAPE y MAE. Este último, a pesar de no ser un error relativo a la magnitud de los datos, nos permite comparar el error de la misma manera y, además, nos permite visualizar mejor el error promedio real. Una vez obtenidos los resultados, se procedió a ajustar los distintos parámetros de entrenamiento y, en caso de sobreentrenamiento, se ajustaba la arquitectura de la red reduciendo su complejidad o usando capas de Dropout y BatchNormalization que per- miten meter ruido en los datos y normalizarlos respectivamente. 4.4. Tecnologı́as Para llevar a cabo este estudio se han utilizado una serie de recursos que indicaré en este apartado. 4.4.1. Librerı́as Pandas[9] & Numpy[10]: para el procesamiento y análisis de los datos. Seaborn[11] & Matplotlib[12]: para la visualización de los datos. Pickle[13]: permite almacenar estructuras de datos en ficheros binarios. Statsmodels[14]: permite la realización de tests estadı́sticos y la exploración es- tadı́stica de los datos. Tensorflow[15] & Keras[16]: para la implementación de los algoritmos de apren- dizaje profundo. Sklearn[17]: contiene varios algoritmos que incluyen procesamiento, análisis y estimación de los datos.
También puede leer