UNIVERSIDAD COMPLUTENSE DE MADRID FACULTAD DE INFORMÁTICA DEPARTAMENTO DE SISTEMAS INFORMÁTICOS Y COMPUTACIÓN Trabajo de Fin de Grado en Ingeniería Informática Comparación entre XGBoost y Regresión Lineal Múltiple para la predicción de la evolución del precio de las acciones Comparison between XGBoost and Multiple Linear Regression for stock price evolution prediction Sergio Frutos Serrano Dirigido por Sonia Estévez Martín Curso académico 2021-22 Convocatoria Junio Resumen La predicción de la evolución del precio de las acciones de la bolsa de valores es un estudio que lleva practicándose durante mucho tiempo. El desarrollo del área del Data Science y de los algoritmos de Machine Learning abre nuevas posibilidades para llevar a cabo predicciones como esta. Este trabajo se centra en el desarrollo de un proyecto de Data Science siguiendo una metodología adecuada para el mismo. Con este proyecto se elaboran dos modelos predictivos para los precios de las acciones: uno con XGBoost y otro con Regresión Lineal Múltiple. De esta manera, se pretende comparar la eficacia de cada uno de los algoritmos para el caso que se estudia y poder determinar, por lo tanto, cuál de ellos resulta más útil para la predicción del precio de las acciones. Palabras Clave XGBoost, Regresión Lineal Múltiple, árboles de decisión, modelos lineales, gra- dient boosting, predicción del precio de acciones, indicadores técnicos, Data Science, lenguaje R Abstract Stock price evolution prediction is a study that has been practiced for a long time. The development of the area of Data Science and Machine Learning algorithms opens up new possibilities to carry out predictions like this. This piece of work focuses on the development of a Data Science project following an appropriate methodology for it. With this project, two predictive models for stock prices are developed: one with XGBoost and the other with Multiple Linear Regression. In this way, it is intended to compare the effectiveness of each of the algorithms for the case under study and to be able to determine, therefore, which of them is more useful for stock price prediction. Keywords XGBoost, Multiple Linear Regression, decision trees, linear models, gradient boosting, stock price forecast, technical indicators, Data Science, R language Índice general 1. Introducción y objetivos principales 7 Introduction and main objectives 9 2. Marco Teórico 11 2.1. Algoritmia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1. Gradient boosting . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1.1. Funcionamiento general del algoritmo . . . . . . . . . 12 2.1.1.2. Matemáticas detrás del algoritmo . . . . . . . . . . . 13 2.1.2. eXtreme Gradient Boosting (XGBoost) . . . . . . . . . . . . . 17 2.1.3. Regresión Lineal: Hipótesis . . . . . . . . . . . . . . . . . . . . 18 2.1.4. Regresión Lineal Simple . . . . . . . . . . . . . . . . . . . . . 18 2.1.5. Regresión Lineal Múltiple . . . . . . . . . . . . . . . . . . . . 21 2.2. Indicadores técnicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.1. Moving Average (MA) . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2. Parabolic Stop-and-Reverse (SAR) . . . . . . . . . . . . . . . 23 2.2.3. Relative Strength Index (RSI) . . . . . . . . . . . . . . . . . . 24 2.2.4. MACD Oscillator (MACD) . . . . . . . . . . . . . . . . . . . 24 3. Dataset 25 4. Metodología 27 4.1. Planificación temporal . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2. Desarrollo del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2.1. Fase 1. Entendimiento del negocio: Alcance y definición del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2.2. Fase 2. Importación y entendimiento de los datos . . . . . . . 29 4.2.3. Fase 3. Preparación de los datos . . . . . . . . . . . . . . . . . 33 4.2.4. Fase 4. Modelado . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2.5. Fase 5. Evaluación . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.6. Fase 6. Despliegue . . . . . . . . . . . . . . . . . . . . . . . . 49 3 ÍNDICE GENERAL 4 5. Resultados y conclusiones 50 Results and conclusions 53 Agradecimientos 56 Bibliografía 58 A. Código en R del proyecto 59 B. Otras entidades 62 Índice de figuras 2.1. Comparativa entre u y û . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.1. Diagrama de Gantt del trabajo . . . . . . . . . . . . . . . . . . . . . 27 4.2. Datos iniciales de BNP Paribas y Microsoft respectivamente . . . . . 30 4.3. Gráfico OHLC de BNP Paribas . . . . . . . . . . . . . . . . . . . . . 31 4.4. Gráfico OHLC de Microsoft . . . . . . . . . . . . . . . . . . . . . . . 31 4.5. Gráfico de descomopsición temporal de BNP Paribas . . . . . . . . . 32 4.6. Gráfico de descomopsición temporal de Microsoft . . . . . . . . . . . 33 4.7. Gráfico de MA de BNP Paribas . . . . . . . . . . . . . . . . . . . . . 34 4.8. Gráfico de MA de Microsoft . . . . . . . . . . . . . . . . . . . . . . . 34 4.9. Gráfico de SAR de BNP Paribas . . . . . . . . . . . . . . . . . . . . . 35 4.10. Gráfico de SAR de Microsoft . . . . . . . . . . . . . . . . . . . . . . . 35 4.11. Gráfico de RSI de BNP Paribas . . . . . . . . . . . . . . . . . . . . . 36 4.12. Gráfico de RSI de Microsoft . . . . . . . . . . . . . . . . . . . . . . . 36 4.13. Gráfico de MACD de BNP Paribas . . . . . . . . . . . . . . . . . . . 37 4.14. Gráfico de MACD de Microsoft . . . . . . . . . . . . . . . . . . . . . 37 4.15. Conjuntos de datos finales de BNP Paribas y Microsoft respectivamente 38 4.16. Ejemplo de árbol de regresión sencillo . . . . . . . . . . . . . . . . . . 40 4.17. Predicción con XGBoost (gbtree) de BNP Paribas . . . . . . . . . . . 41 4.18. Predicción con XGBoost (gbtree) de Microsoft . . . . . . . . . . . . . 41 4.19. Predicción con XGBoost(gblinear) de Microsoft . . . . . . . . . . . . 42 4.20. Predicción con XGBoost(gblinear) de BNP Paribas . . . . . . . . . . 42 4.21. Función summary() de BNP Paribas y Microsoft respectivamente . . 43 4.22. Gráficos para comprobar las hipótesis con BNP Paribas . . . . . . . . 44 4.23. Gráficos para comprobar las hipótesis con Microsoft . . . . . . . . . . 45 4.24. Predicción con Regresión Lineal Múltiple de BNP Paribas . . . . . . 46 4.25. Predicción con Regresión Lineal Múltiple de Microsoft . . . . . . . . 46 5.1. Resumen de las predicciones realizadas . . . . . . . . . . . . . . . . . 51 5.2. Summary of predictions made . . . . . . . . . . . . . . . . . . . . . . 54 B.1. Predicciones realizadas de Citigroup y Google . . . . . . . . . . . . . 62 5 Índice de cuadros 5.1. Resumen de las métricas calculadas . . . . . . . . . . . . . . . . . . . 52 5.2. Summary of calculated metrics . . . . . . . . . . . . . . . . . . . . . 55 B.1. Métricas calculadas de Citigroup y Google . . . . . . . . . . . . . . . 63 6 Capítulo 1 Introducción y objetivos principales La predicción de la evolución del precio de las acciones de la bolsa de valores es un tema que lleva estudiándose desde hace mucho tiempo. Sin embargo, en las últimas décadas, con el desarrollo del Data Science y de los algoritmos de Machine Learning, se abre una nueva posibilidad para realizar estudios como este. La ciencia de datos (Data Science) [1] es una disciplina científica que se ocupa del análisis de grandes fuentes de datos para extraer información, comprender la realidad y descubrir patrones. Existe una gran diversidad de algoritmos que se utilizan en el área del Data Science para la creación de modelos tanto descriptivos como predictivos. En este trabajo, desde un punto de vista amplio y general, se pretende comparar los mode- los lineales frente a los modelos basados en árboles de decisión para el pronóstico de la evolución del precio de las acciones de entidades que coticen en la bolsa de valores. Para ello, concretamente, el trabajo se centra en los algoritmos de Machine Lear- ning XGBoost y Regresión Lineal Múltiple para la creación del modelo predictivo mencionado, es decir, para la predicción de la evolución del precio de las acciones. XGBoost es una técnica reciente que implementa gradient boosting, usualmente con modelos de árboles de decisión, y Regresión Lineal Múltiple es un modelo lineal clásico. La motivación de este trabajo surge de los resultados obtenidos en el Trabajo de Fin de Grado de Administración y Dirección de Empresas [2], donde se pone de manifiesto que XGBoost presenta ciertas limitaciones en la predicción de series temporales, que es el caso del precio de las acciones. Como veremos posteriormente, estas limitaciones tienen que ver con que el algoritmo, en su modo habitual de funcionamiento con árboles de decisión, no puede extrapolar. De esta forma, funciona bien en ciertos casos pero no funciona bien en otros donde extrapolar es necesario. Lo que se trata es de proponer un algoritmo a comparar con XGBoost y, por lo tanto, es interesante que el algoritmo en cuestión supere estas limitaciones y funcione bien en ambos casos. Por ello, se propone el algoritmo de Regresión Lineal Múltiple frente a XGBoost y se realiza una comparación de la eficacia de cada uno que permita determinar cuál de ellos es mejor opción en cada caso. Visto desde una perspectiva más amplia, se enfrenta a modelos basados en árboles de decisión (en este caso, XGBoost) frente a modelos lineales (en este caso, Regresión Lineal Múltiple) para la predicción de la evolución del precio de las acciones. Para ello, en este trabajo se va a desarrollar un proyecto de Data Science con 7 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS PRINCIPALES 8 el que se elabore un modelo predictivo para el pronóstico de los precios de las ac- ciones con Regresión Lineal Múltiple y otro con XGBoost, de forma que se puedan comparar. Aunque este trabajo se centra en mayor medida en Regresión Lineal Múl- tiple, el propósito principal del trabajo es comparar dicho algoritmo con XGBoost y proponerlo como posible alternativa para la predicción de acciones. Para ello, es necesario centrarse no solo en Regresión Lineal Múltiple, sino también en XGBoost y elaborar un modelo predictivo con ambos algoritmos para proceder seguidamente a su comparación y a la determinación de una serie de conclusiones. Con todo ello, se podrían resumir los objetivos principales de este trabajo en los que se exponen a continuación: • Proponer Regresión Lineal Múltiple para la predicción del precio de las ac- ciones frente a XGBoost y realizar una comparación entre ambos algoritmos. Al realizar esto, lo que se enfrenta desde una visión más amplia es a modelos lineales frente a modelos de árboles de decisión para la predicción del precio de las acciones. Esta es la motivación del trabajo y supone por ello el principal objetivo que marca el desarrollo del mismo. • Comprender, en términos generales, el funcionamiento de XGBoost y de Re- gresión Lineal Múltiple. • Aunque este trabajo se centra en mayor medida en el los algoritmos, también se busca comprender algunas técnicas de pronóstico de acciones, como los indicadores técnicos. • Introducirse en el área del Data Science y desarrollar, siguiendo una meto- dología adecuada, un proyecto de esta área con el que elaborar los modelos predictivos deseados con Regresión Lineal Múltiple y con XGBoost. Introduction and main objectives Stock price evolution prediction is a subject that has been studied for a long time. However, in recent decades, with the development of Data Science and Machine Learning algorithms, a new possibility has opened up to carry out studies like this. Data Science [1] is a scientific discipline that deals with the analysis of large data sources to extract information, understand reality and discover patterns. There is a great diversity of algorithms that are used in the area of Data Science for the creation of both descriptive and predictive models. In this project, from a broad and general point of view, it is intended to compare linear models against decision tree-based models for stock price prediction of entities that are listed on the stock market. For that purpose, specifically, the project focuses on the Machine Learning XGBoost and Multiple Linear Regression algorithms for the creation of the mentioned predictive model, that is, for the stock price evolution prediction. XGBoost is a recent technique that implements gradient boosting, usually with decision tree models, and Multiple Linear Regression is a classic linear model. The motivation for this piece of work arises from the results obtained in the Final Degree Project in Business Administration and Management [2], where it is shown that XGBoost has certain limitations in the prediction of time series, which is the case of share price. As we will see later, these limitations have to do with the fact that the algorithm, in its usual mode of operation with decision trees, cannot extrapolate. In this way, it works well in certain cases but does not work well in others where extrapolation is necessary. The idea is to propose an algorithm to compare with XGBoost and, therefore, it is interesting that the algorithm in question overcomes these limitations and works well in both cases. For this reason, the Multiple Linear Regression algorithm is proposed against XGBoost and a comparison of the effectiveness of each one is made to determine which of them is the best option in each case. Seen from a broader perspective, it pits decision tree-based models (in this case, XGBoost) against linear models (in this case, Multiple Linear Regression) for stock price prediction. To that effect, in this piece of work a Data Science project is going to be developed with which a predictive model is elaborated for stock price forecast with Multiple Linear Regression and another with XGBoost, of so that they can be compared. Although this piece of work focuses more on Multiple Linear Regression, the main purpose is to compare said algorithm with XGBoost and propose it as a possible alternative for stock prediction. To do this, it is necessary to focus not only on Multiple Linear Regression, but also on XGBoost and develop a predictive model with both algorithms to proceed with their comparison and the determination of a series of conclusions. 9 CAPÍTULO 1. INTRODUCCIÓN Y OBJETIVOS PRINCIPALES 10 With all this in mind, the main objectives of this piece of work could be sum- marized as follows: • Propose Multiple Linear Regression for stock price prediction against XGBoost and compare both algorithms. In doing this, what we are dealing with from a broader view is linear versus decision tree models for stock price forecasting. This is the motivation of the project and is therefore the main objective that marks its development. • Understand, in general terms, how XGBoost and Multiple Linear Regression work. • Although this paper focuses more on algorithms, it also seeks to understand some stock forecasting techniques, such as technical indicators. • Enter the area of Data Science and develop, following an appropriate metho- dology, a project in this area with which to develop the desired predictive models with Multiple Linear Regression and with XGBoost. Capítulo 2 Marco Teórico En este capítulo se lleva a cabo un proceso de estudio y revisión bibliográfica mediante el cual se pretende explicar, de manera teórica, los conceptos principales que serán necesarios en el desarrollo del proyecto en el capítulo 4 (Metodología). 2.1. Algoritmia La algoritmia se refiere, como la propia palabra indica, a los algoritmos que van a ser utilizados en el proyecto para la creación de los modelos predictivos. Como ya se ha comentado, este trabajo propone Regresión Lineal Múltiple frente a XGBoost para la predicción de los precios de las acciones. Por ello, es necesario entender ambos algoritmos y elaborar un modelo predictivo con cada uno, de forma que puedan compararse posteriormente. 2.1.1. Gradient boosting XGBoost implementa el algoritmo de gradient boosting, por lo que parece razona- ble comprender el funcionamiento de este para comprender cómo trabaja XGBoost. Gradient boosting (capítulo 2 de [3]) es una de las técnicas más potentes para construir modelos de predicción. El boosting surge a partir de la idea de que un modelo débil puede modificarse de forma que se convierta en un modelo mejor. Así lo comenta Michael Kearns en 1988 en el libro Thoughts on Hypothesis Boosting, donde marca como objetivo lograr un algoritmo eficiente para convertir hipótesis relativamente débiles en hipótesis realmente buenas. La primera realización exitosa de boosting fue Adaptive Boosting (AdaBoost). Posteriormente, AdaBoost se fue combinando junto con otros algoritmos relacionados y se desarrollaron hasta llegar a lo que hoy se conoce como gradient boosting o gradient tree boosting. A continuación se procede a explicar detalladamente el algoritmo. Como primera aproximación a este se explica su funcionamiento general y los elementos principales que emplea para explicar posteriormente las matemáticas que hay detrás del mismo. 11 CAPÍTULO 2. MARCO TEÓRICO 12 2.1.1.1. Funcionamiento general del algoritmo Respecto a su funcionamiento, gradient boosting implica tres elementos princi- pales: • Una función de coste a optimizar Una función de coste, de pérdida o de error es una función declarada con el objetivo de minimizarla ya que lo que representa es que queremos minimizar el error (o pérdida, o coste) (página 82 de [4]). Una función de coste debe condensar fielmente todos los aspectos buenos y malos de un modelo, posiblemente complejo, en un solo número (en un valor escalar) de tal manera que una mejora en ese número suponga acercarse progresivamente a un modelo mejor. De esta forma, es importante que la función represente fielmente nuestros objetivos de diseño (página 155 de [5]). Por ello, la función de coste utilizada depende del tipo de problema que se esté resolviendo, cumpliendo siempre que debe ser diferenciable, ya que será necesario derivarla para poder buscar su mínimo. Por ejemplo, en casos de regresión es común usar un error cuadrático y para clasificación se suele utilizar una pérdida logarítmica. El objetivo del algoritmo es minimizar la función de coste. • Un modelo débil para hacer predicciones El modelo débil que suele emplearse en gradient boosting son los árboles de decisión, aunque pueden utilizarse otros modelos. Específicamente, lo que se suele emplear es árboles de regresión. Estos devuelven valores reales para las divisiones o ramificaciones que realizan y su salida se puede sumar, lo que permite agregar salidas de modelos posteriores y corregir residuos en las predicciones. Resulta importante aclarar que un árbol de regresión es aquel en el que la variable objetivo es continua (frente a los árboles de clasificación con variables discretas). Un árbol de regresión consiste en hacer preguntas de tipo ¿x ≤ k? para cada variable ex- plicativa, de forma que el espacio de las variables queda dividido en hiper-rectángulos y todas las observaciones que queden dentro de un hiper-rectángulo tendrán el mismo valor estimado ŷ. • Un modelo aditivo para agregar modelos débiles para minimizar la función de pérdida El modelo aditivo consiste en un proceso iterativo y secuencial en el que se agregan árboles de uno en uno de forma que con cada iteración se debe reducir el valor de la función de coste. Se utiliza un procedimiento de descenso de gradiente para minimizar la pérdida al agregar árboles. Por lo general y de manera tradicional, el descenso de gradiente se utiliza pa- CAPÍTULO 2. MARCO TEÓRICO 13 ra minimizar un conjunto de parámetros, como pueden ser los coeficientes en una ecuación de regresión. De esta forma, después de calcular el error, los parámetros se actualizan para minimizar dicho error. En este caso, en lugar de parámetros, se tienen submodelos de aprendizaje dé- biles: los árboles de decisión. De esta manera, tras calcular el error, realizando el descenso de gradiente se agrega al modelo un árbol que reduzca la pérdida. Esto es posible ya que cada árbol a agregar se elabora a partir de los residuos (los errores de predicción o estimación) del árbol anterior. A este enfoque se le conoce como descenso de gradiente funcional o con funciones. La salida del nuevo árbol se agrega a la salida de la secuencia de árboles existente tratando de mejorar de esta manera la salida final del modelo. Comúnmente, se agrega un número fijo de árboles o bien se agregan árboles hasta que el nivel de pérdida alcance un nivel aceptable. 2.1.1.2. Matemáticas detrás del algoritmo El algoritmo de gradient boosting tal y como lo desarrolló Jerome H. Friedman [6, 7] se expone a continuación y se procede a explicarlo paso a paso. En concreto, se explica para el caso más común en el que los modelos débiles son árboles de decisión (árboles de regresión concretamente, usados para un problema de regresión). Input: Unos datos {(xi, yi)}ni=1 y una función de coste diferenciable L (yi, F (x)). Paso 1: Inicializar el modelo con un valor constante: F0(x) = argminγ ∑n i=1 L (yi, γ) Paso 2: Desde m = 1 hasta M: • Parte A. Calcular rim = − [ ∂L (yi, F (xi)) ∂F (xi) ] F (x)=Fm−1(x) para i = 1, ..., n • Parte B. Crear un árbol de decisión con los valores rim calculados y calcular las regiones terminales Rjm para j = 1, ... Jm • Parte C. Para j = 1, ... Jm, calcular γjm = argminγ ∑ xi∈Rij L (yi, Fm−1(xi) + γ) • Parte D. Actualizar Fm(x) = Fm−1(x) + v ∑Jm j=1 γmI (x ∈ Rjm) Paso 3: Salida FM(x) Se procede a continuación a explicar el significado de cada uno de los pasos del algoritmo de gradient boosting. • Input CAPÍTULO 2. MARCO TEÓRICO 14 Unos datos {(xi, yi)}ni=1 y una función de coste diferenciable L (yi, F (x)) En este paso previo se indica que los datos de entrada del algoritmo son, primero, un conjunto de entrenamiento {(xi, yi)}ni=1. Las xi se refieren a cada fila u observación de las variables explicativas que se utilizan para predecir la variable objetivo y, mientras que las yi son las medidas observadas de la variable objetivo para cada fila. Además se indica que hay n número de filas u observaciones del tipo (xi, yi). Por otro lado, también se necesita una función de pérdida o de coste diferencia- ble L (yi, F (x)) para evaluar cómo de bien se predice y. La función de coste más comúnmente utilizada en gradient boosting para problemas de regresión es: 1/2(Observado− Predicho)2 (2.1) Donde Observado es yi y Predicho es F (x). Es decir, se utiliza el cuadrado de los residuos pero multiplicado por 1/2. La razón de multiplicar por 1/2 es que cuando esta se deriva respecto del valor predicho usando la regla de la cadena y multiplicando por −1 se obtiene: (−1) · ∂ Predicho 1 2 (Observado− Predicho)2 = −2/2(Observado− Predicho) = −(Observado− Predicho) Es decir, se obtiene el residuo en negativo, lo cual simplifica los desarrollos mate- máticos. • Paso 1 Inicializar el modelo con un valor constante: F0(x) = argminγ ∑n i=1 L (yi, γ) Se comienza inicializando el modelo a un valor constante determinado por: F0(x) = argminγ n∑ i=1 L (yi, γ) En esta expresión, L es la función de coste, yi son los valores observados y γ son los valores predichos. Se hace un sumatorio de forma que se suma una función de coste para cada observación (calculada con sus valores observados y predichos). Teniendo esto, se trata de buscar el valor predicho (γ) que minimice el sumatorio. Si esto se desarrolla haciendo uso de la función de coste mostrada anteriormente (2.1), se llega a que este valor constante coincide con la media aritmética de las n observaciones de y. Es decir, que la primera predicción que se hace de y es la media de las observaciones de esta en el conjunto de entrenamiento. Esto significa que el primer valor predicho (el primer modelo débil) es simplemente una hoja y predice siempre (para cualquier conjunto de x) la media de las y observadas. CAPÍTULO 2. MARCO TEÓRICO 15 • Paso 2 Desde m = 1 hasta M: El paso dos consiste en un bucle en el que se crean todos los M árboles. En la práctica, es común crear M=100 árboles. Parte A. Calcular rim = − [ ∂L (yi, F (xi)) ∂F (xi) ] F (x)=Fm−1(x) para i = 1, ..., n En este paso se utiliza la técnica de descenso de gradiente. De esta manera, se calcula el gradiente de la función de coste, es decir, se calcula la derivada de esta respecto del valor predicho. Sabemos que si calculamos esta derivada obtenemos: −(Observado− Predicho). Como la derivada lleva delante un signo negativo, lo que se obtiene es (Observado− Predicho), es decir, se obtiene el residuo. Una vez se tiene esto, como se indica que F (x) = Fm−1(x), el valor Predicho que se utiliza es el del modelo anterior, con lo que se trata de los residuos obtenidos con el modelo anterior para cada observación. Es decir, se calcula, para el anterior modelo o árbol (m − 1), un residuo (rim) por cada observación (i) para crear el árbol en el que nos encontramos (m). Por ejemplo, si nos encontramos en la primera vuelta del bucle, Predicho equivale a la media de las observaciones de y y se calcula el residuo de cada observación de y del conjunto de entrenamiento respecto de dicho valor de Predicho. Es importante resaltar que los valores rim calculados se llaman realmente pseudo- residuos. En este caso, como utilizamos la función de coste (2.1), terminamos calcu- lando el residuo normal. Pero si usamos otras funciones de coste, se llega a valores parecidos al residuo, pero no exactamente. De ahí el nombre de pseudo-residuos. Parte B. Crear un árbol de decisión con los valores rim calculados y calcular las regiones terminales Rjm para j = 1, ... Jm En este paso se construye un árbol de regresión para predecir los residuos del modelo anterior, en vez de para predecir y. De esta manera, se utilizan las x pero para predecir los residuos del árbol anterior. Además se calculan “regiones terminales Rjm”. Estas regiones son las hojas del árbol, que están formadas por los resiudos del árbol anterior (rim). Una región Rjm CAPÍTULO 2. MARCO TEÓRICO 16 es la hoja j del árbol m. Con esto tenemos creado el árbol pero cada hoja no tiene un único valor ya que, para cierta condición del tipo “x ≤ k” con la cual se ramifica el árbol, puede haber varios rim que la cumplan. El cálculo de un único valor para cada hoja a través de los valores que esta tenga se realiza en la siguiente parte. Parte C. Para j = 1, ... Jm, calcular γjm = argminγ ∑ xi∈Rij L (yi, Fm−1(xi) + γ) Como se ha mencionado, es posible que varios residuos terminen en una misma hoja, con lo cuál no se sabe cuál es exactamente el valor de salida de esta. De esta forma es necesario calcular un único valor de salida para cada hoja. Para cada hoja del árbol (Para j = 1, ... Jm) se calcula un valor de salida γjm. Este valor es el valor de γ que minimiza el sumatorio que se indica. Esta minimización es parecida a la realizada en el paso 1, con la diferencia de que en este caso en la función de coste se emplea la predicción anterior, mientras que en el paso 1 no había anterior predicción. Además el sumatorio del paso 1 incluye todas las observaciones, mientras que en este solo se incluyen, para cada hoja (Rjm), las observaciones cuyos residuos estén en dicha hoja. Si desarrollamos la expresión con la función de coste que se está empleando, se puede obtener que el valor de salida γjm para cierta hoja j del árbol m es la media aritmética de los residuos que la hoja j contiene. Esto es algo que se cumple con esta función de coste en concreto, la cual es muy utilizada. Parte D. Actualizar Fm(x) = Fm−1(x) + v ∑Jm j=1 γmI (x ∈ Rjm) En esta parte, se hace una nueva predicción (Fm(x)) para cada observación. Esta nueva predicción está basada en la suma de la anterior predicción realizada (con el anterior modelo, Fm−1(x)) y del árbol que se acaba de crear con los residuos del modelo anterior. Concretamente, lo que se suma del nuevo árbol es, para cada observación, el sumatorio de los valores de salida de todas las hojas (los γjm) en las que esta observación participe, multiplicado por v. Este v es la tasa de aprendizaje, la cual reduce el efecto de cada árbol en la predicción final, lo cual mejora la precisión en el tiempo. Todas estas partes del paso 2 se repiten M veces: se calculan residuos para las predicciones del modelo anterior (paso A), se crea un nuevo árbol con estos residuos (paso B), se calculan los valores de salida para cada hoja del árbol (paso C) y se realizan nuevas predicciones con la predicción anterior y el nuevo árbol (paso D). CAPÍTULO 2. MARCO TEÓRICO 17 • Paso 3 Salida FM(x) Este paso es simplemente el valor de la predicción final del algoritmo de gradient boosting que se obtiene al terminar el bucle del paso 2. De esta forma, para ciertos valores de x, se puede hacer uso de FM(x) para predecir el valor de y. • Resumen A modo de resumen, el algoritmo parte de unos datos formados por n obser- vaciones de una serie de variables explicativas (x) y de una variable objetivo (y) que conforman el conjunto de entrenamiento. También se tiene una función de coste diferenciable que suele ser 1/2(Observed− Predicted)2. Primero se calcula un primer modelo con el que se obtiene una predicción inicial que, haciendo uso de la mencionada función de coste, coincide con la media de las observaciones de y del conjunto de entrenamiento. Después se lleva a cabo un bucle en el que cada iteración corresponde a un nuevo modelo y una nueva y mejorada predicción. En este bucle se calcula primero el gradiente de la función de coste, el cual coincide con los pseudo-residuos del modelo anterior. Una vez calculados estos, se crea un nuevo árbol con ellos y se calcula un valor de salida único para cada hoja. Por último, se crea una nueva predicción en función de la predicción anterior y del nuevo árbol creado. Este proceso se repite durante varias iteraciones, que suelen ser 100. 2.1.2. eXtreme Gradient Boosting (XGBoost) XGBoost (capítulo 3 de [3], [8]) significa eXtreme Gradient Boosting y se trata de un algoritmo de Machine Learning desarrollado inicialmente por Tianqi Chen. Actualmente cuenta con la colaboración y contribución de muchos desarrolladores. Una vez entendido el funcionamiento del algoritmo de gradient boosting, se puede decir que XGBoost es una biblioteca que implementa dicho algoritmo, por lo que se basa en la agregación iterativa de nuevos modelos (que son, por lo general, árboles de decisión) para corregir los errores de los modelos existentes utilizando el descenso de gradiente para minimizar la pérdida en la agregación de los nuevos modelos. XGBoost utiliza como función de pérdida por defecto para tareas de regresión la función Squared Loss (como la que se ha mencionado en el desarrollo del algoritmo de gradient boosting como función de coste utilizada usualmente), aunque se puede indicar otra. En R se determina con el parámetro objective de la función xgboost(). La biblioteca de XGBoost pretende ser, tal y como se indica en la descripción de CAPÍTULO 2. MARCO TEÓRICO 18 su proyecto, una biblioteca de gradient boosting escalable, portátil y distribuida. Al- gunas características que distinguen a XGBoost frente a otros algoritmos de gradient boosting son una penalización inteligente de los árboles, una reducción proporcional de los nudos de las hojas, el uso del Impulso de Newton, parámetros de aleatoriza- ción extra, implementación en sistemas únicos, distribuidos y computación fuera del núcleo o la selección automática de características. XGBoost está altamente enfocado en la consecución de dos características: la velocidad computacional y el rendimiento del modelo. Por ello, es una buena opción si estas características conforman nuestros objetivos. XGBoost se puede descargar e instalar y después acceder desde una gran variedad de interfaces como Python, R, C++, Java o Julia. 2.1.3. Regresión Lineal: Hipótesis Regresión Lineal es un modelo matemático empleado para aproximar la relación de dependencia entre una variable objetivo o dependiente y una o varias variables independientes, explicativas o predictoras con un error aleatorio. Las hipótesis principales del modelo de Regresión Lineal son las siguientes [9]: • Linealidad: los datos a analizar (observaciones) han sido generados por un modelo lineal. • Y = β0 + β1x+ u (Simple) • Y = Xβ + U (Múltiple) • Homocedasticidad: la varianza de la perturbación aleatoria es constante y no depende de X. • V (U) = σ2 • Independencia: las perturbaciones aleatorias son independientes entre sí. • E(ui ∗ uj) = 0,∀i ̸= j • La media de la perturbación aleatoria es 0. • E(U) = 0 • Normalidad: la perturbación aleatoria sigue una distribución normal. • U ≈ N(0, σ2) 2.1.4. Regresión Lineal Simple Antes de estudiar la Regresión Lineal Múltiple, conviene familiarizarse con la Regresión Lineal Simple. Por lo general, un modelo de Regresión Lineal Simple CAPÍTULO 2. MARCO TEÓRICO 19 ([9, 10], capítulo 11 de [11]) consiste en estudiar la relación que existe entre una variable dependiente (Y ) y una variable independiente o explicativa (X) a través de una recta. • Formulación del modelo El modelo de Regresión Lineal Simple se puede formular como, para cada obser- vación i: yi = β0 + β1xi + ui (2.2) En este modelo, y es la variable objetivo o dependiente, x es la variable independiente o explicativa y u es una perturbación o error aleatorio. De esta manera, en la variable y influyen dos efectos: • El efecto de la variable explicativa (x), de la cual podemos conocer su valor. • El efecto de la perturbación aleatoria (u), que representa otros factores que afectan a la variable y. Este modelo representa a la población completa (al conjunto total de datos) y cualquier observación (xi, yi) que se realice de esta cumple el modelo. Es decir, si se dibujara un diagrama de dispersión con todos los puntos de la población, todos y cada uno de ellos cumpliría el modelo dado por (2.2). Para este modelo, la ecuación expresada en (2.3) es la recta que mejor representa a cada observación o punto. Sin embargo, esta recta no se puede conocer ya que se desconoce el valor de los parámetros β0 y β1. yi = β0 + β1xi (2.3) De esta manera, el modelo dado por (2.2), que representa a la población de estudio, y la ecuación que mejor lo representa (2.3) son desconocidos ya que los valores de los parámetros β0 y β1 no se conocen. Por ello, es necesario recoger una muestra de esta población con la que poder llevar a cabo una estimación de la forma: ŷi = β̂0 + β̂1xi (2.4) La ecuación anterior representa el modelo estimado a través de la muestra, que en este caso viene dado por una recta de regresión estimada o ajustada. Este es el modelo que se quiere calcular en este proyecto (aunque con Regresión Lineal Múltiple) para llevar a cabo la predicción. La diferencia entre el valor observado o real de la variable dependiente (yi) y el valor estimado de la misma (ŷi) viene dada por la estimación del error o residuo (ûi). De esta forma, se cumple que: ûi = yi − ŷi (2.5) De (2.4) y (2.5) se deriva que cualquier observación de la población, además de cumplir (2.2), también cumple: yi = β̂0 + β̂1xi + ûi (2.6) CAPÍTULO 2. MARCO TEÓRICO 20 A modo de resumen, la Figura 2.1 muestra por un lado un cierto punto (xi, yi). Este punto cumple el modelo dado por (2.2) y también por (2.6). Por otro lado, la recta más vertical sigue la ecuación expresada en (2.3). Esta es la recta que mejor representa al modelo pero cuyos parámetros no podemos conocer y la distancia entre el punto (xi, yi) de la población y esta recta viene dada por la perturbación aleatoria (ui). La otra recta que se muestra en la gráfica representa la recta estimada expresada en (2.4). Esta es la recta que se ha calculado a través de la estimación realizada de los parámetros por mínimos cuadrados y la distancia del punto (xi, yi) a la misma viene dada por el residuo (ûi). Figura 2.1: Comparativa entre u y û • Estimación de los parámetros: Método de mínimos cuadrados Para elaborar el modelo estimado es necesario hacer una estimación de los pará- metros a través de una cierta muestra de la población. La estimación de los paráme- tros del modelo se realiza por el método de mínimos cuadrados, aunque también se puede realizar por otros métodos, como el método de máxima verosimilitud (el cual llega a los mismos resultados). La función lm() de R utiliza el método de mínimos cuadrados. El método de mínimos cuadrados consiste en estimar los parámetros de la recta (β0 y β1) de tal forma que se minimice el residuo (ûi). Es decir, se buscan los valores de β0 y β1 que minimizan la distancia de cada punto a la recta de regresión. Concretamente, este método minimiza la suma de los cuadrados de los residuos:∑ (ûi) 2 = ∑ (yi − ŷi) 2 = ∑ (yi − (β̂0 + β̂1xi)) 2 Para minimizar la anterior expresión, si esta se deriva respecto de β̂0 y β̂1, se llega a la obtención de la estimación de los parámetros: β̂0 = ȳ − β̂1x̄ (2.7) CAPÍTULO 2. MARCO TEÓRICO 21 β̂1 = cov(x, y) var(x) (2.8) De esta manera, se ha obtenido una expresión de los parámetros en función de las medias, varianzas y covarianzas muestrales, las cuales se pueden calcular. 2.1.5. Regresión Lineal Múltiple Mientras que en la Regresión Lineal Simple se estudia la influencia que ejerce una variable explicativa (x) en una variable dependiente (y), con la Regresión Lineal Múltiple (capítulo 12 de [11], [12]) se utiliza más de una variable explicativa. De esta manera, se obtiene la ventaja de utilizar más información en la elaboración del modelo y, por tanto, realizar estimaciones más precisas. Aunque la base es la misma, al utilizar más de una variable explicativa, surgen algunas diferencias frente a la Regresión Lineal Simple. • Formulación del modelo Al igual que con Regresión Lineal Simple, se plantea que la variable dependiente (y) es una combinación lineal de las variables explicativas (x) y una perturbación aleatoria (u): yi = β0 + β1x1i + β2x2i + ...+ βkxki + ui (2.9) El modelo anterior también se puede representar de forma matricial como: Y = Xβ + U (2.10) Es importante resaltar que la primera columna de la matriz X está compuesta de unos, que multiplican a β0 (término independiente). De nuevo, el modelo expuesto en (2.9) y (2.10) representa a la población y sus parámetros son desconocidos, con lo que es necesario extraer una muestra con la que poder estimarlos: Ŷ = Xβ̂ (2.11) Este es el modelo estimado y es el modelo que se quiere calcular en este trabajo para llevar a cabo la predicción deseada. En este caso no se trata de una recta, sino de un hiperplano ya que cuenta con varias variables explicativas. Al igual que con Regresión Lineal Simple, la diferencia entre el valor real (Y ) y el valor estimado (Ŷ ) viene dada por la estimación del error o residuo, de forma que: Û = Y − Ŷ (2.12) De esto se deduce que la variable Y, además de por el modelo expuesto en (2.10) y (2.11), también viene dada como: Y = Xβ̂ + Û (2.13) • Estimación de los parámetros: Método de mínimos cuadrados CAPÍTULO 2. MARCO TEÓRICO 22 Al igual que con Regresión Lineal Simple, se quiere calcular un hiperplano de regresión (en vez de una recta de regresión) tal que se minimice la suma de los cuadrados de los residuos:∑ (ûi) 2 = ÛT ∗ Û = (Y −Xβ)T ∗ (Y −Xβ) Siguiendo una línea similar a la seguida con Regresión Lineal Simple, si se minimiza la expresión anterior derivándola respecto de β̂, se puede llegar a la expresión: β̂ = (XTX)−1XTY (2.14) 2.2. Indicadores técnicos Aunque en este trabajo el foco de interés se pone principalmente en los algoritmos y en su comparación, también resulta necesario comprender una serie de conceptos económicos que se utilizan en la predicción de los precios de las acciones. Aquí entran los indicadores técnicos. Los indicadores técnicos [13, 14, 15] son una serie de herramientas matemáticas que se pueden emplear para predecir el movimiento de los precios de las acciones. Su esencia consiste en la conversión matemática del precio de un instrumento financiero con la intención de pronosticar los futuros cambios de precios. Se pueden emplear para determinar si una acción está sobrevendida o sobrecomprada (es decir, si su precio se encuentra por debajo o por encima de su valor intrínseco) o si la tendencia del precio es débil o fuerte, de manera que se puedan pronosticar movimientos futuros de su precio. Por lo general, la mayoría de los indicadores son parecidos entre sí y queda a elección personal el utilizar unos u otros. Se puede distinguir dos tipos de indicadores: los indicadores de tendencia y los osciladores. Los indicadores de tendencia determinan la tendencia del momento en el mercado financiero. Indican la dirección del movimiento del precio aunque son más lentos que los osciladores en detectar cambios de tendencia. Algunos indicadores de tendencia son los Moving Average (MA) y el Parabolic SAR. Los osciladores, por su parte, miden la desviación de los precios de su valor me- dio. Son indicadores que están constantemente oscilando atravesando determinados niveles con movimientos que pueden ser más o menos agresivos. Avisan con mayor rapidez que los indicadores de tendencia de los cambios de tendencia, aunque dan más señales falsas. Entre estos, se encuentran indicadores como el RSI o el MACD. Como se puede observar en la Enciclopedia de los Indicadores Técnicos [14], existe una gran cantidad de indicadores. A continuación se procede a explicar los indicadores que se utilizan en este proyecto. CAPÍTULO 2. MARCO TEÓRICO 23 2.2.1. Moving Average (MA) El indicador técnico “Media Móvil” (Moving Average, MA) calcula el valor medio de un instrumento durante un determinado periodo de tiempo. Puede ser calculado para cualquier conjunto secuencial de datos, ya se trate de precios de apertura y cierre, como de precios máximos y mínimos, volumen o incluso valores de otros indicadores. La interpretación más usual de este tipo de indicadores consiste en comparar la dinámica que siguen con la del propio precio. De esta forma, si el precio del instrumento se encuentra por encima de la media móvil aparece la señal de compra y, en caso contrario, aparece la señal de venta. Existen varios tipos de medias móviles y en este proyecto se va a hacer uso de la simple y de la exponencial. • Simple Moving Average (SMA) La media móvil simple o aritmética (Simple Moving Average, SMA) es uno de los indicadores más simples, más antiguos y más usados. Se calcula como cualquier media aritmética: se calcula la suma de los precios de cierre del instrumento durante un determinado número de periodos y se divide esta por el número de periodos. SMA = ∑N i=1 CLOSE(i) N (2.15) CLOSE(i): precio de cierre del período actual N : número de períodos calculados • Exponential Moving Average (EMA) Mientras que la SMA asigna el mismo peso a todos los precios, la media mó- vil suavizada exponencialmente (Exponential Moving Average, EMA) se calcula de forma que se asigna un mayor peso o valor a los últimos precios de cierre. Concreta- mente, se calcula mediante la adición de una cierta parte del precio de cierre actual al valor anterior de la media móvil. De esta manera, la EMA de P % se calcula: EMA = (CLOSE(i) ∗ P ) + (EMA(i− 1) ∗ (1− P )) (2.16) CLOSE(i): precio de cierre del período actual EMA(i− 1): valor de la media móvil para el período anterior P : parte de uso del precio de cierre actual 2.2.2. Parabolic Stop-and-Reverse (SAR) El indicador técnico “Sistema parabólico SAR” (Parabolic Stop-and-Reverse, SAR) es similar a la media móvil y ambos se dibujan en el gráfico de precios, lo CAPÍTULO 2. MARCO TEÓRICO 24 cual se debe a que ambos son indicadores de tendencia. La diferencia del SAR res- pecto de las medias móviles radica en que el SAR se mueve con más aceleración y puede cambiar su posición respecto al precio. Para posiciones largas (es decir, señales de compra debido a la creencia de que el precio subirá), el SAR inicial es igual al precio más bajo registrado durante la posición corta recién cerrada. El siguiente día y en adelante, se calcula como: SAR(i) = SAR(i−1)+ACCELERATION ∗ (HIGH(i−1)−SAR(i−1)) (2.17) Para posiciones cortas (es decir, señales de venta debido a la creencia de que el precio bajará), el SAR inicial es igual al precio más alto registrado durante la posición larga recién cerrada. El siguiente día y en adelante, se calcula como: SAR(i) = SAR(i− 1)+ACCELERATION ∗ (LOW (i− 1)−SAR(i− 1)) (2.18) ACCELERATION : factor de aceleración HIGH(i− 1): precio máximo para el período anterior LOW (i− 1): precio mínimo para el período anterior 2.2.3. Relative Strength Index (RSI) El indicador técnico “Índice de fuerza relativa” (Relative Strength Index, RSI ) es un oscilador que sigue el precio y oscila en el rango de 0 a 100. J. Wilder fue su creador y recomendaba utilizar su variante de 14 periodos, que sigue siendo muy utilizada. Posteriormente, también se ha utilizado el RSI de 9 y 25 periodos. El indicador RSI se puede calcular como: RSI = 100− (100/(1 + U/D)) (2.19) U : valor medio de los cambios de precios positivos D: valor medio de los cambios de precios negativos 2.2.4. MACD Oscillator (MACD) El indicador técnico “Convergencia/Divergencia de Medias Móviles” (Moving Average Convergence/Divergence, MACD) es un indicador dinámico que sigue la tendencia. Este indicador muestra la correlación de dos medias móviles del precio. Concretamente, se construye como la diferencia de dos media móviles exponenciales (EMA) con períodos de 12 y 26. Además, para definir con precisión los momentos oportunos de compra y venta, en el gráfico del MACD se dibuja una media móvil de 9 períodos, conocida como “línea de señal”. De esta manera, MACD y MACD Signal se calculan como: MACD = EMA(CLOSE, 12)− EMA(CLOSE, 26) (2.20) SIGNAL = SMA(MACD, 9) (2.21) Capítulo 3 Dataset En un proyecto de Data Science, los datos suponen una parte fundamental del mismo. Es por ello que parece conveniente realizar una aproximación a los mismos previa al desarrollo del proyecto. El dataset se refiere al conjunto de datos sobre los que se va a trabajar. En este caso, los datos están tabulados, es decir, expresados en forma de tabla. Concreta- mente, el dataset inicial sobre el que se va a trabajar está formado por los precios históricos diarios de las acciones de una determinada entidad que cotiza en bolsa durante un periodo de diez años. El dataset con los precios históricos se puede descargar de cualquier fuente de la que se puedan obtener este tipo de datos. En este caso se utiliza Yahoo Finance [16] y se descargan los datos de los precios diarios desde el 1 de febrero de 2012 hasta el 31 de enero de 2022 en formato “.csv”. Estos datos son de uso libre. El dataset utilizado sigue el siguiente formato: • Siete columnas: Date, Open, High, Low, Close, Adjusted Close, Volume. Cada una de estas columnas representa cada una de las variables observables del dataset. El significado de cada variable se explica a continuación. • Tantas filas como observaciones, que en este caso son diarias, se haga de estas variables durante los diez años escogidos. Cada fila, efectivamente, representa una observación de las siete variables. Una vez entendida la composición y el formato del dataset, es conveniente enten- der su significado, para lo cual se explica qué representa cada una de sus variables: • Date: representa la fecha (día, mes y año) en la que se realizó la observación. • Open: es el precio de la acción cuando la bolsa de valores abre en ese día. • High: es el precio máximo que alcanza la acción durante el día. • Low : es el precio mínimo que alcanza la acción durante el día. • Close: es el precio de la acción cuando la bolsa de valores cierra en ese día. • Adjusted Close: es el precio de cierre después de todos los ajustes relativos a todas las divisiones y distribuciones de dividendos aplicables. 25 CAPÍTULO 3. DATASET 26 • Volume: es el número de acciones negociadas durante el día. A pesar de que estos son los datos iniciales descargados, la variable que más se va a utilizar en este trabajo es el precio de cierre de las acciones, aunque también se utilizan el resto, excepto el precio de cierre ajustado y el volumen. En este trabajo se van a descargar, de Yahoo Finance, los datasets con las carac- terísticas mencionadas para dos entidades: BNP Paribas (BNP.PA.csv) y Microsoft (MSFT.csv). La primera se trata del banco más grande de Francia y Europa y uno de los más grandes del mundo por volumen de activos, mientras que la segunda es una de las empresas tecnológicas principales a nivel mundial. La elección de estas dos entidades radica en la diferente tendencia que siguen las series temporales de sus precios de cierre: mientras que la primera sigue una tendencia más o menos constante, la segunda sigue una tendencia muy creciente, sobre todo al final. Esto es determinante en este trabajo ya que para poder predecir en empresas como la segunda es necesario extrapolar, cosa que XGBoost no puede hacer y es el motivo por el que se propone, frente a esta limitación, Regresión Lineal Múltiple. Esto se detalla y se explica en el capítulo 4 (Metodología). Además, se descargan y se utilizan también datos de otras dos empresas: Citi- group y Google. Con estas empresas se sigue el mismo desarrollo que con las dos anteriores y se adjuntan como anexo del trabajo. Por último, es importante aclarar que el dataset referido en este apartado repre- senta los datos iniciales descargados pero no los datos finales con los que se elaborará el modelo. Estos datos serán explorados y tratados y, a partir de ellos, se calcula- rán una serie de indicadores técnicos que sí formarán el conjunto final con el que entrenar el modelo. Esto se explica en el desarrollo del proyecto, en el capítulo 4 (Metodología). Capítulo 4 Metodología En este capítulo se desarrolla la metodología seguida para llevar a cabo el proyec- to, tanto en lo que se refiere a la planificación temporal utilizada para su organización como al método de desarrollo empleado y sus distintas fases. 4.1. Planificación temporal En todo proyecto es conveniente seguir una planificación temporal que permita identificar, definir y programar las actividades específicas que son necesarias realizar para llevar a cabo el proyecto. Existen distintas herramientas de planificación temporal. En este proyecto se utiliza un Diagrama de Gantt. Un Diagrama de Gantt consiste en una herramienta gráfica que pretende exponer el tiempo de dedicación que se prevé a cada una de las diferentes actividades específicas. En un Diagrama de Gantt se muestra en el eje vertical las distintas actividades específicas que constituyen el proyecto y cada actividad tiene asignada una línea horizontal que será de mayor o menor longitud proporcionalmente al tiempo que se prevea para la realización de la misma. En el eje horizontal se indica la escala de tiempo adecuada para las actividades que se van a realizar. Figura 4.1: Diagrama de Gantt del trabajo En la Figura 4.1 se muestra la planificación llevada a cabo mediante un Dia- grama de Gantt. En el eje vertical, se muestran en negrita las actividades que se 27 CAPÍTULO 4. METODOLOGÍA 28 llevan a cabo en el proyecto y, en letra normal, las tareas relativas a cada una de estas actividades. Además, se muestran en cursiva algunas subtareas relevantes que conviene especificar, aunque de estas podrían definirse más. Para entender de manera correcta el diagrama, se aclara que cada actividad tiene los siguientes estados posibles: abierto (aún no se ha comenzado), en progreso (se está realizando), terminado (se ha terminado pero aún no se ha cerrado, sino que está sujeta a posibles modificaciones o cambios) y cerrado (se ha terminado y cerrado). Como el proyecto está finalizado, todas las actividades están cerradas. 4.2. Desarrollo del proyecto Para desarrollar un proyecto de una manera adecuada y organizada es convenien- te seguir un método de desarrollo o metodología que resulte conveniente. Existen diferentes métodos para proyectos de Data Science. En este proyecto se sigue el método Cross Industry Standard Process for Data Mining (CRISP-DM), que es el método que más se utiliza para proyectos de Data Mining y Data Science en la práctica. CRISP-DM [17, 18] consiste en seis fases iterativas a desarrollar a lo largo del proyecto. Estas fases, tal y como se indican en la guía de usuario de CRISP-DM, son las siguientes: entendimiento del negocio, entendimiento de los datos, preparación de los datos, modelado, evaluación y despliegue. No es necesario seguir estas fases de una manera completamente rígida. En este proyecto se sigue en líneas generales las fases de CRISP-DM a excepción de la última (despliegue). Esta fase cobra sentido cuando el modelo se dirige a una serie de usuarios finales y se pone este a su disposición. Sin embargo, en este caso el proyecto se elabora a modo de investigación personal y no tiene unos usuarios finales determinados a priori. De todos modos, queda abierto como trabajo futuro la opción de desarrollar esta fase ya que posiblemente existen clientes que podrían utilizar los modelos (por ejemplo, ciertos inversores). Antes de proceder al desarrollo de cada fase, es importante recordar que con este proyecto se quiere elaborar dos modelos a comparar posteriormente: uno con XGBoost y otro con Regresión Lineal Múltiple. Y ambos modelos tienen el mismo fin de la predicción del precio de las acciones. De esta manera, algunas fases son comunes o muy similares para ambos (como las fases de importación y tratamiento de los datos) y otras son diferentes. Además, estos dos modelos se van a llevar a cabo para dos entidades: BNP Pa- ribas y Microsoft. Como ya se ha mencionado, se eligen estas entidades debido a que cada una sigue una serie temporal diferente: BNP Paribas sigue una tendencia más o menos constante mientras que Microsoft sigue una tendencia creciente. Esta diferencia es importante debido a la limitación de XGBoost que se pretende solven- tar con Regresión Lineal Múltiple: la no posibilidad de extrapolación. En esto se CAPÍTULO 4. METODOLOGÍA 29 profundizará cuando esta limitación se ponga en evidencia, en la fase de modelado. Se procede a continuación a detallar el desarrollo seguido con cada una de las fases. Cabe mencionar que el acceso al código en R elaborado a lo largo del pro- yecto se puede encontrar al final del documento en el apéndice A (Código en R del proyecto). Para la elaboración del código se ha empleado R [19] y paquetes internos del mismo, RStudio [20] y los paquetes xgboost [21], TTR [22], tidyverse [23], plotly [24] y Metrics [25]. 4.2.1. Fase 1. Entendimiento del negocio: Alcance y definición del problema La primera fase que se lleva a cabo en el proyecto es la de entendimiento del negocio. En esta fase se evalúa la situación y se determinan los objetivos perseguidos y cómo estos se alinean con el proyecto, así como el alcance del mismo. La situación actual es que se ha puesto de manifiesto, con los resultados obtenidos en [2], que el algoritmo XGBoost en su modo normal de funcionamiento con árboles de decisión presenta una importante limitación en el caso de predicción de series temporales, como es el caso con la predicción de la evolución de los precios de las acciones. Esta limitación, como veremos cuando estudiemos su causa, se centra en que el algoritmo no puede extrapolar (veremos también que XGBoost tiene un modo de funcionamiento diferente al normal que podría solucionar esta situación aunque, quizás, no lo suficiente). Los objetivos principales perseguidos, como se menciona en el capítulo 1 (Intro- ducción y objetivos principales), son la presentación de Regresión Lineal Múltiple frente a XGBoost para la predicción de la evolución de los precios de las acciones y la comparación de ambos algoritmos, con el fin de determinar cuál es el algoritmo más eficiente en cada caso. Para alcanzar estos objetivos, el proyecto pretende elaborar dos modelos pre- dictivos (uno con cada algoritmo) y se evalúa cada uno de ellos de forma que se puedan comparar en términos de eficacia. El alcance de este proyecto se centra, a priori, en la investigación personal. Quedaría abierta a futuro la opción de desplegar el algoritmo dirigiéndolo a clientes en el mercado. 4.2.2. Fase 2. Importación y entendimiento de los datos En esta fase se lleva a cabo la recolección de los datos iniciales que se utilizan como input del proyecto, así como la importación, exploración y comprobación de la calidad de los mismos. De esta manera, lo primero es la descarga de los datos. Se descargan de CAPÍTULO 4. METODOLOGÍA 30 Yahoo Finance los datos históricos de los precios de las acciones de BNP Paribas y de Microsoft durante un periodo total de diez años (entre el 1 de febrero de 2012 y el 31 de enero de 2022). También podría utilizarse otra fuente distinta a Yahoo Finance siempre que se puedan descargar datos que sigan el mismo formato. El formato y composición de estos datos se ha explicado detalladamente en el capítulo 3 (Dataset). Posteriormente, después de haber importado las librerías necesarias, se procede a la importación de los datos en el proyecto de RStudio. Para ello, se hace uso de la función de R read_csv() y se comprueba que los datos se estén leyendo bien (por ejemplo, en este caso, el delimitador es una coma y la primera fila no está compuesta de datos sino de los nombres de las variables, etc.) así como que se le esté asignando a cada variable o columna la estructura adecuada (Date para la fecha y Double para el resto). Lo siguiente es la exploración y comprobación de los datos. Para ello se utilizan primeramente una serie de funciones de R que pueden resultar útiles para visualizarlos en formato de tabla (función View(), que se muestra en la Figura 4.2), para mostrar su dimensión (función dim()) o para mostrar su estructura (función str()). Figura 4.2: Datos iniciales de BNP Paribas y Microsoft respectivamente También, a fin de comprobar la validez de estos datos iniciales, es necesario que estos tengan valores válidos para todas las observaciones de cada variable. Para ello se hace uso de la función sapply(), con la cual se comprueba que, tanto para BNP Paribas como para Microsoft, no hay valores no válidos (“NAs”). CAPÍTULO 4. METODOLOGÍA 31 Continuando con la exploración de los datos iniciales, se crean una serie de gráficos que pueden resultar útiles para observar los datos de una forma más visual, así como para obtener algunas conclusiones previas. • Gráfico OHLC (Open-high-low-close) Un gráfico OHLC [26] es un tipo de gráfico de barras en el que se muestran los precios de apertura, máximo, mínimo y cierre para cada periodo (en este caso, para cada día). Muchos traders consideran el precio de cierre como el más importante. Con gráficos como este se puede observar si existen impulsos crecientes o decre- cientes así como la intensidad de estos impulsos. Si los precios de apertura y cierre están muy separados, existe un fuerte impulso, mientras que si la distancia entre am- bos es reducida, el impulso es débil o se muestra indiferencia. Si el precio de cierre se sitúa por encima del precio de apertura el impulso será creciente y viceversa. Figura 4.3: Gráfico OHLC de BNP Paribas Figura 4.4: Gráfico OHLC de Microsoft CAPÍTULO 4. METODOLOGÍA 32 Las Figuras 4.3 y 4.4 muestran los gráficos OHLC obtenidos para BNP Paribas y para Microsoft. Se puede observar cómo ciertos días las barras son de color verde y otros son de color rojo. Si la barra es de color verde, significa que el precio de cierre de dicho día es mayor que el de apertura y viceversa. De esta manera, en periodos de crecimiento hay, por lo general, más barras verdes y en periodos de decrecimiento hay más barras rojas. Otra característica observable es que en los periodos en los que hay barras más largas, el crecimiento o decrecimiento es más fuerte, mientras que es más débil si las barras son más cortas. Además, también se puede observar cómo BNP Paribas sigue una tendencia más o menos constante durante el periodo total de diez años mientras que Microsoft sigue una tendencia creciente (muy creciente al final). De todos modos, esto se observa mejor, quizás, con un gráfico de descomposición temporal. • Gráfico de descomposición temporal Toda serie temporal se puede descomponer en tres componentes: tendencia, es- tacional y aleatoria (o restante). Un gráfico de descomposición temporal lleva a cabo esta descomposición y la muestra gráficamente. Con un gráfico como este se puede observar la tendencia general seguida por la serie, la estacionalidad de la misma y la parte aleatoria de esta que no sigue ningún patrón. Figura 4.5: Gráfico de descomopsición temporal de BNP Paribas En las Figuras 4.5 y 4.6 se muestran los gráficos de descomposición obtenidos para ambas entidades. En este caso, es de relevancia fijarse en la tendencia, con lo que se puede comprobar cómo la tendencia de BNP Paribas es más o menos constante (en el sentido de que no presenta tendencia creciente ni decreciente, sino siempre en torno a un mismo valor medio) moviéndose entre los 30 y los 70 dólares aproximadamente, mientras que la de Microsoft es claramente creciente y comienza en los 50 dólares para terminar en unos 350 dólares. Es importante fijarse en la escala de cada gráfico para que estos no resulten engañosos. CAPÍTULO 4. METODOLOGÍA 33 Figura 4.6: Gráfico de descomopsición temporal de Microsoft 4.2.3. Fase 3. Preparación de los datos Durante esta fase se llevan a cabo todas las actividades necesarias para elaborar el conjunto final de datos que será utilizado en la fase de modelado. De esta forma, se realizan una serie de tareas que se comentan a continuación. Lo primero es declarar la variable objetivo o target , es decir, la variable cuyo valor se quiere predecir, al tratarse en este caso de un modelo predictivo. Esta variable es el precio de cierre de la acción al día siguiente. Una vez hecho esto, se procede a calcular las variables explicativas o pre- dictoras del modelo. En este modelo, las variables predictoras son indicadores técnicos. De esta manera, se calculan los indicadores que se exponen a continua- ción, los cuales han sido explicados en el capítulo 2 (Marco teórico). • Moving Averages (MA) Se calculan una serie de medias móviles. Por un lado, se calculan las Simple Moving Average (SMA) haciendo uso de la función SMA(). Concretamente, se cal- culan el SMA5, SMA10, SMA15 y SMA30, es decir, las medias móviles simples para periodos de tantos días como su nombre indica (5, 10, 15 y 30 días respectivamente). Por otro lado, también se calcula una Exponential Moving Average (EMA) utili- zando la función EMA(). En concreto, se calcula el EMA9, es decir, la media móvil exponencial para un periodo de 9 días. En ambos casos, tanto para las medias móviles simples como para las exponen- ciales, se eligen periodos pequeños. La razón de esto es que la predicción que se CAPÍTULO 4. METODOLOGÍA 34 quiere realizar es a corto plazo, ya que se quiere predecir el precio de la acción al día siguiente. Sin embargo, si se quisiera realizar una predicción a largo plazo se podrían utilizar periodos de, por ejemplo, 100 o 200 días. Figura 4.7: Gráfico de MA de BNP Paribas Figura 4.8: Gráfico de MA de Microsoft Las Figuras 4.7 y 4.8 muestran la representación gráfica de las medias móviles que se han calculado. Se puede observar cómo estos indicadores siguen la misma tendencia que el precio y se mueven en la misma escala. Esto se debe a que se trata de indicadores de tendencia. • Parabolic Stop-and-Reverse (SAR) Se calcula el indicador SAR mediante los precios máximo y mínimo haciendo uso CAPÍTULO 4. METODOLOGÍA 35 de la función SAR(). Además, se utiliza un factor de aceleración de 0,02 y un factor de aceleración máximo de 0,2. Ambos valores se tratan de los valores por defecto para el cálculo del SAR y son habitualmente utilizados. Figura 4.9: Gráfico de SAR de BNP Paribas Figura 4.10: Gráfico de SAR de Microsoft En las Figuras 4.9 y 4.10 se muestra la representación gráfica de los indicadores SAR y se observa cómo este sigue una tendencia similar a la calculada con las medias móviles, siguiendo la tendencia y la escala del precio. El indicador SAR también es un indicador de tendencia. • Relative Strength Index (RSI) CAPÍTULO 4. METODOLOGÍA 36 Se calcula el indicador RSI en su variante de 14 periodos (14 días en este caso), la cual es comúnmente utilizada ya que es tal y como lo introdujo J. Wilder. Figura 4.11: Gráfico de RSI de BNP Paribas Figura 4.12: Gráfico de RSI de Microsoft Se observa en las Figuras 4.11 y 4.12 cómo, en este caso, el indicador RSI oscila continuamente entre 0 y 100, subiendo hacia el 100 cuando hay tendencia creciente en el precio y bajando hacia el 0 en caso contrario. En este caso, al no tratarse de un indicador de tendencia sino de un oscilador, el RSI se mueve en una escala propia diferente a la del precio. • MACD Oscillator (MACD) Se calcula también el indicador MACD. Este se calcula como la diferencia de dos CAPÍTULO 4. METODOLOGÍA 37 medias móviles exponenciales (EMA) con periodos de 12 y 26 y se añade la línea de señal (MACD Signal) como una media móvil de 9 periodos, siguiendo la explicación del capítulo 2 (Marco teórico). Figura 4.13: Gráfico de MACD de BNP Paribas Figura 4.14: Gráfico de MACD de Microsoft En las Figuras 4.13 y 4.14 se observa cómo el indicador MACD, que es un os- cilador, sigue también una escala propia diferente a la del precio y oscila entorno a un valor, subiendo o bajando de este según la tendencia del precio. Una vez que se tienen la variable objetivo (el precio de cierre al día siguiente) y las variables predictoras (los indicadores técnicos), el siguiente paso es unir todas ellas en un mismo conjunto de datos. De esta manera, este conjunto queda formado por 11 columnas o variables: la primera columna es la variable objetivo (precio CAPÍTULO 4. METODOLOGÍA 38 de cierre) y las 9 siguientes son las variables predictoras (EMA9, SMA5, SMA10, SMA15, SMA30, RSI, MACD, MACDSignal, SAR). Además, la última columna es la fecha correspondiente a cada observación o fila. Una vez se tiene este conjunto, es necesario adelantar en una fila a la columna del precio de cierre. Esto es debido a que lo que se desea predecir para un cierto día, dados los indicadores calculados en ese día, es el precio de cierre del día siguiente. Con este cambio realizado, cuando se entrene el modelo, se entrenarán los indicadores de un cierto día con el precio de cierre del día siguiente, en vez de con el precio de cierre de ese mismo día. Además, es necesaria otra modificación de este conjunto antes de que esté pre- parado. Al calcular los indicadores técnicos, existen ciertas filas que quedan con valores no válidos (“NAs”) para algunos indicadores. Por ejemplo, para calcular el SMA5 hay 5 días iniciales en los cuales no existe un valor válido ya que no hay datos suficientes para calcularlo. Estos valores no válidos deben eliminarse ya que podrían entorpecer el entrenamiento del modelo. En este caso, se soluciona eliminando las 33 primeras filas, que son las que los contienen. Además, es también necesario eliminar la última fila ya que en esta aparece un valor no válido para la columna del precio de cierre debido al adelanto de una fila que se le ha aplicado a esta anteriormente. En este momento, el conjunto de datos final que se empleará en la fase de mo- delado para entrenar el modelo y para validarlo está preparado. Se puede visualizar haciendo uso de la función View() de R y se muestra en la Figura 4.15 Figura 4.15: Conjuntos de datos finales de BNP Paribas y Microsoft respectivamente CAPÍTULO 4. METODOLOGÍA 39 4.2.4. Fase 4. Modelado Durante esta fase se elabora el modelo deseado, ya se trate de un modelo des- criptivo o de un modelo predictivo. En este caso se trata de modelos predictivos de regresión ya que se quiere predecir el precio de la acción al día siguiente, el cual es una variable continua. Concretamente se elaboran dos modelos, uno con XGBoost y otro con Regresión Lineal Múltiple, de forma que puedan compararse posteriormente. Para la elaboración de ambos modelos, el primer paso consiste en dividir el conjunto final de datos elaborado en la fase anterior en dos conjuntos disjuntos: el conjunto de entrenamiento y el conjunto de test. El conjunto de entrenamiento está formado por los datos que se utilizan para entrenar el modelo. Es decir, está formado por un porcentaje de las filas u obser- vaciones del conjunto de los datos. Este porcentaje suele encontrarse en torno a un 70 y un 80 %. El conjunto de test, por su parte, está conformado por el porcentaje restante de las filas del conjunto y sirve para validar el modelo. Es decir, se emplea para comprobar si se ha entrenado de una manera adecuada el modelo. De esta manera, se calculan ambos conjuntos de forma que el conjunto de en- trenamiento está formado por las primeras filas del conjunto hasta llegar a un 70 % de las mismas y el conjunto de test está formado por las filas restantes. Además, se dividen ambos conjuntos en X e Y, de forma que se pasa a tener cuatro conjuntos: X de entrenamiento, Y de entrenamiento, X de test e Y de test. Los conjuntos X contienen las columnas o variables predictoras (los indicadores técnicos) y los con- juntos Y están formados por la variable objetivo (precio de cierre del día siguiente). Esto se hace ya que resulta más cómodo para ciertas operaciones posteriores. En este punto, se puede llevar a cabo el entrenamiento de los modelos y es necesario por lo tanto diferenciar entre el modelo elaborado con XGBoost y el modelo elaborado con Regresión Lineal Múltiple. • XGBoost Antes de entrenar el modelo, es necesario pasar los datos a un formato compatible con XGBoost haciendo uso de la función xgb.DMatrix(). Una vez hecho esto, se puede entrenar el modelo con XGBoost. Para ello, se utiliza la función xgboost(), a la cual se le pasan los datos del conjunto de entrenamiento y se establece el número de iteraciones de boosting en 100, lo cual es comúnmente empleado. Es en este momento en el que se pone de manifiesto el problema de XGBoost con la extrapolación, razón por la cual se han elegido las entidades BNP Paribas y Microsoft. Los precios de cierre de BNP Paribas siguen una serie temporal con una tendencia más o menos constante (sin tendencia creciente ni decreciente), por lo que, los precios a predecir estarán muy probablemente dentro del rango de precios con los que se ha entrenado el modelo. En este caso, no es necesaria la extrapolación y XGBoost está preparado para llevar a cabo la predicción. Sin embargo, en el caso CAPÍTULO 4. METODOLOGÍA 40 de Microsoft, los precios de cierre de esta siguen una serie temporal con tendencia creciente por lo que los precios a predecir estarán fuera del rango de precios con los que se ha entrenado (en este caso, estarán por encima). Por ello, en este caso es necesario extrapolar para poder predecir y XGBoost no puede hacerlo. La razón por la que XGBoost, en su modo habitual de funcionamiento, no puede extrapolar se centra en el uso de árboles de regresión como modelos débiles de boosting ya que los árboles de regresión proporcionan un valor para la variable objetivo para ciertas condiciones de las variables predictoras del tipo “x ≤ k”, donde k es siempre un valor dentro del rango de x en el conjunto de entrenamiento, con lo que habrá un límite superior e inferior para la predicción de la variable objetivo. Esto se puede visualizar con un ejemplo de un árbol de regresión sencillo. Figura 4.16: Ejemplo de árbol de regresión sencillo En el ejemplo de la Figura 4.16 se observa cómo en las hojas extremo (izquierda y derecha) se indica que para cualquier valor de x menor que 11, la y valdrá 4 y para cualquier valor de x mayor que 84, la y valdrá 31. De esta forma, la y toma estos valores constantes cada vez que se sale del rango de x del conjunto de entrenamiento, con el cual se han hecho ramificaciones comprendidas entre 11 y 84. De esta manera, volviendo al caso que corresponde, una vez entrenado el modelo, se puede llevar a cabo la predicción, la cual se realiza mediante el uso de la función predict(). Como se ha anticipado, la predicción realizada con XGBoost en el caso de Microsoft no es adecuada ya que el algoritmo no es capaz de extrapolar. Pero la predicción de BNP Paribas sí se puede llevar a cabo. La Figura 4.17 muestra la predicción de los precios de las acciones de BNP Paribas haciendo uso de XGBoost. Se puede observar cómo la línea roja (precio de cierre pronosticado) sigue bastante bien a la línea verde (precio de cierre real u observado), con lo que parece que el modelo predice adecuadamente. De todos modos, es necesario cuantificar esta precisión mediante una serie de métricas, lo cual se realiza posteriormente en la fase de evaluación. Por su parte, la Figura 4.18 muestra la predicción para el caso de Microsoft. En este caso, como se había anticipado, el modelo comienza prediciendo aparentemente CAPÍTULO 4. METODOLOGÍA 41 Figura 4.17: Predicción con XGBoost (gbtree) de BNP Paribas Figura 4.18: Predicción con XGBoost (gbtree) de Microsoft bien ya que los precios a predecir están dentro del rango de los precios con los que se ha entrenado. Sin embargo, cuando se sale de este rango la predicción se queda más o menos constante (en el valor que correspondería a la hoja derecha del árbol) y por ello deja de ser válida y se aleja cada vez más del valor real del precio. Sin embargo, como se ha comentado, el problema principal de que no se pueda extrapolar y de que obtengamos por tanto una predicción que no es válida, es el uso de árboles de regresión como modelos débiles de boosting. Aunque lo usual en gradient boosting es emplear árboles de decisión, XGBoost ofrece un modo de boosting distinto que puede ser de utilidad en casos como este: gblinear. De esta manera, se pueden diferenciar dos modos [27]: gbtree es el modo por CAPÍTULO 4. METODOLOGÍA 42 defecto de XGBoost y con este los modelos que se utilizan en el boosting son árboles de decisión. Sin embargo, gblinear utiliza modelos lineales. Aunque este trabajo se centra principalmente en XGBoost en su modo normal de funcionamiento con árboles de decisión, se procede a entrenar el modelo usando XGBoost con modelos lineales (en modo gblinear) para el caso de Microsoft y se realiza una nueva predicción. Figura 4.19: Predicción con XGBoost(gblinear) de Microsoft En la Figura 4.19 se puede observar cómo con el modo gblinear XGBoost sí es capaz de extrapolar (al basarse en modelos lineales en vez de en árboles) y, en este caso, la predicción sí es válida y aparentemente buena. De todos modos, parece que la extrapolación realizada tiende a predecir los precios un poco por debajo en general y con un cierto retraso, con lo que posiblemente haya otro modelo que pueda realizar una predicción mejor para estos casos. Figura 4.20: Predicción con XGBoost(gblinear) de BNP Paribas CAPÍTULO 4. METODOLOGÍA 43 Aunque para el caso de BNP Paribas no es necesario emplear el modo gblinear de XGBoost ya que funciona bien con su modo normal, se realiza también esta predicción de modo que se pueda comparar posteriormente a XGBoost en todos sus modos frente a Regresión Lineal Múltiple. La Figura 4.20 muestra esta predicción. • Regresión Lineal Múltiple Se procede a elaborar el modelo predictivo con Regresión Lineal Múltiple y, para ello, se entrena el modelo haciendo uso de la función lm(), a la cual se le pasan los datos del conjunto de entrenamiento. Con estos datos, la función lm() calcula los coeficientes estimados mediante mínimos cuadrados y con estos se elabora el hiperplano estimado del modelo. Estos coeficientes, junto con otros resultados y métricas, se pueden obtener de la función summary(). Figura 4.21: Función summary() de BNP Paribas y Microsoft respectivamente En la Figura 4.21 se muestra la salida de la función summary() para BNP Pari- bas y para Microsoft. De esta podemos destacar, por un lado, la estimación de los coeficientes del modelo de regresión, la cual viene dada por columna “Estimate”. La primera fila representa el coeficiente o término independiente del hiperplano (β0) y las filas siguientes representan los demás coeficientes que multiplican a cada variable predictora o explicativa (β1, ..., β9). Por otro lado, a la derecha de “Estimate” se encuentra la columna “Std. Error ”, la cual mide la desviación típica de los residuos para cada variable y, a continuación, las dos columnas que prosiguen calculan el estadístico de la t de Student y su p- valor asociado, las cuales sirven para comprobar la significancia de cada variable predictora de manera individual. Sin embargo, lo que resulta realmente interesante en un modelo como este en el que se tienen varias variables predictoras, es analizar estas métricas en conjunto para todas las variables. Esto se muestra en la parte inferior de la salida de summary(), donde se puede observar que, en conjunto, la desviación típica de los residuos es de 0,9181 con 1755 grados de libertad para BNP Paribas y de 0,9486 con 1727 grados de libertad para Microsoft y que la significancia conjunta de las variables explicativas, medida en este caso con un estadístico F de Fisher al tratarse de varias variables, obtiene un p-valor menor a 2, 2 ∗ 10−6 para ambas entidades. Como para p-valores menores a 0, 05 se entiende que las variables predictoras son significativas, podemos decir que las variables predictoras CAPÍTULO 4. METODOLOGÍA 44 son significativas para ambas entidades. Además, un dato esencial para medir el buen funcionamiento del modelo es el R2. El coeficiente determina la calidad del modelo para replicar los resultados, y la proporción de variación de los resultados que puede explicarse por el modelo [28]. Dicho de otra manera, el R2 mide la bondad del ajuste, es decir, mide la calidad del modelo para explicar mediante las variables predictoras a la variable objetivo. Se observa que obtenemos un R2 de 0,9905 para BNP Paribas y de 0,9985 para Microsoft. Ambos R2 están muy próximos a 1, lo cual indica que el modelo es útil para explicar a la variable objetivo mediante las variables predictoras seleccionadas. En resumen, con los datos analizados proporcionados por la función summary(), podemos decir que el modelo predictivo, tanto para BNP Paribas como para Micro- soft, es un buen modelo ya que es capaz de explicar adecuadamente a la variable objetivo mediante las variables predictoras, que es lo que se pretende. Sin embargo, como se ha explicado en el capítulo 2 (Marco teórico), la Regresión Lineal tiene una serie de hipótesis. Estas hipótesis, en caso de cumplirse, aseguran que el modelo funciona bien. Aunque ya se ha visto con el R2 y otras métricas que el modelo funciona bien para los casos expuestos independientemente de las hipótesis, se pueden revisar algunas de las hipótesis principales de manera gráfica [29, 30]. Figura 4.22: Gráficos para comprobar las hipótesis con BNP Paribas Las Figuras 4.22 y 4.23 muestran una serie de gráficos que son de utilidad para poner el foco de atención en las hipótesis de Regresión Lineal. En ambas figuras, el gráfico de arriba a la izquierda es un gráfico “Residuals vs Fitted ”. Ese gráfico se utiliza para comprobar la hipótesis de linealidad de forma que si los residuos se distribuyen por igual alrededor de la línea horizontal en 0 (lo cual se observa si la línea roja se ajusta a la línea horizontal en 0), esta hipótesis se cumple. En ambos CAPÍTULO 4. METODOLOGÍA 45 Figura 4.23: Gráficos para comprobar las hipótesis con Microsoft casos se puede observar cómo los residuos se distribuyen más o menos por igual alrededor de la línea horizontal en 0 y cómo la línea roja se ajusta bien a esta, con lo que no hay indicios de que se incumpla la hipótesis de linealidad. Por otro lado, el gráfico de arriba a la derecha es un gráfico “Scale-Location” y se utiliza para comprobar la hipótesis de homocedasticidad de los residuos. Si los residuos se distribuyen aleatoriamente y se puede observar una línea roja horizontal con puntos distribuidos por igual (aleatoriamente), entonces se cumple la hipótesis. Tanto BNP Paribas como Microsoft parecen cumplir esta condición con lo que no hay indicios de heterocedasticidad en ningún caso. El gráfico de abajo a la izquierda es un gráfico en el que cada línea vertical muestra la dependencia que tiene cada retraso temporal del residuo con respecto al momento 0 y, por tanto, se puede utilizar para medir la hipótesis de independencia o de ausencia de autocorrelación de los residuos. Para ambas entidad se puede observar cómo, por lo general, las líneas tienen un valor muy bajo excepto en el caso del 0, la cual tiene un valor de 1 ya que la línea mide la relación consigo misma. Por ello, no hay indicios claros de incumplimiento de la hipótesis. En el último gráfico de las figuras que se están analizando, el gráfico de abajo a la derecha, se tiene un histograma de los residuos que resulta útil para comprobar la hipótesis de normalidad de los residuos. En ambas entidades se observa que la forma del histograma sigue aproximadamente la forma de una normal. Por todo ello, se puede observar cómo las hipótesis se cumplen en términos gene- rales, aunque, siempre entendiendo que es normal que no se cumplan a la perfección ya que estamos tratando con datos reales. CAPÍTULO 4. METODOLOGÍA 46 Una vez que se tiene la ecuación del hiperplano estimado del modelo y revisadas las cuestiones mencionadas anteriormente, para poder realizar la predicción de la variable objetivo (y) simplemente es necesario sustituir en esta ecuación con los valores de las variables predictoras (xi). Figura 4.24: Predicción con Regresión Lineal Múltiple de BNP Paribas Figura 4.25: Predicción con Regresión Lineal Múltiple de Microsoft En las Figuras 4.24 y 4.25 se puede observar la predicción realizada, tanto para BNP Paribas como para Microsoft, haciendo uso del modelo predictivo con Regresión Lineal Múltiple. Se puede observar cómo, en este caso, la predicción es buena tanto para BNP Paribas como para Microsoft ya que, como se ha comentado, Regresión Lineal Múltiple permite la extrapolación. Además, parece que ambas predicciones, tanto para el caso de BNP Paribas como para el caso de Microsoft, son más ajustadas que en el caso de XGBoost. Para poder analizar esto de manera adecuada es necesario emplear métricas cuantitativas, lo cual se realiza en la siguiente fase. CAPÍTULO 4. METODOLOGÍA 47 4.2.5. Fase 5. Evaluación Una vez que se han realizado las fases anteriores, en este punto los modelos predictivos ya han sido elaborados y se procede a evaluarlos. Además, en este caso, debido a la intención de realizar una comparativa entre ambos modelos, se procede a compararlos entre sí. Como se ha mencionado, en este proyecto los modelos predictivos que se ela- boran son modelos de regresión, ya que la variable objetivo (precio de cierre de la acción al día siguiente) es una variable continua. En estos casos, las métricas que se utilizan comúnmente para evaluar la precisión de los modelos son el error cuadrático medio raíz (RMSE ) y el error porcentual absoluto medio (MAPE ) [31]. En términos generales, con ambas métricas se busca medir la distancia entre el valor predicho y el valor observado o real. El error cuadrático medio raíz (Root-mean-square error, RMSE) es una métrica que mide la distancia entre los valores predichos y los valores observados o reales en un modelo de regresión. Esta métrica se calcula como: RMSE = √∑n i=1(ŷi − yi)2 n (4.1) ŷi: valor predicho para la i-ésima observación en el conjunto de datos yi: valor observado para la i-ésima observación en el conjunto de datos n: tamaño de la muestra De esta forma, se calcula esta métrica en R haciendo uso de la función rmse(), a la cual se le pasa como parámetros los valores observados y los valores predichos del conjunto de test, que es aquel sobre el que se ha realizado la predicción. Es por ello que lo que se calcula es el RMSE del conjunto de test, aunque también existe el RMSE del conjunto de entrenamiento, devuelto por ejemplo por la propia función xgboost() en el caso de XGBoost. Los resultados que se obtienen para cada entidad con cada modelo son los si- guientes: • BNP Paribas • XGBoost (gbtree): RMSE = 1,44263 $ • XGBoost (gblinear): RMSE = 2,437456 $ • Regresión Lineal Múltiple: RMSE = 1,096753 $ • Microsoft • XGBoost (gbtree): RMSE = 115,9906 $ • XGBoost (gblinear): RMSE = 5,517474 $ • Regresión Lineal Múltiple: RMSE = 4,024587 $ CAPÍTULO 4. METODOLOGÍA 48 Aunque este trabajo se centra principalmente en XGBoost en su modo normal de funcionamiento con árboles de decisión (gbtree) y en Regresión Lineal Múltiple, se calcula también la métrica obtenida con gblinear de modo que se pueda comparar a XGBoost en sus dos modalidades. Con estos resultados, se puede confirmar de una manera cuantitativa y exacta lo que podía observarse en las gráficas de las predicciones a simple vista. Efectivamente, para el caso de BNP Paribas ambos modelos funcionan de manera adecuada y obtienen un RMSE de en torno a 1 dólar con XGBoost (gbtree) y Regresión Lineal Múltiple y en torno a 2 dólares con XGBoost (gblinear). Teniendo en cuenta que los precios se mueven en una escala de entre 30 y 70 dólares, se trata de una predicción bastante acertada y Regresión Lineal Múltiple es la que mejor funciona en este caso. En el caso de Microsoft, XGBoost en su modo normal de funcionamiento (con árboles de regresión con el modo gbtree) no realizada una predicción adecuada de- bido a su incapacidad para extrapolar, por ello el RMSE es muy alto. Sin embargo, si XGBoost utiliza modelos lineales (modo gblinear) soluciona este problema y es capaz de realizar una predicción adecuada, obteniendo un RMSE de unos 5 dólares. Regresión Lineal Múltiple obtiene por su parte un RMSE de unos 4 dólares. Tenien- do en cuenta que los precios de Microsoft se mueven en una escala de entre 50 y 350 dólares, las predicciones con XGBoost usando gblinear y con Regresión Lineal Múltiple son bastante acertadas y, de nuevo, Regresión Lineal Múltiple es la que mejor funciona en este caso. De esta manera, Regresión Lineal Múltiple realiza la predicción con una mayor precisión en todos los casos evaluados. Concretamente, en el caso de BNP Paribas Regresión Lineal Múltiple obtiene un RMSE un 23,98 % menor que XGBoost con árboles de regresión (gbtree) y un 55,00 % menor que XGBoost con modelos lineales (gblinear). En el caso de Microsoft, Regresión Lineal Múltiple obtiene un RMSE un 96,53 % menor que XGBoost con árboles de regresión (gbtree) y un 27,06 % menor que XGBoost con modelos lineales (gblinear). El error porcentual absoluto medio (Mean absolute percentage error, MAPE) es otra de las métricas más comunes para medir la precisión de los pro- nósticos de modelos predictivos. Se calcula como: MAPE = 1 n ∗ n∑ i=1 |yi − ŷi| |yi| ∗ 100 (4.2) Siendo el significado de yi, ŷi y n el mismo que para el RMSE (4.1). Al igual que con RMSE, se puede calcular MAPE en R mediante la función mape(), a la cual se le pasa como parámetros los valores observados y los valores predichos del conjunto de test. La ventaja de MAPE sobre RMSE es que calcula valores porcentuales y no valores absolutos, con lo cual no se depende de la escala de los valores analizados. CAPÍTULO 4. METODOLOGÍA 49 Los resultados que se obtienen para cada entidad con cada modelo son los si- guientes: • BNP Paribas • XGBoost (gbtree): MAPE = 0,02578686 • XGBoost (gblinear): MAPE = 0,04351287 • Regresión Lineal Múltiple: MAPE = 0,01853738 • Microsoft • XGBoost (gbtree): MAPE = 0,4092186 • XGBoost (gblinear): MAPE = 0,01999653 • Regresión Lineal Múltiple: MAPE = 0,01395357 Para BNP Paribas se obtiene un MAPE de en torno al 2,5 % con XGBoost (gbtree), del 4,4 % aproximadamente con XGBoost (gblinear) y de en torno al 1,8 % con Regresión Lineal Múltiple. Con Microsoft, se obtiene un MAPE de un 40 % con XGBoost (gbtree) y de casi un 2 % con XGBoost (gblinear), mientras que con Regresión Lineal Múltiple el MAPE es de casi un 1,4 %. De esta manera, Regresión Lineal Múltiple realiza una predicción más precisa en todos los casos. 4.2.6. Fase 6. Despliegue En la fase de despliegue es en la que se pondría el modelo a funcionar. Es decir, una vez que el modelo ha sido desarrollado y evaluado en las fases anteriores, se encuentra en condiciones de ponerse en manos de los usuarios finales a los que vaya dirigido y se realiza también una constante tarea de seguimiento y mantenimiento. Sin embargo, esta fase no siempre se lleva a cabo. Solo se lleva a cabo si el proyecto tiene unos usuarios finales. En este caso, como se ha comentado, el proyecto se realiza a modo de investigación personal y, por tanto, no se lleva a cabo la fase de despliegue. Sin embargo, queda como trabajo futuro abierta la posibilidad de llevar a cabo esta fase y de poner el proyecto en manos de ciertos clientes, como podrían ser algunos inversores. Capítulo 5 Resultados y conclusiones Los resultados a los que se ha llegado con el desarrollo del proyecto durante el capítulo 4 (Metodología) se resumen a continuación. Por un lado, se ha mostrado cómo la predicción del precio de cierre del día si- guiente de las acciones de BNP Paribas se puede llevar a cabo con ambos algoritmos, XGBoost y Regresión Lineal Múltiple. Por otro lado, para Microsoft, esta predicción no se puede realizar con XGBoost cuando utiliza árboles de decisión. Sin embargo, sí se puede realizar con XGBoost si usa modelos lineales y con Regresión Lineal Múltiple. Se recuerda que BNP Paribas representa a las entidades cuyas acciones siguen una serie temporal de tendencia más o menos constante, es decir, que los precios de las acciones se mantienen siempre en torno a un mismo valor, mostrando subidas y bajadas en torno a este. Microsoft sin embargo representa a las entidades cuyas acciones siguen una serie temporal que no cumple la condición anterior, es decir, con una tendencia creciente o decreciente. De esta manera, en entidades como BNP Paribas se puede predecir sin necesidad de extrapolar ya que muy probablemente el precio que se quiere predecir se encuentre dentro del rango de precios con los que se ha entrenado. Sin embargo, en entidades como Microsoft es necesario extrapolar para poder realizar la predicción. Es muy importante aclarar que la gran mayoría de entidades no cumplen el re- quisito de seguir una tendencia más o menos constante que permita que la predicción no se salga del rango con el que se ha entrenado, como ocurre con BNP Paribas. Por ello, los resultados más relevantes son los observados con Microsoft, ya que es necesario extrapolar y es lo que ocurre en la mayoría de casos. La Figura 5.1 muestra de forma visual el resultado de las predicciones realizadas y el Cuadro 5.1 muestra las métricas obtenidas con RMSE y MAPE, que muestran la precisión de estas predicciones de una manera cuantitativa. Esta figura y este cuadro son un resumen de los resultados que se han ido obteniendo y analizando a lo largo del trabajo. Efectivamente, poniendo la atención en los gráficos de la Figura 5.1, se puede observar cómo para BNP Paribas tanto la predicción con XGBoost (en su modo normal de funcionamiento con árboles de decisión y también en su modo con mo- delos lineales) como la predicción con Regresión Lineal Múltiple son aparentemente 50 CAPÍTULO 5. RESULTADOS Y CONCLUSIONES 51 (a) BNP Paribas (b) Microsoft Figura 5.1: Resumen de las predicciones realizadas adecuadas. Sin embargo, en el caso de Microsoft, la predicción con XGBoost usan- do árboles de decisión no es adecuada, mientras que las predicciones con XGBoost siguiendo modelos lineales y con Regresión Lineal Múltiple sí lo son. Por otra parte, observando las métricas obtenidas en el Cuadro 5.1 se puede cuan- tificar de una manera precisa lo que es observable en los gráficos. De esta forma, se observa cómo BNP Paribas obtiene un RMSE y un MAPE más que aceptables tanto con XGBoost (con árboles de decisión y con modelos lineales) como con Re- gresión Lineal Múltiple. Concretamente, son mejores con Regresión Lineal Múltiple, mientras que los peores resultados se obtienen con XGBoost con modelos lineales. Microsoft, por su parte, obtiene un RMSE y MAPE demasiado altos con XGBoost (con árboles de decisión) pero adecuados con XGBoost (con modelos lineales) y para Regresión Lineal Múltiple. De nuevo, Regresión Lineal Múltiple ofrece las mejores métricas. CAPÍTULO 5. RESULTADOS Y CONCLUSIONES 52 BNP Paribas Métricas RMSE ($) MAPE ( %) XGBoost(gbtree) 1,44263 0,02578686 XGBoost(gblinear) 2,437456 0,04351287 Regresión Lineal Múltiple 1,096753 0,01853738 Microsoft Métricas RMSE ($) MAPE ( %) XGBoost(gbtree) 115,9906 0,4092186 XGBoost(gblinear) 5,517474 0,01999653 Regresión Lineal Múltiple 4,024587 0,01395357 XGBoost vs Regresión Lineal Múltiple (RLM) BNP Paribas RLM obtiene un RMSE un 23,98 % menor que XGBoost (gbtree) RLM obtiene un RMSE un 55,00 % menor que XGBoost (gbli- near) Microsoft RLM obtiene un RMSE un 96,53 % menor que XGBoost (gbtree) RLM obtiene un RMSE un 27,06 % menor que XGBoost (gbli- near) Cuadro 5.1: Resumen de las métricas calculadas Con estos resultados se puede responder a las cuestiones que se plantean en el trabajo y se puede llegar a una serie de conclusiones relevantes. Por un lado, desde una visión más amplia, se pone de manifiesto cómo los mo- delos con árboles de decisión, al no permitir extrapolar, no son adecuados para la predicción del precio de las acciones, ya que en la gran mayoría de casos extrapolar es necesario. Sin embargo, los modelos lineales sí permiten extrapolar y sí pueden utilizarse para este fin. Concretando en los algoritmos utilizados, XGBoost en su modo normal con ár- boles de decisión no es recomendable para la predicción del precio de las acciones ya que no permite extrapolar, lo cual es necesario comúnmente. Sin embargo XGBoost en su modo alternativo con modelos lineales y Regresión Lineal Múltiple sí pueden utilizarse y, además, obtienen unos resultados considerablemente buenos. Pero uno de ellos obtiene mejores resultados que el otro. Por ello, por último, entrando en la comparación entre XGBoost y Regresión Lineal Múltiple, se ha mostrado que Regresión Lineal Múltiple realiza predicciones más precisas que XGBoost en cualquiera de sus modos. Con lo que, para cualquiera de los casos analizados (tanto si la empresa sigue una tendencia constante que no obligue a extrapolar como si no es así y la extrapolación es necesaria), Regresión Lineal Múltiple es el algoritmo que se recomienda ya que es el que mejores resultados ofrece. Results and conclusions The results that have been reached with the development of the project during chapter 4 (Methodology) are summarized below. On the one hand, it has been shown how the prediction of the next day’s closing price of BNP Paribas shares can be carried out with both algorithms, XGBoost and Multiple Linear Regression. On the other hand, for Microsoft, this prediction cannot be done with XGBoost when using decision trees. However, it can be done with XGBoost if you use linear models and with Multiple Linear Regression. It is recalled that BNP Paribas represents entities whose shares follow a time series with a more or less constant trend, that is, share prices always remain around the same value, showing ups and downs around it. However, Microsoft represents entities whose actions follow a time series that does not meet the previous condition, that is, with an increasing or decreasing trend. In this way, in entities such as BNP Paribas the price can be predicted without the need to extrapolate, since most likely the price to be predicted will be within the range of prices with which it has been trained. However, in entities such as Microsoft it is necessary to extrapolate in order to make the prediction. It is very important to clarify that the vast majority of entities do not meet the requirement of following a more or less constant trend that allows the prediction not to go outside the range with which it has been altered, as is the case with BNP Paribas. For this reason, the most relevant results are those observed with Microsoft, since it is necessary to extrapolate and this is what happens in most cases. Figure 5.2 visually shows the result of the predictions made and Table 5.2 shows the metrics obtained with RMSE and MAPE, which show the accuracy of these predictions in a quantitative way. This figure and this table are a summary of the results that have been obtained and analyzed throughout the project. Indeed, paying attention to the graphs in Figure 5.2, it can be seen how for BNP Paribas both the prediction with XGBoost (in its normal mode of operation with decision trees and also in its mode with linear models) and the prediction with Mul- tiple Linear Regression are apparently adequate. However, in the case of Microsoft, prediction with XGBoost using decision trees is not adequate, while predictions with XGBoost following linear models and with Multiple Linear Regression are. On the other hand, observing the metrics obtained in the Table 5.2 it is possible to quantify in a precise way what is observable in the graphs. In this way, it can be 53 CAPÍTULO 5. RESULTADOS Y CONCLUSIONES 54 (a) BNP Paribas (b) Microsoft Figura 5.2: Summary of predictions made seen how BNP Paribas obtains a more than acceptable RMSE and MAPE with both XGBoost (with decision trees and linear models) and Multiple Linear Regression. Specifically, they are better with Multiple Linear Regression, while the worst re- sults are obtained with XGBoost with linear models. Microsoft, for its part, obtains an RMSE and MAPE that are too high with XGBoost (with decision trees) but adequate with XGBoost (with linear models) and for Multiple Linear Regression. Again, Multiple Linear Regression offers the best metrics. With these results, it is possible to answer the questions that arise in this piece of work and a series of relevant conclusions can be reached. From a broader view, it becomes clear how models with decision trees, by not allowing extrapolation, are not suitable for stock price prediction, since in the vast majority of cases extrapolation is necessary. However, linear models do allow extra- polation and can be used for this purpose. CAPÍTULO 5. RESULTADOS Y CONCLUSIONES 55 BNP Paribas Metrics RMSE($) MAPE( %) XGBoost(gbtree) 1.44263 0.02578686 XGBoost(gblinear) 2.437456 0.04351287 Multiple Linear Regression 1.096753 0.01853738 Microsoft Metrics RMSE($) MAPE( %) XGBoost(gbtree) 115.9906 0.4092186 XGBoost(gblinear) 5.517474 0.01999653 Multiple Linear Regression 4.024587 0.01395357 XGBoost vs Multiple Linear Regression (MLR) BNP Paribas MLR gets 23.98 % lower RMSE than XGBoost (gbtree) MLR gets 55.00 % lower RMSE than XGBoost (gblinear) Microsoft MLR gets 96.53 % lower RMSE than XGBoost (gbtree) MLR gets 27.06 % lower RMSE than XGBoost (gblinear) Cuadro 5.2: Summary of calculated metrics Specifying the algorithms used, XGBoost in its normal mode with decision trees is not recommended for stock price prediction since it does not allow extrapolation, which is commonly necessary. However XGBoost in its alternative mode with linear models and Multiple Linear Regression can be used and, in addition, they obtain considerably good results. But one of them gets better results than the other. For this reason, finally, regarding the comparison between XGBoost and Mul- tiple Linear Regression, it has been shown that Multiple Linear Regression makes more accurate predictions than XGBoost in any of its modes. Therefore, for any of the cases analyzed (whether the company follows a constant trend that does not require extrapolation or if it does not and extrapolation is necessary), Multiple Li- near Regression is the recommended algorithm since it is the one that offers the best results. Agradecimientos A mis padres, Frutos y Ana Rosa, por apoyarme siempre. Bibliografía [1] “¿Qué es Data Science?” https://www.masterdatascienceucm.com/ que-es-data-science/, 2021. [2] S. F. Serrano, “Predicción de la evolución del precio de las acciones con XGBoost en R,” Trabajo de Fin de Grado, Universidad Complutense de Madrid, 2022. [3] J. Brownlee, XGBoost With python: Gradient boosted trees with XGBoost and scikit-learn. Machine Learning Mastery, 2016. [4] I. Goodfellow, Y. Bengio, and A. Courville, Deep learning. MIT press, 2016. [5] R. Reed and R. J. MarksII, Neural smithing: supervised learning in feedforward artificial neural networks. Mit Press, 1999. [6] J. H. Friedman, “Stochastic gradient boosting,” Computational statistics & data analysis, vol. 38, no. 4, pp. 367–378, 2002. [7] “Gradient Boosting,” https://en.wikipedia.org/wiki/Gradient_ boosting#Algorithm, 2022. [8] “XGBoost,” https://en.wikipedia.org/wiki/Gradient_boosting# Algorithm, 2022. [9] J. R. Abuín, “Regresión lineal simple,” Instituto de Economía y Geografía. La- boratorio de Estadistica, 2007. [10] J. A. Rodrigo, “Correlación lineal y Regresión lineal simple,” https://www. cienciadedatos.net/documentos/24_correlacion_y_regresion_lineal, 2016. [11] R. E. Walpole, R. H. Myers, and S. L. Myers, Probabilidad y estadística para ingenieros. Pearson educación, 1999. [12] J. R. Abuín, “Regresión lineal múltiple,” Instituto de Economía y Geografía. Laboratorio de Estadistica, vol. 32, 2007. [13] Y. Shynkevich, T. M. McGinnity, S. A. Coleman, A. Belatreche, and Y. Li, “Fo- recasting price movements using technical indicators: Investigating the impact of varying input window length,” Neurocomputing, vol. 264, pp. 71–88, 2017. [14] R. W. Colby, The encyclopedia of technical market indicators. McGraw-Hill, 2003. [15] “Uso de indicadores técnicos,” https://www.metatrader5.com/es/terminal/ help/charts_analysis/indicators, 2022. [16] “Yahoo Finance,” https://finance.yahoo.com/, 2022. 57 BIBLIOGRAFÍA 58 [17] P. Chapman, J. Clinton, R. Kerber, T. Khabaza, T. Reinartz, C. Shearer, R. Wirth et al., “Crisp-dm 1.0: Step-by-step data mining guide,” SPSS inc, vol. 9, p. 13, 2000. [18] C. Schröer, F. Kruse, and J. M. Gómez, “A systematic literature review on applying CRISP-DM process model,” Procedia Computer Science, vol. 181, pp. 526–534, 2021. [19] R Core Team, R: A Language and Environment for Statistical Computing, https://www.R-project.org/, R Foundation for Statistical Computing, Vien- na, Austria, 2021. [20] RStudio Team, RStudio: Integrated Development Environment for R, http: //www.rstudio.com/, RStudio, PBC, Boston, MA, 2021. [21] T. Chen, T. He, M. Benesty, V. Khotilovich, Y. Tang, H. Cho, K. Chen, R. Mit- chell, I. Cano, T. Zhou, M. Li, J. Xie, M. Lin, Y. Geng, Y. Li, and J. Yuan, xgboost: Extreme Gradient Boosting, https://CRAN.R-project.org/package= xgboost, 2022, R package version 1.6.0.1. [22] J. Ulrich, TTR: Technical Trading Rules, https://CRAN.R-project.org/ package=TTR, 2021, R package version 0.24.3. [23] H. Wickham, M. Averick, J. Bryan, W. Chang, L. D. McGowan, R. François, G. Grolemund, A. Hayes, L. Henry, J. Hester, M. Kuhn, T. L. Pedersen, E. Mi- ller, S. M. Bache, K. Müller, J. Ooms, D. Robinson, D. P. Seidel, V. Spinu, K. Takahashi, D. Vaughan, C. Wilke, K. Woo, and H. Yutani, “Welcome to the tidyverse,” Journal of Open Source Software, vol. 4, no. 43, p. 1686, 2019. [24] C. Sievert, Interactive Web-Based Data Visualization with R, plotly, and shiny. Chapman and Hall/CRC, 2020. [25] B. Hamner and M. Frasco, Metrics: Evaluation Metrics for Machine Lear- ning, https://CRAN.R-project.org/package=Metrics, 2018, R package ver- sion 0.1.4. [26] “Gráfico OHLC,” https://traders.studio/grafico-ohlc/, 2021. [27] X. developers, “XGBoost Parameters,” https://xgboost.readthedocs.io/ en/stable/parameter.html, 2021. [28] “Coeficiente de determinación,” https://es.wikipedia.org/wiki/ Coeficiente_de_determinaci%C3%B3n, 2022. [29] A. Downy, “Visual Tests for the Key Assumptions of Multiple Linear Regres- sion,” https://rpubs.com/ajdowny_student/300663, 2017. [30] “Testing regression assumptions,” https://bookdown. org/jimr1603/Intermediate_R_-_R_for_Survey_Analysis/ testing-regression-assumptions.html, 2021. [31] “Amazon Machine Learning,” Amazon Web Services, Inc., 2016. Apéndice A Código en R del proyecto El código en R se muestra a continuación. Además, el código en R y los datos de las entidades empleadas se pueden encontrar en el siguiente enlace: https://drive.google.com/drive/folders/1zpYOQlDXnODI7sQxNb7WoC6aQZIaFEwt? usp=sharing 59 https://drive.google.com/drive/folders/1zpYOQlDXnODI7sQxNb7WoC6aQZIaFEwt?usp=sharing https://drive.google.com/drive/folders/1zpYOQlDXnODI7sQxNb7WoC6aQZIaFEwt?usp=sharing APÉNDICE A. CÓDIGO EN R DEL PROYECTO 60 APÉNDICE A. CÓDIGO EN R DEL PROYECTO 61 Apéndice B Otras entidades En este anexo se muestran los resultados de las predicciones obtenidos para dos entidades diferentes a las empleadas durante el trabajo: Citigroup y Google. Se puede observar de esta manera cómo las conclusiones a las que se llega no varían respecto a las obtenidas con BNP Paribas y Microsoft. (a) Citigroup (b) Google Figura B.1: Predicciones realizadas de Citigroup y Google Efectivamente, observando la Figura B.1 y el Cuadro B.1 se puede ver cómo la predicción de Citigroup, al igual que con BNP Paribas, se puede realizar con 62 APÉNDICE B. OTRAS ENTIDADES 63 Citigroup Métricas RMSE ($) MAPE ( %) XGBoost(gbtree) 2,165593 0,02562519 XGBoost(gblinear) 2,916967 0,03468062 Regresión Lineal Múltiple 1,699198 0,01931575 Google Métricas RMSE ($) MAPE ( %) XGBoost(gbtree) 822,2315 0,2487633 XGBoost(gblinear) 49,12991 0,02148439 Regresión Lineal Múltiple 33,69258 0,01404445 XGBoost vs Regresión Lineal Múltiple (RLM) Citigroup RLM obtiene un RMSE un 21,54 % menor que XGBoost (gbtree) RLM obtiene un RMSE un 41,75 % menor que XGBoost (gbli- near) Google RLM obtiene un RMSE un 95,90 % menor que XGBoost (gbtree) RLM obtiene un RMSE un 31,42 % menor que XGBoost (gbli- near) Cuadro B.1: Métricas calculadas de Citigroup y Google XGBoost en sus dos modalidades y con Regresión Lineal Múltiple, aunque es esta última la que mejores resultados obtiene. Sin embargo, para Google, al igual que con Microsoft, la predicción realizada con XGBoost usando árboles de decisión no es adecuada, mientras que las predicciones realizadas con XGBoost usando mode- los lineales y con Regresión Lineal Múltiple sí lo son. De nuevo, Regresión Lineal Múltiple obtiene los mejores resultados. Introducción y objetivos principales Introduction and main objectives Marco Teórico Algoritmia Gradient boosting Funcionamiento general del algoritmo Matemáticas detrás del algoritmo eXtreme Gradient Boosting (XGBoost) Regresión Lineal: Hipótesis Regresión Lineal Simple Regresión Lineal Múltiple Indicadores técnicos Moving Average (MA) Parabolic Stop-and-Reverse (SAR) Relative Strength Index (RSI) MACD Oscillator (MACD) Dataset Metodología Planificación temporal Desarrollo del proyecto Fase 1. Entendimiento del negocio: Alcance y definición del problema Fase 2. Importación y entendimiento de los datos Fase 3. Preparación de los datos Fase 4. Modelado Fase 5. Evaluación Fase 6. Despliegue Resultados y conclusiones Results and conclusions Agradecimientos Bibliografía Código en R del proyecto Otras entidades