[en] This work develops a web application that fundamentally addresses the problems of investment portfolio optimization and financial asset value prediction, with the dual objective of providing a tool to understand and comprehend the main aspects of the techniques used, as well as to help the investor in his decision making. The data used belong to some of the world's main financial markets, with a total of 840 assets: stock markets such as S&P 500, NASDAQ 100, IBEX 35 and EURO STOXX 50 indexes together with the companies associated with them, cryptocurrencies, currencies and commodities. The web application is fully interactive, allowing the user to choose at any time which data to work with and to freely configure the main parameters of the elements that make up the different sections of the application. Firstly, the website provides tools to perform a descriptive analysis with statistical tools applied to financial analysis, such as moving averages or different technical indicators. Different types of visualizations are provided to allow the study of the time series of an asset. At the same time, descriptive sections containing dashboards with the prices of the assets of the different markets considered in the work are included. From the point of view of portfolio optimization, we work with the Markowitz model, constructing efficient portfolios, notable portfolios and making graphical representations of them, as well as of the efficient frontier. It is also possible to perform sensitivity analysis with some important parameters. Related to this problem, regressions with stock market indexes are also constructed to address the study of the risk of the portfolios obtained with the Markowitz model. As for the prediction of asset values, machine learning techniques are used, ranging from the most commonly used methods such as support vector machines or ensembles of random trees, to different neural network models included in what is known as deep learning, such as recurrent networks or convolutional networks. For the construction of these artificial intelligence models, the Keras library is used, which allows the use of Tensorflow with the Python language. A final point explored, also in relation to machine learning, is cluster analysis, used to try to find groups among assets with similar behavior in terms of profitability. Web programming tools such as html, css and javascript have been used to implement the application, while all the interactive elements (with the exception of the web navigation menu) contained in the different sections, as well as the visualizations they contain, have been developed using the Shiny library of the R language, which in turn uses the AMPL optimization solver to deal with this problem and the reticulate library to link with Python and use the codes of the machine learning models mentioned above. R in turn has been the language used to capture data through the Yahoo Finance API and to process and treat them. The website was developed on a Docker image, using an agile methodology consisting of an adapted Scrum.

[es] En este trabajo se desarrolla una aplicación web que aborda fundamentalmente los problemas de la optimización de carteras de inversión y de la predicción de valores de activos financieros, con el doble objetivo de proporcionar una herramienta que permita entender y comprender los principales aspectos de las técnicas utilizadas, así como ayudar al inversor en su toma de decisiones. Se utilizan datos pertenecientes a algunos de los principales mercados financieros del mundo, con un total de 840 activos: bolsa, con los índices S&P 500, NASDAQ 100, IBEX 35 y EURO STOXX 50 junto a las empresas asociadas a ellos, criptodivisas, divisas y materias primas. La aplicación web construida es completamente interactiva, permitiendo en todo momento al usuario elegir con qué datos desea trabajar y configurar libremente los principales parámetros de los elementos que componen las distintas secciones de la misma. En primer lugar, la web proporciona herramientas para realizar un análisis descriptivo con herramientas propias de la Estadística aplicadas al análisis financiero, como las medias móviles o distintos indicadores técnicos. Se proporcionan distintos tipos de visualizaciones que permiten llevar a cabo el estudio de la serie temporal de un valor. A su vez, se incluyen secciones descriptivas que contienen dashboards con los precios de los activos de los distintos mercados considerados en el trabajo. Desde el punto de vista de la optimización de carteras, se trabaja con el modelo de Markowitz construyendo carteras eficientes, carteras notables y realizando representaciones gráficas de las mismas, así como de la frontera eficiente. También se permite realizar análisis de sensibilidad con algunos importantes parámetros. Relacionado con este problema también se construyen regresiones con los índices bursátiles para abordar el estudio del riesgo de las carteras obtenidas con el modelo de Markowitz. En cuanto a la predicción de valores de los activos, se utilizan técnicas de machine learning, que van desde los métodos más empleados como las máquinas de vectores soporte o los ensembles de árboles de aleatorios, pasando por distintos modelos de redes neuronales englobados dentro de lo que se conoce como deep learning, como las redes recurrentes o las redes convolucionales. Para la construcción de estos modelos de inteligencia artificial se utiliza la librería Keras, que permite el uso de Tensorflow con el lenguaje Python. Un último punto explorado, también en relación con el aprendizaje automático, es el análisis cluster, utilizado para tratar de buscar grupos entre activos con un comportamiento semejante en términos de rentabilidad. Para la implementación de la aplicación se han utilizado herramientas de programación web como html, css y javascript, mientras que la totalidad de elementos interactivos (a excepción del menú de navegación de la web) que contienen las distintas secciones, así como las visualizaciones que contienen éstas, se han desarrollado utilizando la librería Shiny del lenguaje R, que a su vez se vale del solver de optimización AMPL para tratar ese problema y de la librería reticulate para enlazar con Python y poder utilizar los códigos de los modelos de aprendizaje automático comentados. R a su vez ha sido el lenguaje utilizado en la captación de datos a través de la API de Yahoo Finance y para el procesamiento y tratamiento de los mismos. La web se desarrolló sobre una imagen Docker, utilizando una metodología ágil consistente en un Scrum adaptado.