an alisis t ecnico de mercados nancieros basado en t

59
An´ alisis t´ ecnico de mercados financieros basado en ecnicas de inteligencia artificial ´ Angel Pina Canelles 5 de septiembre de 2014

Upload: others

Post on 25-Oct-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An alisis t ecnico de mercados nancieros basado en t

Analisis tecnico de mercados financieros basado entecnicas de inteligencia artificial

Angel Pina Canelles

5 de septiembre de 2014

Page 2: An alisis t ecnico de mercados nancieros basado en t
Page 3: An alisis t ecnico de mercados nancieros basado en t

Indice general

0.1. Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1. El Problema 9

1.1. El Analisis de los Mercados Financieros . . . . . . . . . . . . . . . . . . . . 9

1.1.1. El Analisis Fundamental y el Analisis Tecnico . . . . . . . . . . . . 9

1.1.2. Los Principios y Metodos del Analisis Tecnico . . . . . . . . . . . . 10

1.1.3. Algunas Tecnicas de Analisis Chartista . . . . . . . . . . . . . . . . 11

1.1.4. Algunas Tecnicas del Analisis de Osciladores . . . . . . . . . . . . . 12

1.2. Traders Automaticos y Talentum . . . . . . . . . . . . . . . . . . . . . . . 14

1.3. Problema Propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2. Desarrollo de la Solucion 17

2.1. Solucion Propuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1.1. Vision General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1.2. Redes Neuronales como Predictores . . . . . . . . . . . . . . . . . . 18

2.1.3. El Procedimiento Completo . . . . . . . . . . . . . . . . . . . . . . 21

2.2. Etapas del Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.2.1. Obtencion y Tratamiento de los Datos . . . . . . . . . . . . . . . . 22

2.2.2. Entrenamiento de Redes Neuronales . . . . . . . . . . . . . . . . . . 24

2.2.3. Puesta en Marcha a Mercado Real . . . . . . . . . . . . . . . . . . 26

2.2.4. Monitorizacion y Fiabilidad . . . . . . . . . . . . . . . . . . . . . . 27

3. Aspectos Tecnicos 29

3.1. Software Desarrollado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.1.1. Librerias Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.1.2. Modulos Desarrollados . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.1.3. Estructura General . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.1.4. Interfaz de Usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2. Detalles Tecnicos del Entrenamiento de Redes . . . . . . . . . . . . . . . . 37

3.2.1. El Problema del Overfitting . . . . . . . . . . . . . . . . . . . . . . 37

3.2.2. El Proceso Completo de Entrenamiento . . . . . . . . . . . . . . . . 39

3.3. Analisis de Componentes Principales . . . . . . . . . . . . . . . . . . . . . 40

3.4. Tests Estadisticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.5. Medidas de Error y Fiabilidad . . . . . . . . . . . . . . . . . . . . . . . . . 44

3

Page 4: An alisis t ecnico de mercados nancieros basado en t

4 INDICE GENERAL

4. Resultados y Conclusiones 494.1. Resultados del Prototipo Inicial . . . . . . . . . . . . . . . . . . . . . . . . 494.2. Resultados Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.3. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Page 5: An alisis t ecnico de mercados nancieros basado en t

0.1. ABSTRACT 5

0.1. Abstract

The original goal of this work was to apply machine learning techniques to the study offinancial markets. We quickly discarded the problem of trying to predict the evolution ofthe market itself, since this is a very well studied problem, and it is too complex for thepurposes of a final degree project. Instead, we were contacted by the company Talentum,which proposed us to solve a problem they were currently facing.

Talentum is a startup company focused on automatic trading to operate on currencyexchange markets such as FOREX. They have a lot of automatic traders (that is, robots)programmed using a wide variety of techniques, following the indications of experts fromdifferent fields: mainly computer science, economy and mathematics, but also physics,chemistry... etc. Since the Company’s foundation in February 2014, they have developedand programmed more than a thousand robots, and so, as the number of available robotsscaled so quickly, their actual problem is deciding, at a given moment, which robots theyshould use in their systems to operate in the market.

Their first approaches not being satisfactory, they proposed us the problem of designingand implementing a system that could help them making that decision. That is, ideally,the system should be able to predict the expected performance of every robot, and providemetrics to an external agent developed by them, that will use this data to choose a subsetof robots to operate in a given situation. In order to achieve this goal, our software wouldstudy the way that every robot had performed in the past, comparing the current marketsituation with the one in which the robot operated previously (and concluding from theresult obtained then).

In order to solve the proposed problem, we have had to design, implement and combinetechniques from both computer-science and mathematics. The theoretical basis of most ofthem are also included in this document. Particularly, the main techniques that we usedare:

Artificial Neural Networks. Artificial neural networks are computational modelsinspired by the architecture of animals’ brain. It is a well known machine learningtechnique, specially suited for problems related to pattern recognition. We use themas the kernel of our system, using them for implementing predictors on the robots’expected performance.

The Principal Component Analysis (PCA) is a statistical procedure that weuse for preprocessing the data extracted from the market, in order to reduce thedimension of the data that models the market situation at a given moment. PCA usesan orthogonal transformation to convert a possibly correlated set of observations intoa set of linearly uncorrelated ones.

Statistical hypothesis testing is a method of statistical inference to assess theacceptance of a given hypothesis. We will use it as part of the process of choosingthe structure for each network.

Weighted least squares. The least squares problem consists on, given a set ofpoints in the plane, adjusting the line that minimizes the total error of calculating,

Page 6: An alisis t ecnico de mercados nancieros basado en t

6 INDICE GENERAL

using the line as a function of x, the y value for every point (x, y) in the set. Wewill use a variation of that method, that allows us to assign different importancesto each point, as a method to fix the error made by our predictors.

The software that has been developed for this work has been programmed using theJava programming language, along with some external libraries that implement some ofthe more technical algorithms. For example, we have used Encog ([8]) for the algorithmsrelated to creation, training and execution of neural networks, and WEKA ([9]) for theimplementation of the Principal Component Analysis.

The document is structured as follows:In the first chapter we make an introduction to financial market analysis, explaining

its two main branches: Fundamental analysis and technical analysis. On the one hand,fundamental analysis is based on the belief that the price of shares doesn’t represent theirreal value. Therefore, its goal is that of, using all possibly available information, knowingthe real value of the shares and therefore being able to buy or sell them efficiently.

On the other hand, technical analysis focuses on finding behavioral patterns in shares’prices: Studying the behavior they had in the past, trying to predict their future changes.

After this introduction, we focus on technical analysis, which is the one directly relatedto this work. We will present its principles and premises. We also introduce the twomain groups in which technical analysis techniques can be divided: Charts analysis andbounders analysis, and give some sample techniques of both of them.

After this section, we make a brief introduction to the automatic trading, and toTalentum, the company we have been working with. To end the chapter, we introduce inmore detail the problem we solved during this work.

In the second chapter we expose the solution we have developed, which can be summa-rized as follows:

The kernel of our system, i.e. the predictors, are implemented using neural networks.The problem the network tries to solve is that of, considering the situation of the financialmarket at a given moment, predicting the balance (whether positive or negative) a robotis going to have.

For the network being able to solve this problem, we use the available informationabout how the robot performed in the past. This way, when a new case comes, the networkwill make its prediction based on similar situations whose result we already know1.

As modeling the state of the market can be very complex, and since we expect to havea great deal of variables related to it, we have to apply some preprocessing to the databefore the neural network can use it efficiently. Firstly, we will reduce the dimensionalityof the data (that is, the number of variables) using the Principal Components Analysis.Also, we will apply a normalization process before giving the data to the network. Thedescription and details of the whole process are given in the document.

1The given explanation is a really general idea of how a neural network actually works, we will givethe detailed procedure in the correspondent sections of this document.

Page 7: An alisis t ecnico de mercados nancieros basado en t

0.1. ABSTRACT 7

After this overall vision, we explain in detail the steps that are followed through thesoftware. Those steps are:

Obtaining and processing the data. In this step we get the operations recordsof our robot, and our aim is to obtain a set of test cases for training the neuralnetwork. We also apply the principal component analysis and normalization.

Training our neural networks. We use the set of test cases obtained in theprevious step to train a new network that will make predictions about the robot’sperformance.

Running the system in real-time market. In this step we run the neural net-work just trained. We have to get the real time market information from Talentumdatabases and apply to them the same preprocessing procedures as with the trai-ning data. Next, we can execute our networks and send the predictions and relatedinformation to the agent that will control the robots.

Monitoring the results. Once our system is running in the real-time market, wemonitor the operations that are being done. Every time a robot makes an operation,we update the estimation of the error and reliability for the network that controlsit. We also implement the functionality to check the predictions being made by thenetworks at any given moment, and getting the operations that have been done upto date.

In the third chapter, we review all the technical aspects of our work, including thetheoretical base of the principal component analysis, technical details related to the neuralnetworks training (such as the overfitting problem), etc.

Also in this chapter, we explain the whole estructure of the software developed for theprocesses described above, both from the programming point of view (libraries, modules,classes diagrams...) and the user’s point of view (that is, we show the user interface andexplain how to use it).

Finally, in the fourth and last chapter we present the results obtained from our work. Ina first section we introduce the results obtained from a first prototype, which run duringthe past month of June and didn’t include any measure of the networks estimated error,yet. In a second section we include the results obtained by the final prototype, whichhas been running during last August, and included all the techniques covered by thisdocument. We analyze the results from both experiments, and compare them with theresults that would have been obtained by the same robots without using our system.

Finally, we give our conclusions for the work, as well as propose several future waysto improve the software and results.

Page 8: An alisis t ecnico de mercados nancieros basado en t

8 INDICE GENERAL

Page 9: An alisis t ecnico de mercados nancieros basado en t

Capıtulo 1

El Problema

1.1. El Analisis de los Mercados Financieros

1.1.1. El Analisis Fundamental y el Analisis Tecnico

El analisis de los mercados financieros, o analisis bursatil, consiste en el estudio de losactivos del mercado financiero. Su objetivo consiste en obtener informacion anticipadasobre la evolucion de sus cotizaciones, de forma que se puedan realizas operaciones decompra y venta en bolsa que arrojen beneficios. El contenido de esta seccion esta basadoprincipalmente en [1].

El analisis de los mercados se puede dividir en dos grandes ramas principales: Elanalisis fundamental y el analisis tecnico.

El analisis fundamental se basa en la creencia de que el mercado tiene una eficienciadebil, es decir, que el precio de las acciones no es representativo de su valor. El analistautiliza toda la informacion a su alcance sobre la empresa para realizar una estimacion delprecio que considera correcto para las acciones de la misma, y realizar una compra o unaventa segun piense que estas estan infravaloradas o sobrevaloradas. Realmente no hay unaforma completamente objetiva de valorar una accion, y por lo tanto varios analistas puedenllegar a distintos resultados, concluyendo uno de ellos que la accion esta infravalorada yel otro que esta sobrevalorada. Esto es logico, por otra parte, ya que para que alguienpueda comprar una accion otra persona debe querer venderla.

El analisis tecnico, por el contrario, no plantea si las acciones estan correctamentevaloradas, sino que busca patrones de comportamiento en la cotizacion de las acciones,basandose en la historia de comportamientos de estas, y trata con ellas de predecir mo-vimientos futuros para obtener beneficios. El analisis tecnico es un analisis mas grafico,visual, y que se ayuda de unos indicadores u osciladores que proporcionan informacionsobre tendencias.

Aunque se utilizan diversas herramientas, es especialmente comun el uso de graficosque reflejen los movimientos de las cotizaciones. Al igual que ocurrıa en el analisis funda-mental, no se trata de una ciencia exacta, y ante los mismos datos dos analistas puedenemitir opniniones contrarias.

9

Page 10: An alisis t ecnico de mercados nancieros basado en t

10 CAPITULO 1. EL PROBLEMA

Podrıa decirse que el analisis tecnico es un analisis para el corto plazo mientras queel analisis fundamental lo es para el largo plazo. Por ejemplo, aunque las previsiones deuna empresa sean buenos y ser esperable a largo plazo que su cotizacion suba, esta puedebajar a corto plazo debido a la toma de beneficios por parte de los inversores. Son patronescomo estos de los que el analisis tecnico trata de sacar partido.

De hecho, a menudo se combinan ambos analisis: El analisis fundamental indica que tıtu-los hay que comprar y cuales hay que vender, mientras que el analisis tecnico muestra elmomento exacto para realizar dicha compra o venta.

1.1.2. Los Principios y Metodos del Analisis Tecnico

El analisis tecnico, que como hemos comentado se basa en tratar de encontrar patroneso tendencias en las cotizaciones, se basa en tres premisas:

Todo lo que puede afectar al precio de cualquier valor esta descontado.

Los precios se mueven por tendencias. Existen tres tendencias:

• La tendencia primaria que engloba periodos anuales.

• La secundaria, con periodos mensuales o semanales.

• La terciaria con periodos diarios.

El mercado tiene memoria.

La primera premisa niega el principio basico del analisis fundamental, y asume que lasacciones no estan sobrevaloradas ni infravaloradas, sino que reflejan su valor exacto. Lasegunda refleja que el mercado se mueve por tendencias mas largas o mas cortas, y latercera premisa establece que lo que ocurrio en el pasado tiende a repetirse, y que portanto podemos usar los datos de este para predecir los futuros.

Los metodos del analisis tecnico pueden dividirse en dos grandes grupos: El analisischartista y el analisis por osciladores. El chartismo es un sistema basado unicamente enel estudio de los graficos. Supone que los movimientos de los precios son debidos a unacombinacion de expectativas y sentimientos de los inversores, y que estos actuaran de lamisma manera en el futuro de lo que lo hicieron en el pasado, por lo que trata de descubrirpatrones en las figuras que forman las evoluciones de los precios.

El analisis de osciladores, por otro lado, utiliza ecuaciones matematicas para deter-minar senales de compra o venta en los graficos, utilizando como variable principal lascotizaciones de los precios.

En las siguientes dos secciones se establecen ejemplos de uno y otro tipo de analisis.

Page 11: An alisis t ecnico de mercados nancieros basado en t

1.1. EL ANALISIS DE LOS MERCADOS FINANCIEROS 11

1.1.3. Algunas Tecnicas de Analisis Chartista

Un ejemplo de analisis chartista es establecer que el mercado, respecto a un determi-nado tıtulo, puede encontrarse en una tendencia alcista o bajista. Ası, basandonos en loscomportamientos de la cotizacion en el pasado para situaciones similares, podemos esta-blecer que pasara determinadas fase prefijadas. Por ejemplo, en el caso de encontrarnoscon un tıtulo con una tendencia alcista (Figura 1.1) podemos distinguir las siguientes tresfases:

Fase de Acumulacion. El analisis fundamental establece predicciones de bajada ylos inversores venden sus acciones al no ver una rentabilidad satisfactoria. Sin em-bargo, los operadores de Bolsa con mas informacion comienzan a comprar accioneslentamente (a acumularlas) y el recorrido del precio es horizontal con una ligeratendencia alcista.

Fase de Expansion. Se confirma la mejora de los datos, que llegan al publico ge-neral, y se produce la compra masiva de tıtulos, por lo que se eleva rapidamentesu cotizacion y produciendo altas rentabilidades, que a su vez motiva de nuevo lacompra.

Fase de Distribucion. El publico general compra gran cantidad de tıtulos hasta queel mercado alcanza un punto en el que ya no crece. Algunos inversores venden pararecoger beneficios y otros compran estos tıtulos animados precisamente por estasrentabilidades obtenidas, lo que hace que el precio crezca y baje ligeramente.

Figura 1.1: Tendencia Alcista: IBEX-35 desde 1996 hasta mitad del ano 1998. [1]

Page 12: An alisis t ecnico de mercados nancieros basado en t

12 CAPITULO 1. EL PROBLEMA

Y de la misma forma, una vez estabilizada su cotizacion, puede producirse a continua-cion una tendencia bajista, que de nuevo podemos dividir en tres fases principales (Figura1.2):

Fase de Distribucion. Coincide con la ultima fase del mercado alcista. Se producenalgunas compras y ventas sin mucha rentabilidad, lo que hace que los inversorescomiencen a buscar alternativas en otros mercados.

Fase de Panico. Cuando se percibe el efecto de las ventas, comienza un panicomuchas veces no justificado por los datos fundamentales y los inversores comienzana querer vender, por lo que el precio cae abruptamente, y aunque puede haber ligerassubidas la tendencia es bajista.

Fase de Consolidacion. Finalmente la bajada comienza a atenuar y se vuelve a losrecorridos horizontales, hasta que acaba la tendencia bajista.

Figura 1.2: Tendencia Bajista: IBEX-35 durante el ano 2000. [1]

De esta forma, asumiendo que el mercado se va a comportar de acuerdo a estos patronesy fases, el conocedor de las tecnicas de analisis chartista podrıa decidir los momentosadecuados para comprar y vender sus tıtulos obteniendo altas rentabilidades.

1.1.4. Algunas Tecnicas del Analisis de Osciladores

El ejemplo mas sencillo de oscilador (y uno de los mas utilizados) es la media movil.La media movil de un periodo es el promedio de los precios de un determinado tıtulo

Page 13: An alisis t ecnico de mercados nancieros basado en t

1.1. EL ANALISIS DE LOS MERCADOS FINANCIEROS 13

durante ese periodo. Al suavizar la curva de precios, constituye una forma mas sencillade observar las tendencias del mercado.

Ademas, una tecnica para obtener senales de compra o de venta serıa observar cuandola grafica de la cotizacion del valor corta la grafica formada por la media movil, lo queindicara que el mercado esta sufriendo una tendencia bajista o alcista a corto plazo.Por ejemplo, si una cotizacion ascendente corta la media movil significa que el precio haascendido de forma mas rapida de lo normal, por lo que es de suponer que nos encontramosante una tendencia alcista y esta seguira subiendo, por lo que es conveniente comprar.Podemos encontrar un ejemplo de este procedimiento en la figura 1.3. En ella, se muestranlas medias moviles de 14 dıas (lınea continua) y de 150 dıas (lınea discontinua). Ası,cuando la cotizacion corta la media que usemos como referencia, se producira una ordende compra (senaladas con un 1) o una orden de venta (senalada con un 2).

Figura 1.3: Medias Moviles: Cotizacion del BBVA durante el ano 2000. Medias moviles de14 dıas (lınea continua) y de 150 dıas (lınea discontinua). Se ha senalado con un 1 senalesde compra, y con un 2 senales de venta. [1]

Pese a la simplicidad de este metodo, existen varias modificaciones. Por una parte, tomarmedias moviles de periodos mas largos o mas pequenos varıa el riesgo y la rentabilidadesperada: Tomando medias moviles mas largas las tendencias que detectemos seran masseguras pero de menor rentabilidad que con medias moviles mas cortas.

Existen por otra parte muchas variaciones y mejoras a este metodo, que van desde eluso de varias medias moviles simultaneamente (para detectar por ejemplo los cortes entreellas en lugar de con la cotizacion) hasta otras formas de calcular estas medias, dando porejemplo mas importancia a las cotizaciones mas recientes.

Page 14: An alisis t ecnico de mercados nancieros basado en t

14 CAPITULO 1. EL PROBLEMA

Existen otras tecnicas mas complejas basadas en ideas matematicas, como son porejemplo las Bandas de Bollinger, que utiliza la regla estadıstica de las tres sigmas, queestablece que el 99 % de una distribucion normal esta comprendida entre la media menostres veces la desviacion tıpica y la media mas tres veces la desviacion tıpica. Por tanto, latecnica se basa en que si la cotizacion alcanza la cota dada por la media movil mas tresveces su desviacion tıpica, es de esperar que su precio comience a caer y emitimos unaorden de venta, y si la cotizacion alcanza la media movil menos tres veces su desviaciontıpica emitimos una de compra. Un grafico reflejando esta tecnica podemos encontrarloen la figura 1.4. En ella, encontramos las bandas de Bollinger referidas a la media movilde 20 dıas. Cuando la cotizacion alcanza la banda superior, se espera que posteriormentecaiga, por lo que nuestra accion sera de venta, mientras que si la cotizacion alcanza labanda inferior emitiremos una senal de compra.

Figura 1.4: Bandas de Bollinger: Cotizacion de la empresa Altadis durante el ano 2000.[1]

1.2. Traders Automaticos y Talentum

Los sistemas de trading automatizados, o traders automaticos permiten establecer unaserie de reglas automaticas que dictan cuando realizar una operacion y cuando cerrarla,de forma que esta se ejecute de forma autonoma sin intervencion humana posterior. Lasreglas que en estos se programan pueden ser relativamente sencillas, como las mediasmoviles que vimos anteriormente, o mucho mas complejas.

Page 15: An alisis t ecnico de mercados nancieros basado en t

1.3. PROBLEMA PROPUESTO 15

Los sistemas automaticos han ido tomando mucha fuerza los ultimos anos. Entre susventajas se encuentra la rapidez a la que puede detectar y realizar las operaciones, lafacilidad de diversificacion o el hecho de que evitar que las emociones del broker influyanen las decisiones del sistema. Como desventajas, por otra parte, podrıan citarse los posiblesfallos mecanicos o la necesidad de monitorizacion.

Talentum es una empresa dedicada precisamente a este campo. Fundada en Febrero del2013, Talentum se dedica principalmente al estudio y desarrollo de sistemas automaticospara invertir en bolsa. Cuenta con profesionales de distintas ramas, principalmente eco-nomistas, informaticos, quımicos y matematicos, cuyas tecnicas especıficas combinadas seprograman en los robots.

En la actualidad, Talentum cuenta con mas de 1.000 robots programados y optimizadoscon distintos parametros para diferentes divisas. Por el momento, los robots de Talentumoperan unicamente en el mercado FOREX (cambio de divisas). Han comercializado porseparado varios de sus robots, como Ulysses o Helena. Sin embargo, su producto estrellaes Diana, un sistema de trading automatico consistente en un conjunto de 5 robots querotan cada cierto tiempo dependiendo de las condiciones del mercado. [2]

1.3. Problema Propuesto

Como hemos comentado, Talentum posee mas de 1.000 robots capaces de operar enbolsa, basados en diferentes tecnicas y algoritmos. En la mayorıa de sus sistemas, comoDiana, no se utilizan de forma independiente, sino que se toma un subconjunto de robotspara que operen a la vez. De forma, se logra que las perdidas se compensen entre ellos y sediversifican las operaciones, lo que permite minimizar el riesgo. Ademas, su sistema Dianacambia los robots que operan cada poco tiempo, de forma que es capaz de adaptarse alos cambios que se produzcan en el mercado, y retirar los robots que no funcionen bien ysustituirlos por otros que, presumiblemente, lo haran mejor.

En ese punto, la empresa se encontraba ante un problema que no habıan logrado resolversatisfactoriamente: La eleccion del subconjunto de robots para operar en cada momento.La aproximacion que habıan realizado hasta entonces, consistente en simular los resultadosque hubieran tenido todos los robots la semana anterior, y elegir aquellos que lo hubieranhecho mejor, no daba buenos resultados. Esto era debido a que la situacion del mercado,especialmente del de divisas y operando a corto plazo, es muy cambiante de una semanaa la siguiente.

Por tanto, el problema que se propuso para la realizacion de este trabajo fin de gradofue dar a Talentum criterios para poder elegir con mayor efectividad que robots elegirpara que operen en cada momento. Para ello, nuestra idea basica era utilizar los resultadospasados de cada robot en situaciones del mercado similares para tratar de predecir comose comportaran en la situacion actual.

Ası, debıamos desarrollar unos “predictores” que nos proporcionen informacion sobre losresultados que tendra un robot concreto si operara en el momento actual. Esta informacion

Page 16: An alisis t ecnico de mercados nancieros basado en t

16 CAPITULO 1. EL PROBLEMA

serıa entonces utilizada por un agente externo de Talentum, que con sus propios criteriosdecidirıa que robots utilizar.

Ademas del sistema basico de realizacion de predicciones sobre el desempeno de unrobot, incorporamos otros mecanismos para estimar los errores que cometemos en lasmismas, de forma que dieramos al agente externo la mayor cantidad de informacion posiblepara realizar sus decisiones.

Por tanto, nuestro objetivo final es implementar un sistema que nos proporcione predic-ciones sobre el rendimiento de cada robot, junto con una medida de la fiabilidad de estaprediccion. Todo ello sera interpretado por un agente externo que elegira un determinadoconjunto de robots en para que operen en cada momento, en funcion del riesgo deseado.

Page 17: An alisis t ecnico de mercados nancieros basado en t

Capıtulo 2

Desarrollo de la Solucion

2.1. Solucion Propuesta

2.1.1. Vision General

Puesto que nuestro objetivo es lograr hacer predicciones sobre el resultado que tendra unrobot puesto a operar sobre el mercado, el nucleo de nuestro sistema lo constituiran lospredictores. Un predictor es un elemento relativo a un robot concreto, que basandose ensu historial de operaciones realizara sus predicciones. Ademas, estableceremos otra capasuperior al predictor que nos proporcionara una medida de la fiabilidad de las prediccionesrealizadas por este en cada momento.

Toda esta informacion de cada robot sera utilizada por un agente externo para ele-gir que robots dejar operar en bolsa y cuales no. El esquema de esta estructura puedeencontrarse en la figura 2.1.

La principal decision que marcarıa gran parte del diseno posterior consistıa en que tecni-ca de inteligencia artificial utilizar para implementar los predictores. En nuestro caso, de-cidimos utilizar redes neuronales porque, a pesar de ser suficientemente sencillas para laprofundidad de un trabajo fin de grado, esperabamos que fueran suficientemente flexiblespara resolver satisfactoriamente el problema para cada robot. Ademas, tienen la ventajade ser suficientemente eficientes en su ejecucion para poder utilizarlas operando en tiemporeal.

Una red neuronal artificial es un modelo matematico no lineal, de naturaleza compu-tacional, con una arquitectura inspirada en la organizacion neuronal biologica ([3]). Esdecir, puede verse como una estructura en red consistente en un numero de neuronas(nodos) conectadas por enlaces direccionales ([4]).

En ella, cada nodo es una unidad de procesamiento independiente, que calcula un valorde salida a partir de una serie de valores de entrada. La forma en la que estos valoresde entrada se utilizan para dar lugar a la salida depende de una serie de parametrosespecıficos de cada nodo. Para que la red pueda resolver un determinado problema, semodifican estos parametros de acuerdo a ciertos algoritmos, denominados algoritmos deentrenamiento. De esta forma, la red puede “aprender” para adaptarse a resolver un

17

Page 18: An alisis t ecnico de mercados nancieros basado en t

18 CAPITULO 2. DESARROLLO DE LA SOLUCION

Figura 2.1: Estructura basica general del sistema.

determinado problema. La figura 2.2 muestra un diagrama basico de la composicion deuna red neuronal.

Ası, el objetivo de nuestro software sera conseguir obtener redes neuronales capaces depredecir el comportamiento de cada robot, y utilizar estas para obtener informacion sobresu desempeno esperado, que proporcionaremos a un agente externo para que las controle.

2.1.2. Redes Neuronales como Predictores

Introduccion y Conceptos Basicos

Las redes neuronales artificiales son especialmente utiles en problemas complejos o difi-ciles de definir con precision. En estos casos, el diseno de una funcion o metodo especıficopara resolver el problema resulta impracticable. Tambien es una tecnica muy comun encasos en los que la funcion es desconocida, pero contamos con bastantes casos en los queconocemos de resolucion correcta del problema.

Por ejemplo, las redes neuronales son muy comunes en problemas de reconocimiento depatrones: Escritura a mano, reconocimiento facial, etc. En ellos, pese a que no podemosdisenar o programar un conjunto de reglas o un software concreto para resolver cadacaso, en el caso de tener suficientes ejemplos del patron que queremos detectar, las redesneuronales proporcionan muy buenos resultados en la deteccion de casos nuevos. Antesde que una red neuronal pueda resolver un problema concreto, debemos someterla a unproceso previo, conocido usualmente como aprendizaje o entrenamiento.

Page 19: An alisis t ecnico de mercados nancieros basado en t

2.1. SOLUCION PROPUESTA 19

Figura 2.2: Diagrama basico de red neuronal y neuronas.

El problema que estamos tratando de resolver es un problema de regresion. Es decir,tenemos una funcion desconocida, que en nuestro caso recibe como entrada la informaciondel estado del mercado en un momento dado, y proporciona como salida la ganancia futuradel robot cuando se activa en ese estado del mercado. Lo que realiza la red neuronal es, apartir de una serie de casos de ejemplo, crear un modelo de esa funcion desconocida. Elproceso de aprendizaje consiste en ajustar esta funcion que implementa la red neuronalpara reducir el error entre la salida obtenida y la deseada para el conjunto de ejemplosen los que conocemos la resolucion del problema. Si los datos que utilizamos para esteaprendizaje son representativos de todas las posibles entradas, y el modelo que implementala red se ajusta bien a esos datos conocidos, esperamos que lo haga tambien para losdesconocidos.

Hay distintos tipos de redes neuronales dependiendo del numero y distribucion de susneuronas y de los enlaces entre ellas, y a su estructura se le denomina usualmente to-pologıa de dicha red. Podemos distinguir en ella tres tipos de nodos o neuronas: Deentrada, que reciben la informacion del exterior, de salida, que proporcionan sus resulta-dos al exterior, y ocultas, que reciben y envıan sus variables a otros nodos de la propiared.

Por otra parte, denominamos variables de entrada a aquellas que reciben las neuronasde entrada del exterior de la red, y variables de salida a las que proporcionan al exteriorde la red las neuronas de salida. La forma de calcular la salida de cada neurona en funcionde sus entradas queda determinada por variables denominadas pesos, relativos a cada unode sus enlaces.

Podemos ver graficamente los distintos tipos de neuronas y variables, ası como su lostipos de capas, en la figura 2.3.

Todas estas neuronas, a su vez, se distribuyen en capas. Decimos que un nodo esta enla capa n cuando el mınimo numero de neuronas entre esta y una neurona de entrada esn. Dicho de otro modo, las neuronas de entrada se encuentran en la capa 0, las nneuronas

Page 20: An alisis t ecnico de mercados nancieros basado en t

20 CAPITULO 2. DESARROLLO DE LA SOLUCION

Figura 2.3: Tipos de neuronas y capas de una red neuronal.

a las que se conectan estas estan en la capa 1, las que se conectan a estas otras estan enla capa 2, etc. Si bien las redes neuronales pueden tener topologıas muy diversas, las mascomunes tienen tres capas: una de entrada, una capa oculta y una de salida, y no tienenciclos.

Entrenamiento de una Red Neuronal

El proceso completo que se realiza para obtener una red neuronal para resolver unproblema en concreto, se divide en dos fases. En la primera, se deciden las caracterısticas dela red que emplearemos: Variables de entrada, numero de capas y de neuronas, distribucionde las mismas... etc., es decir, su topologıa. En una segunda fase, se entrena una red conla topologıa elegida, que sera la que obtendremos como resultado final del proceso.

El procedimiento de la primera fase consiste en partir de un conjunto de posibles topo-logıas, elegidas a priori, y tras un proceso de experimentacion, elegir aquella que propor-cione mejores resultados. Es decir, en primer lugar elegimos un conjunto de topologıas,definiendo las entradas que recibira nuestra red, cubriendo un espectro que consideremossuficiente.

A continuacion realizamos una cierta cantidad de experimentos para cada posible to-pologıa que nos planteemos utilizar para nuestro problema. Estos experimentos consistenen entrenar una red con esas caracterısticas y evaluarlas1. Ası, veremos los resultados queobtenemos para una serie de redes entrenadas con una determinada configuracion, calcu-laremos su media, y esta sera la medida que emplearemos para comparar esta topologıacon las demas.

Sin embargo, es importante tener en cuenta que es usual que distintas topologıas

1En este capıtulo pretendemos unicamente de dar una idea general de la solucion propuesta en nuestrotrabajo, sin entrar en excesiva profundidad. Por ello, los detalles tecnicos relativos al entrenamiento,validacion y test de las redes podemos encontrarlos en la seccion 3.2

Page 21: An alisis t ecnico de mercados nancieros basado en t

2.1. SOLUCION PROPUESTA 21

den resultados similares, y corremos el riesgo de que la eleccion de una u otra se debaunicamente a los resultados de ese conjunto concreto de experimentos realizados, y esano sea la tendencia general. Para evitarlo, debemos no tener en cuenta unicamente quela media de unos resultados sea mayor que otra, sino que debemos establecer que estadiferencia sea estadısticamente significativa.

Que un resultado sea estadısticamente significativo significa que podemos asegurarcon una cierta probabilidad, normalmente el 95 % o 99 %, que el resultado obtenido no esproducto del azar. Es decir, que realmente una topologıa es mejor que la otra, y aunquerealizaramos mas experimentos es de esperar que se mantenga ese resultado. En el casode que la diferencia entre el uso de dos topologıas no sea estadısticamente significativa,elegiremos aquella que sea mas sencilla (menor numero de neuronas, menor numero devariables de entrada...).

Para determinar si efectivamente existe significancia estadıstica en la diferencia en-tre las medias de las dos series de experimentos debemos realizar un test estadısticoadecuado. El procedimiento y la base teorica de los mismos se detallan en la seccion 3.4.

Para terminar, una vez elegida la topologıa que utilizaremos, se procede al entrena-miento de una red con dicha configuracion, que sera nuestra red final.

Los detalles tecnicos del procedimiento de ambas fases puede encontrarse mas detalla-damente en la seccion 3.2, en la que tambien se recoge el proceso completo de experimen-tacion con las distintas topologıas y entrenamiento de la red final, ası como el proceso detest de las redes resultantes, cuyo objetivo es tener una estimacion del comportamientoque tendra la red cuando opere con casos nuevos.

2.1.3. El Procedimiento Completo

Como hemos visto, para obtener una red neuronal que pueda actuar de predictor hacefalta tener una serie de casos conocidos con los que poder entrenarla. En nuestro caso,puesto que nustro objetivo es utilizar la red para predecir como sera el desempeno del robotconociendo la situacion del mercado actual, debemos tener una serie de casos pasados enlos que conozcamos el desempeno que tuvo y la situacion del mercado en dicho momento.Esta serie de casos la obtendremos a partir del historico de operaciones del robot. Esdecir, cada vez que en el pasado el robot realizo una operacion en el mercado, sabemosque resultado tuvo y conocemos la situacion del mercado en ese momento, por lo que apartir de este historico podemos obtener casos para entrenar nuestra red.

No obstante, hay que tener en cuenta que modelizar la situacion del mercado puedeser bastante complejo. Existen gran cantidad de factores que podemos tener en cuenta:Cotizaciones de la divisa en la que opera el robot, cotizaciones de otras divisas, otrosfactores como el dıa de la semana o la hora en las que se realizo la operacion, etc., y nosinteresarıa utilizar la mayor cantidad de ellos posible, siempre y cuando sean relevantes.Para que el uso posterior de estos datos sea efectivo, se hace necesario establecer untratamiento previo de los datos que nos permita eliminar redundancias e informacionno relevante, y reducir la dimension de la informacion en la medida de lo posible, esdecir, reducir el numero de variables de entrada. Esto, ademas, permitira mejorar losresultados de las redes, que solo recibiran la informacion relevante, y por tanto podran

Page 22: An alisis t ecnico de mercados nancieros basado en t

22 CAPITULO 2. DESARROLLO DE LA SOLUCION

dar mejores resultados con una estructura menos compleja. Para esta etapa previa dereduccion de la dimension de la entrada utilizaremos el algoritmo del analisis principalde componentes (PCA, por sus siglas en ingles), que se detalla en la seccion 3.3.

Por otra parte, una vez tenemos nuestra red entrenada, podemos ponerla a operaren el mercado real y monitorizar su rendimiento. Ademas, estableceremos medidas paracontrolar la precision esperada de la red en cada momento, permitiendo a quien utilicesus predicciones controlar el riesgo. Este sistema de control de la fiabilidad de la red seexpone en la seccion 3.5.

Por ultimo, y como resumen de todo lo anteriormente expuesto, tenemos que podemosdividir nuestro proceso en las siguientes etapas principales: Obtencion y tratamientode los datos, eleccion de la topologıa de la red y entrenamiento, puesta enmarcha en el mercado real y monitorizacion y fiabilidad.

Un diagrama de estas etapas, con los productos obtenidos en cada una de ellas y lastecnicas utilizadas en cada fase, puede encontrarse en la figura 2.4.

Figura 2.4: Diagrama general del sistema completo.

2.2. Etapas del Proceso

2.2.1. Obtencion y Tratamiento de los Datos

En esta etapa partimos del historico de operaciones del robot, y nuestro objetivo sera ob-tener una serie de casos de prueba para poder realizar el entrenamiento de la red neuronalque proporcionara predicciones sobre el. Recordemos que un caso de prueba consiste enuna entrada para el problema cuya salida es conocida. En nuestro caso, la entrada consisteen la situacion del mercado en el momento de producirse la operacion, y la salida consisteen el resultado que tuvo esta.

Ası, debemos definir en un primer lugar como modelizaremos la situacion del mercadoen momento concreto. Dado que cada robot puede operar en una divisa distinta, siguiendodiferentes estrategias y utilizando distintos datos, debemos poder modelizar la situaciondel mercado de manera diferente para cada uno de ellos. Por tanto, nuestro software nospermitira definir que informacion de entrada queremos utilizar en cada caso para reflejar

Page 23: An alisis t ecnico de mercados nancieros basado en t

2.2. ETAPAS DEL PROCESO 23

el estado del mercado, y realizar de esta forma una modelizacion del mercado diferentepara cada robot.

La informacion mas basica que podemos utilizar para reflejar la situacion del mercado,que esperamos que sea relevante para nuestra prediccion, son los datos relativos a ladivisa sobre la que opera el robot. Utilizaremos por tanto los datos sobre la cotizacion deesta divisa en un intervalo de tiempo determinado anterior a la solicitud de apertura dela operacion. Estos vienen agrupados segun periodos de tiempo de distintas longitudes,denominados velas. Es decir, una vela es la informacion agrupada de un determinadoperiodo de tiempo de una divisa concreta, y tiene 4 atributos principales: El precio quetenıa la divisa al inicio del periodo, el que tenıa al final del mismo, y el maximo y mınimoprecio alcanzado en este.

Las velas pueden tener distintas longitudes, y en nuestro software utilizaremos princi-palmente velas de 4 tipos: De 5 minutos, de 15 minutos, de 1 hora y de 1 dıa.

Ademas de la informacion basica de las velas de la divisa en la que opera nuestro robot,nuestro software permite anadir otra informacion adicional, como velas de otras divisas,el dıa de la semana o la hora a la que se realizo la operacion, e incluso otros indicadoresmacroeconomicos, como son el precio del petroleo o del oro.

Con estos ultimos indicadores logramos que, pese a que el robot tiene una vision muylocal del mercado (opera con una divisa y utiliza unicamente las cotizaciones de esta paradeterminar su comportamiento), nuestro sistema lo controla utilizando informacion muchomas global. De esta forma, podemos identificar tendencias a nivel mundial, modificandoel comportamiento final del robot en base a si ciertos indicadores del mercado globalpresentan tendencias alcistas o bajistas, por ejemplo.

Por ultimo, es importante resaltar que unicamente podremos utilizar informacion an-terior al momento de apertura de la operacion. Esto es ası debido a que las redesse utilizaran finalmente para predecir el resultado de la operacion antes de que se inicie,por lo que evidentemente debemos utilizar unicamente informacion que vayamos a tenerdisponible en ese momento.

A continuacion, una vez elegida la informacion que queremos utilizar como entrada denuestro problema, podemos formar los casos de prueba a partir del historico de operacionesdel robot, que nos serviran para entrenar la red.

Obtenemos ası un fichero con ejemplos de entrada y salida de nuestro problema, siendola entrada la modelizacion del mercado en el momento de apertura de una operacion, yla salida el resultado que tuvo esta.

Aunque podrıamos utilizar directamente este fichero para entrenar nuestras redes, en-contramos que la entrada es demasiado compleja: Por una parte, hay una gran cantidad deinformacion, mucha de ella redundante o muy parecida, y por otra, como cada robot operaen distintas situaciones, puede haber informacion que sea util en unos robots y redundan-te en otros, y no tenemos forma de saberlo a priori. Esta excesiva complejidad provocaque la red tenga muchas mas dificultades para aprender y generalizar correctamente elproblema, por lo que trataremos de reducirla.

Page 24: An alisis t ecnico de mercados nancieros basado en t

24 CAPITULO 2. DESARROLLO DE LA SOLUCION

Para ello, como comentamos en la seccion anterior, emplearemos el algoritmo del Anali-sis Principal de Componentes. Este algoritmo permite combinar las distintas variablesde entrada para mantener la informacion mas importante, y descartar aquella que sea re-dundante o poco significativa. Aplicando este proceso a nuestro conjunto de casos deprueba anterior, logramos reducir en la mayorıa de los casos de unas 150 o 200 entradas, atan solo 20 o 25, lo que constituye una reduccion de alrededor del 80 u 85 % en el numerode entradas.

Esto ademas permite que aunque anadamos informacion nueva que finalmente resulteser redundante, esto no repercutira demasiado negativamente en los resultados finales,puesto que sera eliminada por este ultimo procedimiento. Ası, podemos anadir gran can-tidad de informacion en un principio, y dejar que este paso la reduzca, eliminando la quesea redundante o poco significativa.

Para finalizar el proceso aplicamos un proceso de normalizacion a los datos. Si bien enla teorıa esto no es necesario, debido a que las redes pueden reescalar cualquier transfor-macion lineal realizada a los datos, en la practica lo usual es realizar la normalizacion.El motivo principal es que para la inicializacion de las redes (los valores iniciales que sedan a los pesos antes de comenzar el proceso de entrenamiento) deben estar escaladosde acuerdo a los rangos de valores de entrada, para facilitar la convergencia y reducir laprobabilidad de caer en mınimos locales. Por tanto, como en general se utilizan valoresaleatorios pequenos para los pesos, es conveniente normalizar la entrada a valores tambiencercanos a 0. En nuestro caso, como se recomienda en general, utilizaremos como rangode normalizacion el intervalo [−1, 1].[12]

El proceso de normalizacion consiste simplemente en un cambio de variable lineal, quetransforma una variable de entrada cuyos valores se encuentran en el intervalo [xmin, xmax]

en otra que se encuentra entre los valores [−1, 1], segun y = 2(x−xmin)xmax−xmin − 1.

Con todo esto, obtenemos finalmente unos casos de prueba preprocesados adecuadospara el entrenamiento de las redes en la siguiente fase.

2.2.2. Entrenamiento de Redes Neuronales

Con los casos de prueba procesados en la fase anterior, nuestro objetivo en esta fasesera obtener una red entrenada capaz de predecir el desempeno de nuestro robot. Comohemos comentado, esta fase se puede dividir a su vez en dos etapas: En una primeraelegimos la topologıa de nuestra red, y en una segunda fase entrenamos la red final queutilizaremos para controlar el robot.

El proceso basico empleado es el usual cuando se trabaja con redes neuronales, quehemos expuesto anteriormente: En primer lugar se plantean diversas topologıas posibles,con distinto numero y tipo de entradas, distinto numero de neuronas y distribucion, etc.A continuacion se realiza un determinado numero de entrenamientos y experimentos paracada posible configuracion, y finalmente se elige aquella que arroja mejores resultados,asegurandose de que la diferencia sea estadısticamente significativa. Por ultimo, se entrenauna red final con dicha topologıa2.

2De nuevo, recordamos que los detalles del proceso pueden encontrarse en la seccion 3.2

Page 25: An alisis t ecnico de mercados nancieros basado en t

2.2. ETAPAS DEL PROCESO 25

No obstante, debido a las caracterısticas de nuestro problema y situacion, hay variosfactores que no son comunes al proceso usual de entrenamiento descrito.

El primero es debido a que Talentum optimiza los robots utilizando su historico deoperaciones, es decir, utilizan para modificar el robot precisamente los mismos datos queutilizaremos nosotros. Es decir, ajusta sus parametros y comportamiento de forma que susresultados si hubiera operado en el pasado sean buenos, esperando que de esta forma seanbuenos tambien en el futuro. Esto implica que la situacion que encontramos en el historicode operaciones es probable que no sea la misma que encontrara posteriormente el robotcuando sea puesto en funcionamiento. Presumiblemente, los resultados que obtendra elrobot en tiempo real seran peores que los que se reflejan en su historico, puesto que esteha sido programado de forma que los resultados de su historico sean buenos.

De hecho, si observamos el historico de resultados de algun robot, solemos encontrarque sus ganancias totales son muy altas, y hay muchas mas operaciones que producen be-neficios que que producen perdidas. En el mercado real, por el contrario, esperamos que elbalance del robot sea mucho peor, y que encontremos aproximadamente el mismo numerode operaciones con ganancias que con perdidas. Si utilizaramos como entrenamiento loscasos extraidos directamente del historico de operaciones corremos el riesgo de que nues-tra red sea demasiado permisiva, es decir, que se adapte para ajustar correctamente loscasos positivos (que son la mayorıa), aunque se equivoque en bastantes casos negativos.

Para evitar esto, debemos modificar el conjunto de entrenamiento para que se ajusteen lo posible a la situacion que esperamos encontrar en realidad. Es decir, debemos modi-ficarlo de manera que las ganancias se equiparen aproximadamente con las perdidas, paraque nuestra red “aprenda” correctamente la misma situacion para la que posteriormentela utilizaremos. Para ello, nuestra solucion ha sido replicar las operaciones que produjeronperdidas hasta que el balance total de perdidas equipare al de ganancias. De esta forma,tenemos una situacion resultante en la que el balance total es aproximadamente 0, y laimportancia de las operaciones negativas esta mucho mas cerca de la importancia de lasoperaciones positivas. Ası, esperamos que nuestra red se adapte bien a ajustar amboscasos.

La segunda modificacion se refiere al criterio que utilizamos para elegir una u otra to-pologıa en la primera fase. Es comun elegir criterios basados unicamente en la precisionde la prediccion, como la diferencia entre los valores predichos y los valores correctos, oel error cuadratico medio (MSE). Sin embargo, debido al uso que se dara posteriormentea las predicciones, ninguna de estas medidas resultaba adecuada. En concreto, estos mo-delos de error penalizan de la misma forma un error entre haber predicho 15$ cuando enrealidad eran 20$, y haber predicho 3$ cuando en realidad eran -2$. Es de suponer que alagente que vaya a realizar la decision entre elegir una u otra red, la segunda diferencia leresultara mucho mas relevante.

Por ello, decidimos estudiar una medida de evaluacion de la red neuronal alternativapara esta fase, disenando otra mas parecida al uso que daremos posteriormente a laspredicciones. En ella, supondremos que el agente externo elegira para que operen todos losrobots para los que nuestra prediccion sea positiva, es decir, todos aquellos que predigamos

Page 26: An alisis t ecnico de mercados nancieros basado en t

26 CAPITULO 2. DESARROLLO DE LA SOLUCION

que van a obtener ganancias. Ası, simularemos que hubiera ocurrido si un determinadoconjunto de operaciones se hubieran realizado bajo la supervision de nuestro sistema, ycual habrıa sido el balance total del robot en ese periodo, comparandolo con aquel quehabrıa obtenido sin nuestra intervencion. Es decir, tomamos la suma del balance obtenidoen todas las operaciones para los que la prediccion de nuestra red es positiva, y la diferenciade esta con la suma del balance total de las operaciones elegidas sera nuestra medida deerror para esa red.

Tras realizar diversos experimentos con las redes obtenidas utilizando este metodo y losanteriores, comparamos sus resultados. De esta forma obtuvimos que las redes entrenadascon las topologıas elegidas utilizando esta ultima medida de error daban resultados masprecisos cuando las utilizabamos con datos que no hubieran sido utilizados ni para elentrenamiento ni para la optimizacion de los robots. Por ello, decidimos utilizar estaultima medida de error descrita para nuestro sistema.

Tras todo lo anterior, y una vez elegida la topologıa de la red, procedemos a la segundafase. En ella, entrenamos una unica red final con esta configuracion elegida, que sera lared final que utilizaremos como predictor para ese robot en nuestro sistema.

2.2.3. Puesta en Marcha a Mercado Real

En esta seccion describiremos el proceso de ejecucion de las redes neuronales entrenadas,y la comunicacion con el agente externo para proporcionarle sus predicciones. Este agenteexterno sera un sistema de Talentum ya existente denominado Zeus.

Zeus es un software desarrollado para controlar la gestion del riesgo de los sistemas deTalentum. Es capaz de controlar las operaciones realizadas por cualquier conjunto de ro-bots, y de denegar o autorizar cualquiera de sus operaciones en el momento en que el robotsolicite realizarla. Nuestro software, por tanto, se comunicara con Zeus proporcionandoleinformacion de las predicciones sobre cada robot. Ademas, cada vez que un robot quierarealizar una operacion, debe consultar a Zeus, que autoriza o deniega su entrada teniendoen cuenta nuestras predicciones.

Las estrategias que implemente Zeus para controlar a los robots en base a nuestraspredicciones pueden ser muy diversas, dependiendo de las directrices de los expertos deTalentum, e incluso de las preferencias de inversores concretos en cuanto a beneficiodeseado y niveles de riesgo admitidos. No obstante, para realizar las pruebas de nuestrosistema y evaluar su rendimiento, hemos implementado dos estrategias basicas.

La primera, utilizada antes de la implementacion de los sistemas de estimacion deerrores, consiste simplemente en dejar operar aquellos robots para los cuales nuestra pre-diccion sea positiva. Es decir, permitir todas aquellas operaciones que predigamos que vana resultar en beneficios.

La segunda estrategia, tambien bastante sencilla, pero realizada una vez incorporamosel sistema de control del error, consiste en dejar pasar aquellas operaciones que, auncontando con el error que estimemos en la prediccion, sigan superando un cierto umbral.Este umbral, en nuestro caso, lo ajustamos utilizando los resultados que tuvimos duranteel periodo en que la utilizabamos solo la primera estrategia recien descrite. Ası, elegimosel umbral que maximizaba las ganancias en el caso de que el sistema de fiabilidad y esta

Page 27: An alisis t ecnico de mercados nancieros basado en t

2.2. ETAPAS DEL PROCESO 27

segunda estrategia hubieran estado implementados en ese periodo. El umbral resultanteobtenido por este procedimiento fue en nuestro caso de 2$. Por tanta, nuestra estrategiaen este caso consistira en permitir las operaciones cuya aproximacion una vez tenida encuenta la correccion del error sea superior a este umbral.

Por otra parte, para realizar nuestras predicciones debemos obtener los datos del mer-cado en tiempo real: Cotizaciones de todas las divisas en forma de velas, otros indicadorescomo el precio del petroleo o el oro... etc. Nuestro software ha sido implementado paraobtener todos estos indicadores de bases de datos habilitadas por Talentum, en las que enperiodos de tiempo de 5 minutos se almacena informacion actualizada del mercado global.

La informacion se combina de forma que coincida con la modelizacion de la situaciondel mercado que realizamos para cada robot en la fase de obtencion de los casos deentrenamiento. Ademas, le aplicamos los mismos pasos que realizamos para la obtencionde dichos casos, es decir, es analisis principal de componentes y la normalizacion.

Tras este preprocesamiento, podemos utilizar los datos resultantes como entrada de lared asociada, que nos devolvera la prediccion. Por ultimo, obtenemos la fiabilidad asociadaen ese momento a esta red, y suministramos toda esta informacion a Zeus.

2.2.4. Monitorizacion y Fiabilidad

Una vez iniciada su ejecucion, nuestro software obtiene informacion sobre la ejecucionde los robots en el mercado, es decir, sobre las operaciones que realicen en cada momentoy su resultado. Esta informacion la utilizaremos para actualizar la fiabilidad de las redesen funcion de si sus prediciones fueron correctas o no.

Para que obtener esta informacion sea posible, los robots almacenan en una base dedatos durante su ejecucion informacion sobre la apertura y cierre de cada operacion querealizan, ası como los resultados de las mismas. Ademas, nuestro sistema almacena tam-bien las predicciones que cada red realizo en cada momento, por lo que podemos utilizarambas informaciones para actualizar la fiabilidad de la red que predijo cada resultado.

Sin embargo, si unicamente tuvieramos los robots operando en mercado real controladospor nuestro sistema, solo conocerıamos los resultados de las operaciones que Zeus permi-tiera realizar. No obstante, para actualizar las estimaciones de error de las redes debemosconocer tambien los resultados finales que tendrıan las operaciones cuya realizacion no sepermite.

Para ello, tendremos operando no solo los robots con dinero real controlados pornuestro sistema, sino tambien otra copia de cada uno de ellos operando en una cuentade simulacion. Es decir, realizaran todas las operaciones que realizarıan los robots reales,pero sin invertir dinero real en ellas. Estos robots simulados tambien almacenaran losresultados de sus operaciones en la misma base de datos que sus copias reales, pero conotro identificador. De esta forma, nuestro sistema obtiene los resultados de todas lasoperaciones que los robots podrıan realizar, independientemente de si finalmente se llevana cabo o no.

Con todo ello, tenemos finalmente operando todos nuestros robots en tiempo real,controlados por sus respectivas redes. Para ello, recibimos informacion en tanto de la

Page 28: An alisis t ecnico de mercados nancieros basado en t

28 CAPITULO 2. DESARROLLO DE LA SOLUCION

evolucion del mercado como de las operaciones que los propios robots realizan, y utilizamosun sistema adicional para detectar lo antes posible los periodos en los que las redes noestan funcionando bien y recortar las perdidas.

Page 29: An alisis t ecnico de mercados nancieros basado en t

Capıtulo 3

Aspectos Tecnicos

3.1. Software Desarrollado

Para la realizacion de este trabajo ha sido necesario el desarrollo de un nuevo softwareespecıfico que realizara los procesos descritos anteriormente. Este, desarrollado tambiencomo parte de este trabajo, ha sido realizado en lenguaje Java con el soporte de determi-nadas librerıas especializadas.

En las siguientes subsecciones se detallan las librerıas externas utilizadas, los modulosdesarrollados, la estructura del software y finalmente se muestra la interfaz de usuario yfuncionamiento.

3.1.1. Librerias Utilizadas

Para el desarrollo del software se han empleado una serie de librerıas externas pararealizar las funcionalidades tecnicas cuya implementacion quedaba fuera de los objetivosde este trabajo. Ası, las implementaciones relacionados directamente con, por ejemplo,las redes neuronales o el algoritmo del analisis principal de componentes, se han delegadoen librerıas conocidas de aprendizaje computacional u otros ambitos, que se detallan acontinuacion.

Encog ([8]): Encog es una librerıa especializada de aprendizaje computacional, queimplementa en el lenguaje Java la logica y algoritmos de gran cantidad de tecni-cas de inteligencia artificial, como redes bayesianas o support vector machines. Enparticular, nosotros utilizaremos su implementacion de redes neuronales para nues-tro software. Para estas, incluye gran cantidad de algoritmos de entrenamiento, yotras funcionalidades adicionales como el almacenamiento y recuperacion de redesya entrenadas.

WEKA ([9]): WEKA es una aplicacion muy conocida de aprendizaje computacio-nal, principalmente utilizada para minerıa de datos, tambien escrita en Java. Fuedesarrollada por la Universidad de Waikaito (Nueva Zelanda) y se distribuye bajolicencia GNU General Public. Aunque el software en sı constituye una aplicacioncompleta con interfaz de usuario, nosotros utilizaremos directamente sus librerıas,que contienen los algoritmos del analisis principal de componentes, y delegaremostambien en ella algunas tareas menores como la normalizacion.

29

Page 30: An alisis t ecnico de mercados nancieros basado en t

30 CAPITULO 3. ASPECTOS TECNICOS

Apache Commons Math ([10]): Es una librerıa escrita en Java de matematicas yestadıstica que incluye muchas funciones no disponibles directamente en el lenguajeJava. En nuestro caso, utilizaremos de ella la implementacion del ajuste por mınimoscuadrados ponderado.

Jmathplot ([11]): Es una conocida librerıa open source de uso de graficos en Java.Proporciona funcionalidad para mostrar graficos de diversos tipos en 2D y 3D deforma sencilla. En nuestro caso la utilizaremos para la visualizacion de graficas yresultados, especialmente para la funcionalidad de nuestro software relacionado quela monitorizacion y obtencion de estadısticas.

3.1.2. Modulos Desarrollados

Ademas, introducimos aquı los modulos que han sido desarrollados y pueden ser en-tendidos de forma independiente, para facilitar la comprension de la estructura globalpresentada en la seccion siguiente. Estos son:

Comunicacion con bases de datos

Las bases de datos de Talentum se encuentran en un varios servidores propios, a los quenos conectaremos utilizando JDBC (Java Database Connectivity, [14]), pudiendo escribirnuestras consultas en SQL. Por tanto, necesitabamos conectarnos a diversas bases dedatos en distintos host para obtener gran cantidad de datos diferentes (historicos delrobot, datos del mercado y operaciones en tiempo real, etc.). Por ello, implementamosuna primera clase con la funcionalidad basica de comunicacion con la base de datos, dela que heredan otras clases especıficas que refinan su comportamiento para los datos queutilizara.

Ademas, para algunas funcionalidades, en general aquellas que tienen que ver con lapersistencia de los datos de la propia aplicacion se decidio no utilizar estas bases de datos.En su lugar, se implemento una clase que utilizaba como medio para guardar datos unfichero de texto de la que heredaron otras clases para datos especıficos: Informacion de losficheros y casos de pruebas introducidos, informacion de las redes entrenadas, estadısticasde ejecucion, almacenacion y recuperacion de las propias redes neuronales, etc. De estaforma evitabamos sobrecargas las bases de datos de Talentum con mas informacion, y ala vez hacıamos el programa mucho mas portable, lo que nos resultaba util por ser undesarrollo experimental. Tambien se han almacenado en ficheros (.csv) la informacion delos historicos del mercado, de los que necesitamos gran cantidad de informacion, de formaque su acceso fuera mucho mas rapido.

Modulo de tratamiento de historicos y casos de prueba

Como la logica de procesamiento del historico de operaciones para obtener finalmentelos casos de prueba era demasiado compleja, decidimos extraerlo en un modulo aparte.Ası, en clases separadas se encuentra recogida la logica de lectura de los historicos ysu combinacion con la informacion del historico del mercado, la aplicacion del analisisprincipal de componentes, y la normalizacion final.

Page 31: An alisis t ecnico de mercados nancieros basado en t

3.1. SOFTWARE DESARROLLADO 31

Hay que tener en cuenta que este modulo no solo debe permitir realizar el procesamientoantes de entrenar la red, sino que ademas debe guardar la informacion que necesite paraaplicar el mismo procedimiento con los datos que queramos introducir en tiempo realen esta misma red. Es decir, debe aplicarles a los datos nuevos el analisis principal y lanormalizacion con los mismos parametros que utilizo para obtener los casos de pruebacon los que entrenamos la red.

Modulo de redes neuronales

Toda la logica relacionada con las redes neuronales tambien fue encapsulada. En par-ticular la logica de creacion de las mismas, su entrenamiento, ejecucion y persistencia, seencuentran en este modulo. Ademas, proporciona una fachada que encapsula las peculia-ridades propias de la librerıa que estamos utilizando para estas funciones, Encog.

Modulo de fiabilidad y control de errores

Para implementar la funcionalidad de fiabilidad y control de errores tenıamos variasestrategias disponibles, y es posible que unas funcionen mejor que otras en algunos casos,por lo que era interesante tener disponibles varias. Por ello, toda la logica relacionadase encapsulo en otro modulo, que implementa principalmente el patron Strategy. Esteproporciona una interfaz con las operaciones unicamente de inicializacion, anadir un nuevoresultado para actualizar el error y obtener el error esperado en base a una prediccion.

3.1.3. Estructura General

El software se puede dividir en 4 partes, diferenciadas tanto a nivel de estructura declases como a nivel de interfaz y utilizacion. Las dos primeras coinciden en funcionalidadcon las dos primeras fases expuestas en la seccion 2.2, la tercera corresponde a la terceray cuarta fase, y la cuarta parte corresponde a la obtencion y visualizacion de estadısticasde ejecucion de las redes. Es decir, las cuatro partes son:

Procesamiento de los datos.

Entrenamiento de las Redes Neuronales.

Ejecucion de las Redes y Monitorizacion.

Visualizacion de estadısticas.

Ademas, todo el software ha sido desarrollado siguiendo la arquitectura de Modelo-Vista-Controlador (MVC), por lo que los elementos del modelo seguiran la ruta model.*,los de la vista la ruta view.* y los del controlador la ruta controller.*. Aunque existe ciertadiscusion al respecto, en nuestro caso consideraremos las clases relacionadas con las basesde datos como parte del modelo.

La estructura del software de cada una de las secciones se detalla a continuacion.

Page 32: An alisis t ecnico de mercados nancieros basado en t

32 CAPITULO 3. ASPECTOS TECNICOS

Procesamiento de Datos

Contiene toda la logica y funciones relacionadas con el proceso seguido desde que elusuario quiere introducir un nuevo robot en el sistema hasta que obtenemos un conjuntode casos de prueba que nos permitan entrenar una red para el mismo. Ası, implementa lalectura de historicos de operaciones, la obtencion de datos del historico del mercado, laaplicacion del analisis principal de componentes, la normalizacion de los datos... etc.

Ademas, permite almacenar tanto los ficheros en cada una de las etapas como los casosde prueba procesados, junto con toda su informacion relacionada (ındice al que se refieren,datos que se han utilizado para modelizar la situacion del mercado, etc.) para su uso enotras etapas, en la sesion actual o en otra posterior.

Recordemos que esta parte del software tambien debe permitir el procesamiento denuevos datos en tiempo real, para poder introducirlos en la red una vez puesta a funcionar.

En la figura 3.1 podemos encontrar un diagrama de clases de esta parte. El controladorprincipal es DataController, y la clase principal de la vista es DataControllerViewer. Laclase DataFilesTable hereda de AbstractTable ([13]) para mostrar la informacion de todoslos ficheros de datos del sistema. De esta clase heredan tambien las clases de las tablas delos otros apartados.

La clase BacktestFactory nos proporciona los historicos de operaciones de cualquierrobot, y la clase InputFileFactory encapsula la logica de procesamiento de datos, dele-ga la logica de preparacion de los casos de prueba sin preprocesar en FilePreparer, laaplicacion del analisis principal de componentes en FileReducer y la de normalizacion enFileNormalizer.

El resultado de esta fase es un fichero de casos de prueba, cuyo estado de procesamientoy otros atributos se modelan en DataFile. DataFilesDatabase es, por tanto, la clase queimplementa la logica de persistencia de estos datos.

Entrenamiento de las Redes

Contiene toda la logica y funciones relacionadas puramente con las redes neuronales. Esdecir, realiza el proceso principal desde el procesamiento de los casos de prueba hasta laobtencion de la nueva red neuronal. Ademas, contiene la logica puramente de ejecucion delas redes en tiempo real (recibe la entrada y devolver la salida, no la controla ni interpreta).

Por tanto, esta parte engloba toda la logica de creacion de redes, entrenamiento,ejecucion, test y validacion, y permite almacenarlas y recuperarlas en el mismo estado enuna sesion posterior.

Podemos encontrar un diagrama de clases de todo ello en la figura 3.2. En el, Network-Controller es el controlador principal, y TrainNetworkControllerViewer es la clase princi-pal de la vista. De nuevo, NetworkFilesTable es una tabla que muestra la informacion delas redes en nuestro sistema, NetworkFile representa esta informacion, y NetworksData-base almacena tanto la informacion como las propias redes.

Ademas, DividedSupervisedSets permite dividir los casos de prueba convenientementeen entrenamiento, validacion y test, y unas clases auxiliares, NetworkTrainingResult yNetworkTestResult agrupan los datos de resultados de los procesos de entrenamiento ytest de las redes, respectivamente.

Page 33: An alisis t ecnico de mercados nancieros basado en t

3.1. SOFTWARE DESARROLLADO 33

Figura 3.1: Diagrama de clases de Procesamiento de Datos.

Page 34: An alisis t ecnico de mercados nancieros basado en t

34 CAPITULO 3. ASPECTOS TECNICOS

Figura 3.2: Diagrama de clases de Entrenamiento de las Redes.

Ejecucion de las Redes y Monitorizacion

Contiene las clases y logica que permiten la ejecucion del robot en tiempo real, y elcontrol de los mismos. Es decir, desde la obtencion de la nueva red neuronal hasta el finaldel proceso, con esta red funcionando y facilitando sus datos a Zeus. Para ello, contienela modelizacion de la red en ejecucion, el acceso a las bases de datos para obtencion deinformacion del mercado en tiempo real, la consulta de las operaciones realizadas por cadarobot en cada momento... etc. Tambien contiene las clases relacionadas con la fiabilidad,y la comunicacion con Zeus. Esta comunicacion se realiza a traves de una base de datosen la que nuestro sistema almacena sus predicciones sobre los robots en cada momento,que el sistema Zeus leera cuando necesite hacer uso de ella.

El diagrama de clases de esta seccion se encuentra en la figura 3.3. De nuevo, Runnin-gNetworkController es el controlador principal, y RunNetworksControllerViewer la claseprincipal de la vista, con RunningNetworksTabla la tabla que muestra la informacion prin-cipal. La modelizacion de la red en ejecucion se realiza mediante la clase RunningNetwork,que tiene asociada una red neuronal que es la que realmente realiza las operaciones y pro-porciona los resultados, y una clase que contiene el control de la fiabilidad para esa red.

Por otra parte, SetsControlDatabase es la clase que almacena la informacion de nues-tras predicciones y fiabilidad en la base de datos para ser usada por Zeus, y SignalsDa-tabase recibe las operaciones realizadas por nuestros robots en tiempo real. Por ultimo,recordemos que necesitamos datos en tiempo real del mercado, para lo que delegamos enDataController y su clase RealTimeMarketFacade.

Visualizacion de Estadısticas

Por ultimo, esta parte implementa algunas funcionalidades de visualizacion de datos yseguimiento en tiempo real de la ejecucion de nuestro software. Permite obtener graficascon las predicciones de nuestras redes en un momento determinado, ası como ver, paracada operacion que hubieran realizado los robots sin nuestro sistema, si la hemos realizado

Page 35: An alisis t ecnico de mercados nancieros basado en t

3.1. SOFTWARE DESARROLLADO 35

Figura 3.3: Diagrama de clases de Ejecucion de las Redes.

o no, cual era nuestra prediccion y fiabilidad en ese momento, y el resultado final que hatenido.

Ademas, mantiene registro de todos estos datos para su posterior consulta en ficherosde texto. Podemos encontrar este ultimo diagrama de clases en la figura 3.4. Una vezmas, StatsController es el controlador principal y StatsViewer la clase principal de lavista, mientras que OperationsTable es la tabla en la que se muestra toda la informacionde las operaciones de los robots, que es obtenida de SignalsDatabase y de sus registrosinternos de las predicciones realizadas. Por ultimo, NetworkPlot permite mostrar la graficade predicciones de una red concreta en un intervalo de tiempo determinado, informacionque es guardada en StatFileResults. PlotUtils es una clase auxiliar que maneja la creacionde graficas.

3.1.4. Interfaz de Usuario

La interfaz de usuario del software consta de un menu principal inicial, y 4 paneles decontrol, cada uno de ellos correspondiente a una parte principal del software descrita enla seccion anterior.

Ası, el menu inicial, que se muestra en la figura 3.5, permite abrir dichos paneles decontrol. En ellos es en los que se realiza la logica real de uso de la aplicacion.

Manage Data

Si elegimos la opcion “Manage Data”, se desplegara el panel de la figura 3.6 que permiteanadir nuevos robots con su historico de operaciones y procesarlos hasta obtener los casosde prueba. Ası, este panel provee funciones para: anadir nuevos robots al sistema, elegirlas variables que utilizaremos para modelar la situacion del mercado (que sera la entrada

Page 36: An alisis t ecnico de mercados nancieros basado en t

36 CAPITULO 3. ASPECTOS TECNICOS

Figura 3.4: Diagrama de clases de Visualizacion de Estadısticas.

Figura 3.5: Menu Principal de la aplicacion.

de nuestra red), procesar el historico de acuerdo a estos datos, reducir su dimensionalidadutilizando el analisis de componentes principales, y normalizarlos. Finalmente, tendremoscomo resultado los casos de entrenamiento que utilizaremos para generar la red neuronalasociada al robot.

Figura 3.6: Panel de Procesamiento de Datos.

Administrate Networks

Por otra parte, si en el menu principal elegimos “Administrate Networks” se desple-gara el panel de entrenamiento de redes, que se encuentra en la figura 3.7. Este utilizalos ficheros de casos generados en la etapa anterior para obtener nuevas redes. Para ello,permite las operaciones de crear una nueva red elegir su topologıa manualmente o dar unalista de posibles topologıas, entrenarlas con distintos parametros y evaluar el resultado.Ası, la tabla de este panel muestra toda la informacion elegida para la red, ası como unresumen de sus resultados de entrenamiento y test.

Page 37: An alisis t ecnico de mercados nancieros basado en t

3.2. DETALLES TECNICOS DEL ENTRENAMIENTO DE REDES 37

Figura 3.7: Panel de Entrenamiento de Redes.

Run Networks

El tercer panel, desplegado al elegir “Run Networks” permite poner las redes entrenadasanteriormente en ejecucion. Tras esto, automaticamente haran predicciones sobre su robotasociado que estara ejecutandose en mercado real, y las almacenaran en una base de datospara que puedan ser consultadas por un agente externo. Podemos encontrar una imagende este panel en la figura 3.8.

Como podemos ver, incluye una tabla en la que se muestran los robots en ejecucion,cons us ultimas predicciones y su fiabilidad, e informacion sobre si su robot asociadoesta operando. Ademas, permite activar y desactivar las redes en cualquier momento.

Figura 3.8: Panel de Ejecucion de Redes.

View Stats

Por ultimo, al pulsar “View Stats” se despliega el cuarto panel, que contiene variasopciones de visualizacion de estadısticas. Por ejemplo, podemos consultar las operacionesrealizadas por los robots en un intervalo dado, o una grafica con las predicciones de unared concreta en un cierto periodo de tiempo. Un ejemplo de visualizacion de este panelse encuentra en la figura 3.9

Ası, incluye una tabla que muestra las ultimas operaciones realizadas con informacioncomo si nuestro sistema la realizo o no, y cual era la prediccion y fiabilidad en ese momento,y opciones para el filtrado de estas y la visualizacion de graficas sobre las predicciones deuna red concreta.

3.2. Detalles Tecnicos del Entrenamiento de Redes

3.2.1. El Problema del Overfitting

Como se expone en la seccion 2.1.2, el proceso de entrenamiento consiste en ajustarlos parametros de la red para que resuelva los casos de prueba conocidos, esperando queası sea capaz de generalizar aquellos que no lo son.

El problema que se plantea consiste en que la red puede dar las salidas correctas paratodos los casos de prueba, y dar salidas muy alejadas de las correctas para aquellos casos

Page 38: An alisis t ecnico de mercados nancieros basado en t

38 CAPITULO 3. ASPECTOS TECNICOS

Figura 3.9: Panel de Visualizacion de Estadısticas.

para los que no ha sido entrenada. Uno de los posibles motivos de que ocurra esto es quela red ha quedado entrenada demasiado especıficamente para resolver los casos concretosde entrenamiento, y por ello no es capaz de general los demas casos. A este problema sele conoce como overfitting o sobreentrenamiento.

Los algoritmos de entrenamiento de redes ajustan en sucesivas etapas los parametrosde las neuronas para reducir el error producido en la prediccion de los casos. Cada una delas iteraciones que se realizan utilizando una vez cada caso de entrenamiento se denominaepoch.

Ası, si ejecutamos el algoritmo de entrenamiento durante demasiados epochs, tendre-mos que la red se ajustara bien a los casos que utilizamos para su entrenamiento, perofallara al generalizar el problema con casos nuevos. Sin embargo, si lo ejecutamos durantedemasiados pocos, la red no aprendera el problema correctamente.

Para resolver este problema, y poder conocer cuando debemos finalizar el entrenamien-to, debemos saber cuando la red empieza a dar peores resultados para los casos paralos que no la estamos entrenando. Para ello, inicialmente se divide el conjunto de casosque tenemos destinados al entrenamiento en dos subconjuntos: El conjunto de casos detraining y el de validation. Ası, el algoritmo que ajusta los pesos de las neuronas en ba-se a ciertos casos utilizara unicamente los casos de training, y utilizaremos los casos devalidacion para detectar cuando debemos detectar el proceso. Normalmente la divisionen los subconjuntos de training y validation se realiza utilizando un 10 o 20 % de casosaleatoriamente elegidos para validacion, y los restantes para entrenamiento.

Al estar entrenando la red para esos casos, el error que cometemos ajustando loscasos de training decrecera con el tiempo. Sin embargo, al no estar utilizando para elentrenamiento los casos de validation, tenemos que la red se comportara con estos de lamisma forma que lo hara para los casos cuya salida correcta no conocemos, que son los quequeremos resolver. Por tanto, esperamos que el error que cometa en estos ultimos decrezcainicialmente con cada epoch, mientras la red se ajusta correctamente al problema, y seincremente conforme la red se ajusta demasiado especıficamente para los casos de training,fallando al generalizar el problema. Puede verse un ejemplo de la evolucion esperada de

Page 39: An alisis t ecnico de mercados nancieros basado en t

3.2. DETALLES TECNICOS DEL ENTRENAMIENTO DE REDES 39

los errores de training1 y validation en la figura 3.10. Idealmente, detendremos el procesocuando la red ya haya aprendido el problema y comience a sobreajustarse a los casos deentrenamiento, por lo que normalmente nuestro criterio de detencion sera el incrementoen el error de validacion.

Figura 3.10: Ejemplo de Overfitting. En azul el error de training y en rojo el error devalidation.

3.2.2. El Proceso Completo de Entrenamiento

Aunque en otras secciones del trabajo se da una vision general bastante completa delproceso de entrenamiento, en esta seccion expondremos los detalles tecnicos que no quedanrecogidos en dicha vision general. Recordemos que el proceso general se divide en dos fases:En una primera hacemos experimentos con diversas redes entrenadas siguiendo diferentestopologıas, y elegimos aquella que consideramos mejor, y en una segunda fase entrenamosuna nueva red con estas caracterısticas.

Sin embargo, como hemos visto en la seccion anterior, para evitar el problema del over-fitting debemos tener un criterio de detencion del entrenamiento efectivo. En la primerafase utilizaremos el procedimiento descrito, consistente en dividir los casos disponiblespara el entrenamiento en dos subconjuntos, de training y de validation, y utilizar el pri-mero para ajustar los parametros y el segundo para detectar cuando empieza a producirse

1Para evitar ambiguedades y aunque pueda estar claro por el contexto, nos referiremos por conjuntode entrenamiento al total de casos destinados a este proceso, y por conjunto de training (en ingles) alsubconjunto de este que se utiliza para ajustar los parametros de la red durante el proceso.

Page 40: An alisis t ecnico de mercados nancieros basado en t

40 CAPITULO 3. ASPECTOS TECNICOS

overfitting. Ademas, tenemos que debemos hacer varios experimentos para cada red, nor-malmente 10 o 20, y queremos que estos cubran la mayor cantidad de situaciones posibles.Para ello, en lugar de utilizar siempre la misma division en casos de training y validation,la cambiaremos en cada experimento para asegurar que todos los casos se han utilizadopara training y para validation la misma cantidad de veces.

Para ello, utilizamos un procedimiento conocido como K-crossvalidation, que consisteen dividir el conjunto de entrenamiento en K partes o pliegues, y utilizar en cada expe-rimento uno de ellos para validacion, y los K − 1 restantes para entrenamiento. Ası, siqueremos realizar 10 experimentos para cada topologıa y utilizamos 10-crossvalidation,tenemos que utilizamos un 10 % de los datos para validacion, y que todos los casos seusan una unica vez para este subconjunto, y 9 para el de entrenamiento.

Por otra parte, de la segunda fase obtendremos la red que utilizaremos posteriormente,por lo que querrıamos utilizar todos los casos posibles para su entrenamiento, pero en-tonces tendrıamos que emplear otro metodo de detencion, puesto que ya no utilizarıamosconjunto de validation. Este nuevo criterio de detencion consiste en calcular el numeromedio de epochs que se produjeron hasta la detencion del entrenamiento en los experi-mentos realizados para esta topologıa en la primera fase. Ası, podemos utilizar todos losdatos disponibles para entrenamiento para ajustar los parametros, sin tener que dividirloen los subconjuntos de training y validation.

Ademas, existe en realidad otra etapa, que en el resto del documento tan solo se nombrabrevemente, denominada fase de test. El objetivo de esta etapa es obtener una estimacionde como funcionara la red recien entrenada con datos nuevos que no han sido usados nipara el entrenamiento ni para la eleccion de la topologıa. Para ello, de nuestro conjuntototal original de casos de prueba, se suelen reservar un 20 o 30 % de los datos para estafase.

Ası, podemos utilizar estos datos no vistos para ejecutar la red, y calcular medidasdel error para este. Estos errores seran presumiblemente similares a los que tendremoscuando ejecutemos la red para casos nuevos reales.

Para concluir, es relevante aclarar que para la implementacion del software hemos uti-lizado un tipo de redes neuronales conocidas como Multi Layer Perceptron (MLP). Porultimo, como funcion de activacion (una funcion empleada internamente en la red neuronalen las conexiones entre neuronas) hemos utilizado la tangente hiperbolica.

3.3. Analisis de Componentes Principales

El Analisis de Componentes Principales es un algoritmo de reduccion de datos quetransforma un conjunto de variables posiblemente correladas en otras linealmente inco-rreladas. Para ello, aplica una transformacion ortogonal, y las variables resultantes sedenominan componentes principales. Ademas, veremos que las componentes principalesresultantes quedan ordenadas segun su varianza.

Page 41: An alisis t ecnico de mercados nancieros basado en t

3.3. ANALISIS DE COMPONENTES PRINCIPALES 41

Antes de describir el algoritmo del analisis principal de componentes introducimos unresultado previo, que constituye la parte central del mismo. Este resultado, bastanteconocido en matematicas, es el calculo del cociente de Rayleigh de una matriz simetrica.

En primer lugar, consideremos un conjunto de n puntos xj, j = 1, ..., n con xn ∈ Rm,representados como una matriz m× n X = [x1, ..., xn].

Definimos el problema de maximizar la varianza como el de encontrar una direccionu ∈ Rm tal que la varianza de la muestra uTX = (uTx1, ..., u

Txn) sea maxima.Este problema puede ser visto tambien como encontrar el vector u tal que la varianza

de los puntos de la muestra proyectados sobre la recta que pasa por el origen y tienedireccion u es maxima. Esto puede expresarse formalmente como:

maxu:||u||2=1

1

n

n∑j=1

((xj − x)Tu)2

O equivalentemente:

maxu:||u||2=1

uTΣu

Con Σ = 1n

∑nj=1(xj−x)(xj−x)T la matriz de covarianzas. Este problema, que como ya

hemos comentado consiste en el calculo del cociente de Rayleigh de una matriz simetrica,tiene solucion conocidas. Para su resolucion, basta diagonalizar la matriz de covarianzasΣ y escoger como direccion u el vector propio correspondiente al mayor valor propio.

Como hemos adelantado, el algoritmo del analisis de componentes principales se basaen la resolucion del problema anterior. Su ejecucion consiste simplemente en tomar la di-reccion para la muestra que maximiza la varianza (conforme acabamos de ver) y proyectarla muestra sobre el subespacio ortogonal a esta direccion. De esta forma, todas las mues-tras proyectadas sobre el subespacio ortogonal son evidentemente ortogonales a la queacabamos de tomar, y por lo tanto son incorreladas. Iterando sucesivamente este metodoobtenemos todas las componentes principales, cumpliendo ademas que estan ordenadassegun su varianza.

Evidentemente, el numero de componentes principales (no nulas) es siempre menor oigual que el numero original de variables. Ademas, podemos entender la varianza de lascomponentes como la “cantidad de informacion que contienen”, y por tanto las tendrıamosordenadas segun ese criterio. Por ello, este metodo suele emplearse para reducir la dimen-sionalidad de nuestros datos. Es decir, para descartar aquellas componentes que tienenmenos informacion para reducir nuestro numero de variables de entrada. [5]

Mas concretamente, utilizaremos que la varianza total de la muestra es la suma de lasvarianzas de las componentes, y esta es precisamente la traza de la matriz de covarianzas.Por tanto, si Σ es la matriz de covarianzas y ∆ es esta misma matriz diagonalizada(Σ = U∆UT ), entonces la varianza total es precisamente:

TrΣ = Tr(U∆UT ) = Tr(UTU∆) = Tr∆ = λ1 + ...+ λn

Page 42: An alisis t ecnico de mercados nancieros basado en t

42 CAPITULO 3. ASPECTOS TECNICOS

Es decir, la suma de los valores propios de la matriz de covarianzas. Por tanto, si pro-yectamos nuestra muestra sobre las direcciones dadas por los primeros k valores propios,tenemos que la varianza total del subespacio es λ1 + ... + λk. Pero estas direcciones son,precisamente, las primeras k componentes principales. [7]

Ası, si queremos mantener, digamos, el 95 % de la varianza, bastarıa con que la propor-cion entre la varianza total original y la varianza de la muestra proyectada en el subespaciofuera 0.95, es decir:

λ1 + ...+ λkλ1 + ...+ λn

>= 0,95

Esta reduccion es util, por ejemplo, para aumentar el rendimiento de calculo del softwareque utilizara dichas entradas. Ademas, normalmente mejora incluso la capacidad de este degeneralizar un problema dado, debido a que ya habremos eliminado parte de la informacionredundante o no util.

Normalmente, este metodo nos permite reducir sustancialmente el numero de variablesde entrada a la vez que mantenemos el 95 o incluso el 99 % de la varianza.

3.4. Tests Estadisticos

Los tests estadısticos de hipotesis son un metodo de Inferencia Estadıstica para con-trastar la fiabilidad de un resultado experimental. Cuando se realiza cualquier experi-mentacion siempre existe la posibilidad de que los resultados, favorables o no, hayan sidodebidos al azar, cuando en realidad el resultado con mayor probabilidad era el contrario.Por ejemplo, si estamos comparando dos metodos y al realizar una cierta cantidad de expe-rimentos, un metodo parece mejor que otro, es posible que esto solo sea por los resultadosde ese conjunto de experimentos aleatorios concretos, cuando en realidad si pudieramosrealizar suficientes experimentos el resultado serıa el contrario. Los tests estadısticos nospermiten controlar la probabilidad de equivocarnos haciendo estas consideraciones.

Antes de explicar los tipos de tests estadısticos e introducir con especial profundidadaquellos que utilizaremos en este trabajo concreto, definimos algunos conceptos previos:

Definicion 3.4.1. Definimos la hipotesis nula como aquella hipotesis que queremos con-trastar, mientras que la hipotesis alternativa es aquella contra la que queremos contras-tarla.

Definicion 3.4.2. Sea X una variable aleatoria, se dice que el vector aleatorio de di-mension n, (X1, ..., Xn) es una muestra aleatoria simple (m.a.s.) de tamano n de X, sipara cada variable Xj esta sigue la misma distribucion que X y las variables Xj sonindependientes entre sı. [6]

Page 43: An alisis t ecnico de mercados nancieros basado en t

3.4. TESTS ESTADISTICOS 43

Es decir, tenemos que si X es la variable aleatoria que representa nuestro experimento,una muestra aleatoria simple puede ser vista como una sucesion de experimentos de X,que cumplen ser independientes entre sı (esto es, que el resultado de una de las repeticionesdel experimento no influye en el resto).

A continuacion, como definiciones relativas directamente al contraste de hipotesis,tenemos las siguientes:

Definicion 3.4.3. Denominamos error de tipo I a la probabilidad de rechazar la hipotesisnula cuando es verdadera, y error de tipo II a la probabilidad de aceptarla cuando es falsa.

Cuando queremos realizar un contraste de hipotesis, se debe fijar cual es el mayor errorde tipo I que estamos dispuestos a cometer, y con este fijo buscamos un contraste queminimice el error de tipo II. A este primer error se le suele denominar α, y al segundoβ. Normalmente se disenan los contrastes de forma que la probabilidad α (de rechazar lahipotesis nula cuando es verdadera) sea el 5 % (0.05). A la variable α tambien se le conocecomo nivel de significacion del test.

Veremos a continuacion dos definiciones adicionales antes de pasar a estudiar el con-traste que utilizaremos en nuestro trabajo:

Definicion 3.4.4. Sea (X1, ..., Xn) una m.a.s. de X, llamaremos estadıstico a cualquiervector aleatorio (k-dimensional) h(X1, ..., Xn), donde h : Rn− > Rk es una funcion me-dible Borel.

Definicion 3.4.5. Sea X una variable aleatoria con distribucion Fρ con parametro ρ, ysea X = (X1, ..., Xn) una m.a.s. de X, se dice que el intervalo (i(X), s(X)) es un intervalode confianza al nivel 1− α, para el parametro ρ si

P (i(X) ≤ ρ ≤ s(X)) ≥ 1− α

Es decir, un intervalo de confianza es un intervalo obtenido a partir de la m.a.s. quecumple que, si la variable aleatoria sigue una distribucion determinada Fρ, la probabilidadde que ρ se encuentre en ese intervalo es mayor que 1− α.

Una vez introducidos estos conceptos y definiciones, expondremos el proceso generalde realizacion de un test estadıstico y finalmente lo completaremos para explicar el testconcreto utilizado en este proceso, conocido como t-test.

El proceso general de realizacion de un test estadıstico es el siguiente:

1. Se estudia el problema y se establecen las hipotesis nula y alternativa.

2. Establecemos las asunciones para la muestra estudiada. Por ejemplo, las distribu-ciones de estas o si son independientes.

3. Se decide el test a utilizar, y en consecuencia el estadıstico T .

4. Se elige el nivel de significacion α.

5. Se calculan las regiones crıticas correspondientes al estadıstico y al nivel de signifi-cacion α.

Page 44: An alisis t ecnico de mercados nancieros basado en t

44 CAPITULO 3. ASPECTOS TECNICOS

6. Se calcula el valor tobs del estadıstico T para los resultados observados de los expe-rimentos.

7. Si el valor observado tobs se encuentra en la region crıtica, rechazamos la hipotesis,y la aceptamos en caso contrario.

El procedimiento concreto de realizacion del test depende principalmente, como hemoscomentado, de la hipotesis que queramos contrastar y de la distribucion de los experi-mentos. En nuestro caso, utilizaremos un test para comparar los resultados arrojados porredes neuronales de distintas configuraciones, para elegir con cual quedarnos. El objeti-vo sera decidir si entre dos redes distintas existe significancia estadıstica de que una deellas proporciona mejores resultados que la otra. Es decir, lo que querremos saber sera sipodemos asegurar que las medias de los resultados de una y otra son distintas.

Por tanto, nuestra hipotesis nula sera que las medias son iguales, y la hipotesis alter-nativa que son distintas. El procedimiento y estadısticos concretos constituyen resultadosbien conocidos, que pueden consultarse por ejemplo en [6] . Ası, el estadıstico que utili-zaremos es el siguiente:

t =X1 − X2

sX1X2 ·√

2n

(3.1)

donde X1 y X2 son las medias de las dos muestras experimentales, y

sX1X2 =

√1

2(s2X1

+ s2X2

)

siendo s2X1

y s2X2

son los estimadores de las varianzas de las muestras, es decir, s2X =∑n

i=1(xi−x)2

n

Finalmente, tenemos que el intervalo de confianza, que tambien es un resultado cono-cido, es:

(X1 − X2 − t1−α2S, X1 − X2 + t1−α

2S) (3.2)

Ası, nuestro procedimiento final consiste simplemente en calcular la observacion delestadıstico t segun 3.1, y comprobar si se encuentra en el intervalo dado por 3.2. Si es ası,aceptaremos la hipotesis nula, es decir, que no podemos distinguir sus medias, y en casocontrario la diferencia entre ellas sera estadısticamente significativa.

3.5. Medidas de Error y Fiabilidad

Tras la implementacion del primer prototipo de nuestro sistema, que no incluıa ningunsistema de control de errores sino que unicamente emitıa las predicciones, pusimos afuncionar el software para evaluar sus resultados preliminares. Concluimos que las redeseran capaces de predecir bastante bien los resultados de los robots en “las circunstanciasmas normales”, esto es, la mayor parte del tiempo, pero que sin embargo habıa semanasen las que se encadenaban varias operaciones en las que las redes fallaban sus predicciones,

Page 45: An alisis t ecnico de mercados nancieros basado en t

3.5. MEDIDAS DE ERROR Y FIABILIDAD 45

provocando perdidas importantes y un empeoramiento sustancial de la eficacia de nuestrosistema.

Por ello, procedimos a disenar e implementar un elemento “externo” a las redes queevaluara su eficacia a muy corto plazo. Estudiando los resultados, vimos que los periodosen los que red pasaba de actuar razonablemente bien a actuar mal eran muy cortos, cam-biando de una semana a la siguiente. Por ello, necesitabamos cambiar el error estimado deforma muy rapida, basandonos sobre todo en las ultimas predicciones. Es decir, utilizandoprincipalmente en los resultados de las ultimas 3 o 4 operaciones, tenıamos que estimarel grado de fiabilidad de la prediccion que nos de la red en el momento actual.

Cuando en un principio se planteo el desarrollo de un sistema de estimacion de erro-res, una de las soluciones que se planteo fue utilizar tecnicas de Inferencia Estadıstica,empleando intervalos de confianza. Sin embargo, debido a la limitacion de basarnos casiunicamente en las ultimas 3 o 4 operaciones, esta aproximacion era inviable. Necesitaba-mos otra aproximacion que nos permitiera obtener conclusiones con muy pocos datos, yno como un promedio a largo plazo.

Nuestro objetivo en esta seccion es, por tanto, exponer el desarrollo que nos llevo alsistema actual de estimacion el error para las predicciones de beneficio de una red neu-ronal, basandonos unicamente en sus resultados en las ultimas 3 o 4 operaciones. Estopermitira a quien utiliza esta prediccion juzgar mejor su decision de elegir unos u otrosrobots en funcion del riesgo que este dispuesto a correr. Por ejemplo, si la predicciones que ganara poco y el error que esperamos es grande, es poco probable que se quierautilizar este robot, mientras que si la prediccion es que ganara mucho y tenemos un erroresperado moderado, sı es probable que queramos dejarlo operar.

Para ello, se plantearon dos aproximaciones iniciales partiendo de dos ideas basicasdistintas, y tras cierta reflexion, resultaron ser de alguna forma similares a casos concretosde una solucion mas general, que exponemos en ultimo lugar.

Partimos de una variable R que refleja el valor real del beneficio que obtiene el robot alrealizar una cierta operacion, y una variable P que nos da el valor predicho por nuestrared. Evidentemente, el valor de R nos resulta desconocido, y lo que queremos es estableceralguna relacion entre ellos, que sera nuestra medida del error cometido. Una primeraaproximacion planteada consiste en expresar el error cometido como un sumando, esdecir, suponer que la funcion P aproxima a R salvo un determinado error que sera ladiferencia entre ambas:

R = P + ε

con ε la funcion que queremos estimar, y despejando tenemos que ε = R − P . Dadoque queremos utilizar los ultimos 3 o 4 valores para estimar nuestro error, podrıamossimplemente tomar el promedio del valor absoluto de esta resta para esos valores, y uti-lizarlo como estimacion del error de la prediccion siguiente. Es decir, podrıamos definir

err =∑4i=1 ei4

y estimar que dada una nueva prediccion P , el valor de R estara en elintervalo [P − err, P + err], por lo que es probable que el resultado de la operacion sera

Page 46: An alisis t ecnico de mercados nancieros basado en t

46 CAPITULO 3. ASPECTOS TECNICOS

R > P − err. Ası, una posible estrategia serıa elegir aquellos robots con mayor valor paraP −err, o aquellos tales que P −err > 0. Esta estrategia basica se puede mejorar estable-ciendo este umbral de forma mas adecuada. Para ello, podemos simular los resultados quehabrıamos obtenido para un intervalo de tiempo pasado determinado en el caso de utilizaresta estrategia con distintos umbrales, y finalmente quedarnos con aquel que proporcionemejores resultados.

Ademas, tambien podemos mejorar la forma de calcular err, puesto que utilizando elpromedio de las 4 ultimas operaciones, damos la misma importancia a la primera que ala ultima operacion que consideremos, y a partir de esa no tenemos en cuenta ningunaotra. Parece mas razonable que el peso de cada operacion en la estimacion final seaproporcional a su antiguedad. Para ello, cada vez que recibamos una nueva operacion atener en cuenta, disminuiremos el peso que tenıan las anteriores y anadiremos esta ultimacon mayor importancia. Ası, si errn es el error que tenıamos en un momento dado y nosllega otro resultado a tener en cuenta, el nuevo error errn+1 se calculara segun:

ε′ = α · ε+ (1− α) · εnCon un 0 < α < 1 adecuado. Este α determina como se reparte el peso entre las ope-

raciones anteriores. Cuanto mayor sea, mas importancia daremos al nuevo resultado queacabamos de recibir, y que por tanto sera el mas reciente. Este α puede determinarse conel mismo procedimiento que expusimos para elegir el umbral anterior: Basta seleccionarvarios posibles valores, simular que hubiera ocurrido en un intervalo de tiempo pasado, yelegir aquel valor de α que maximice nuestras ganancias.

Con la implementacion de esta primera aproximacion ya se producıan mejoras significa-tivas, aunque el segundo planteamiento expuesto a continuacion daba resultados inclusomejores. La idea consiste en utilizar un factor multiplicativo en lugar de uno aditivo, comohacıamos en el metodo anterior. De esta forma, suponemos que P determina R exceptopor un determinado factor f por el que viene multiplicado. Ası, en este caso podemosexpresar R como:

R = P · f

Y de igual forma que antes, podemos despejar f segun f = RP

, obteniendo un valor delmismo para cada resultado que tengamos. A continuacion, de forma analoga al metodoanterior, podemos obtener un valor F que constituya un promedio ponderado de los fac-tores f de los resultados pasados. Ası, podemos utilizarlo para estimar el error esperado,asumiendo que dada una prediccion nueva P ′, el resultado que esperamos sera aproxima-damente R′ = P ′ ·F . Con ello, una estrategia basica podrıa ser elegir aquellos robots paralos que nuestra prediccion sea P · f > U con U un umbral adecuado.

Pero como hemos adelantado al principio, planteados de la manera adecuada, los dosmetodos anteriores son en realidad similares a casos particulares de un metodo mas ge-neral. La clave para ver la generalizacion consiste en imaginar los valores de P y R comopuntos (P,R) en el plano, y plantear el problema como el de aproximar estos puntosmediante una recta.

Page 47: An alisis t ecnico de mercados nancieros basado en t

3.5. MEDIDAS DE ERROR Y FIABILIDAD 47

De esta forma, el primer metodo, en el que tratabamos de ajustar R por P+ε, consisteen realidad en un ajuste segun una recta con pendiente 1 y ordenada en el origen ε. Porotra parte, el segundo metodo, ajustar R por P · f consiste en realidad en ajustar lospuntos a una recta con pendiente f que pasa por el origen.

Por ello, el metodo general que resulta logico plantearse a continuacion es precisamenteel ajuste de mınimos cuadrados, en el que aproximamos una serie de puntos en elplano por una recta. Esta recta sera aquella que minimice la suma de los cuadrados delas diferencias entre los valores de nuestro ajuste y los reales. Ademas, para continuar conla idea de darle mas importancia a las operaciones mas recientes, emplearemos el metodoalgo mas complejo del ajuste de mınimos cuadrados ponderado. Esta variacion delmetodo permite ajustar el peso que tendra cada punto en el calculo del error que queremosminimizar. Utilizaremos como peso para los puntos αn, con n el numero de operacionesentre la actual y aquella a la que se refiere el punto. Este α puede ajustarse de la mismaforma que en los metodos anteriores.

Finalmente, obtendremos una recta y = m · x+ n que ajuste estos puntos, por lo quepodemos estimar que el valor real que obtendremos de una operacion con prediccion Psera R = P ·m+n. Ası, una posible estrategia serıa elegir aquellos robots cuya prediccioncumpla que P ·m+ n > U para U un umbral ajustado.

Por ultimo, es importante resaltar que cada red tiene su propia fiabilidad y ajuste delerror independiente, y que por tanto deben calcularse por separado. Esto es ası debido aque hay situaciones en las que unas redes pueden funcionar muy bien y otras muy mal, yen general ni las redes ni los robots tienen por que estar relacionadas entre sı.

Con estos metodos establecemos un nuevo filtro que controla a la propia red, que asu vez supervisa los robots operando a mercado, y la mejora es realmente sustancial, enespecial con el segundo y tercer metodo. Los resultados del sistema tras la implementaciondel metodo final anterior se exponen en la seccion 4.2.

Page 48: An alisis t ecnico de mercados nancieros basado en t

48 CAPITULO 3. ASPECTOS TECNICOS

Page 49: An alisis t ecnico de mercados nancieros basado en t

Capıtulo 4

Resultados y Conclusiones

4.1. Resultados del Prototipo Inicial

Tras finalizar el desarrollo del prototipo de nuestro software sin las medidas de controlde errores y fiabilidad descritas en la seccion 3.5, se puso en marcha con un conjunto de23 robots durante un mes, desde el 02/06/2014 hasta el 30/06/2014.

Aunque nuestro sistema esta pensado para proporcionar informacion a un agente ex-terno que sea el que controle los robots, para poder obtener resultados sobre su eficaciaimplementamos una estrategia sencilla para poder elegir los robots que dejaremos operaren el mercado y poder evaluar sus resultados. Puesto que el sistema de fiabilidad aun noestaba desarrollado, unicamente contabamos con la prediccion de la red asociada a cadarobot. Ası, nuestra estrategia consistio en elegir para operar en mercado a todos aquellosrobots cuya prediccion de su red fuera positiva. Es decir, pondremos a operar todos losrobots que estimemos que van a obtener ganancias en sus operaciones, y los retiraremoscuando predigamos que van a sufrir perdidas.

En la tabla 4.1 se detallan nuestros balances totales de cada semana comparandoloscon los que habrıan obtenido los robots sin ninguna supervision, es decir, permitiendo atodos los robots operar durante todo el tiempo. Por otra parte, en la tabla 4.2 aparecenel numero de operaciones positivas y negativas que realizan los robots, y el balance totaldividido en balance positivo y negativo.

Ademas, encontramos calculadas las proporciones entre todos estos factores comparan-do los resultados obtenidos por nuestro sistema con los obtenidos sin ninguna supervision.Para interpretar estas proporciones, tenemos que las relativas a balance y operaciones po-sitivas dan una medida de la precision de nuestro sistema para detectar cuando los robotsvan a funcionar bien, y por tanto les permite operar. Por otra parte, las proporcionesde balance y operaciones negativas indican la precision de nuestra sistema para detectarcuando los robots van a tener perdidas, y evitar que se produzcan. Por tanto, idealmen-te nuestro sistema tendrıa proporciones de balance y operaciones positivas muy altos, yproporciones de balance y operaciones negativas muy bajos.

Ası, podemos ver que el balance total que habrıan obtenido los robots hubiera sidode -235.51$, mientras que los robots con nuestro sistema pierden 72.20$ menos, es decir,

49

Page 50: An alisis t ecnico de mercados nancieros basado en t

50 CAPITULO 4. RESULTADOS Y CONCLUSIONES

Balance Final Original Balance Final Redes DiferenciaSemana 1 -24.12 9.01 33.13Semana 2 -70.44 -19.3 51.14Semana 3 -3.04 -22.07 -19.03Semana 4 -137.91 -130.95 6.96TOTAL -235.51 -163.31 72.20

Cuadro 4.1: Balance total de las 4 semanas y total. Software sin fiabilidad.

Balance Positivo Proporcion Balance Negativo ProporcionSemana 1 49.34 / 69.65 0.71 -40.33 / -93.77 0.43Semana 2 38.49 / 46.98 0.82 -57.79 / -117.42 0.49Semana 3 78.06 / 150.07 0.52 -100.13 / -153.11 0.65Semana 4 39.31 / 81.13 0.48 -170.26 / -219.04 0.78TOTAL 205.2 / 347.83 0.59 -368.51 / -583.34 0.63

Ops. Positivas Proporcion Ops. Negativas ProporcionSemana 1 13 / 18 0.72 7 / 18 0.39Semana 2 13 / 18 0.72 9 / 22 0.41Semana 3 15 / 25 0.6 11 / 27 0.41Semana 4 9 / 12 0.75 17 / 27 0.63TOTAL 50 / 73 0.68 44 / 83 0.53

Cuadro 4.2: Balance positivo y negativo y numero de operaciones positivas y negativas decada semana y final. Software sin fiabilidad. Comparacion entre Robots con Red / Robotssin Red

Page 51: An alisis t ecnico de mercados nancieros basado en t

4.1. RESULTADOS DEL PROTOTIPO INICIAL 51

-163.31$. Lo que es mas, unicamente en una de las semanas los robots fuera de nuestrosistema funcionaron mejor. Como debemos tener en cuenta que el hecho de que los robotsen sı funcionen mal en general, y pierdan dinero, esta fuera de nuestro control y no esnuestra responsabilidad, podrıamos pensar que los resultados obtenidos son satisfactorios.

No obstante, un estudio algo mas detallado muestra que no es ası. Es importanteresaltar que, como puede verse en la tabla 4.2, todas las semanas la proporcion de ope-raciones positivas que nuestro sistema deja pasar es superior la proporcion de operacionesnegativas, lo cual sı es sin duda un dato muy positivo.

Sin embargo, si observamos las columnas de proporcion vemos que los resultados no sonbuenos. Este sera el dato que nos indicara en realidad si nuestro sistema esta funcionandocorrectamente, ya que no depende de que los propios robots lo hagan bien o mal. Ası,podemos ver que nuestro sistema permite pasar el 59 % del balance positivo y el 63 %del balance negativo. Es decir, el porcentaje de perdidas producidas por los robots que serealizan en nuestro sistema es superior al porcentaje de ganancias que se producen. Estosignifica que si construyeramos un sistema que dejara operar a mercado aleatoriamente el60 % de las operaciones que los robots solicitaran, estadısticamente deberıa mantener el60 % de las ganancias (mas que nuestro sistema) y como consecuencia tener unicamenteel 60 % de las perdidas (menos que nuestro sistema). Ası, en realidad, el hecho de que losrobots supervisados den mejores resultados que sin supervisar se debe a que en generalha habido muchas mas perdidas que ganancias, por lo que cualquier sistema que evite queuna cierta cantidad de operaciones se realicen (incluso si las elige al azar) mejorarıa losresultados.

Sin embargo, sı podemos ver que hay semanas que nuestro sistema ha funcionado muybien (semanas 1 y 2) aunque haya otras que haya funcionado muy mal (3 y 4). Ademas,tenemos que los resultados de las proporciones de operaciones positivas y negativas querealiza nuestro sistema sı son buenos todas las semanas. Por tanto, nos planteamosque si pudieramos detectar a tiempo en que momentos (o semanas) nuestro sistema ynuestras redes estan fallando en sus predicciones deberıamos mejorar sustancialmentenuestros resultados. Esto es precisamente lo que perseguimos con la implementacion delsistema de fiabilidad y control de errores que desarrollamos e implementamos como partedel prototipo final.

Adicionalmente, anadimos tambien en las tablas 4.3 y 4.4 los balances totales de cadarobot las semanas 2 y 4, encontrandose en esta primera resultado muy buenos, y en lasegunda resultados muy malos. Hay que tener en cuenta en estos datos que hay ocasionesen las que nuestro sistema permite operar a un robot algo de tiempo despues de lo que loharıa sin nuestra intervencion, por lo que los resultados de una “misma operacion” con ysin la supervision de nuestro software pueden ser distintas. Es por eso, por ejemplo, queun robot que haya realizado una unica operacion con y sin nuestro sistema puede tenerbalances ligeramente diferentes.

Page 52: An alisis t ecnico de mercados nancieros basado en t

52 CAPITULO 4. RESULTADOS Y CONCLUSIONES

Balance Original Balance Redes Ops. Positivas Ops. Negativas10062 1.11 2.12 1 / 1 0 / 010075 0 0 0 / 0 0 / 010208 0 0 0 / 0 0 / 010290 0 0 0 / 0 0 / 010309 0 0 0 / 0 0 / 010416 0 0 0 / 0 0 / 015009 0 0 0 / 0 0 / 020020 -3.2 -3.1 2 / 2 1 / 120023 -4.49 0 0 / 0 0 / 220030 -29.5 -33.6 1 / 1 3 / 325001 -13.7 1.6 1 / 4 0 / 525013 -24.1 -7.7 1 / 2 3 / 440003 -18.24 -3.3 0 / 0 1 / 450003 0 0 0 / 0 0 / 050011 0 0 0 / 0 0 / 050016 2.7 2.7 2 / 2 0 / 050030 0 0 0 / 0 0 / 050114 0 0 0 / 0 0 / 050177 4.4 0.3 1 / 2 0 / 050212 0 0 0 / 0 0 / 050242 6.95 6.95 3 / 3 1 / 161228 -7.1 0 0 / 0 0 / 210169 14.73 14.73 1 / 1 0 / 0

Cuadro 4.3: Balance total desglosado de la semana 2. Proporcion de operaciones con Red/ sin Red.

Page 53: An alisis t ecnico de mercados nancieros basado en t

4.1. RESULTADOS DEL PROTOTIPO INICIAL 53

Balance Original Balance Redes Ops. Positivas Ops. Negativas10062 -15.54 0 0 / 0 0 / 110075 0 0 0 / 0 0 / 010208 0 0 0 / 0 0 / 010290 0 0 0 / 0 0 / 010309 26.5 0 0 / 1 0 / 010416 -4.71 -4.71 2 / 2 3 / 315009 -1.8 -1.8 0 / 0 1 / 120020 10.3 10.2 2 / 2 1 / 120023 -26.38 -24.79 0 / 0 1 / 220030 -0.1 -0.1 0 / 0 1 / 125001 1.4 -5.5 0 / 2 1 / 325013 -6.1 -6.1 1 / 1 3 / 340003 -71.91 -63.17 1 / 1 3 / 350003 0 0 0 / 0 0 / 050011 0 0 0 / 0 0 / 050016 8.2 8.2 1 / 1 0 / 050030 0 0 0 / 0 0 / 050114 0 0 0 / 0 0 / 050177 -5.8 -6.1 0 / 0 1 / 150212 0 0 0 / 0 0 / 050242 -37.08 -37.08 2 / 2 3 / 361228 -21.4 0 0 / 0 0 / 310169 6.51 0 0 / 1 0 / 0

Cuadro 4.4: Balance total desglosado de la semana 4. Proporcion de operaciones con Red/ sin Red.

Page 54: An alisis t ecnico de mercados nancieros basado en t

54 CAPITULO 4. RESULTADOS Y CONCLUSIONES

4.2. Resultados Finales

En esta seccion se presentan los resultados finales de nuestro software, siendo la dife-rencia mas importantes respecto a los resultados de la seccion anterior la incorporacional sistema del metodo de control de errores y fiabilidad descrito en la seccion 3.5. Paraobtener estos resultados, se anadieron 40 nuevos robots al sistema, se entrenaron redespara ellos, y se pusieron a funcionar teniendo en cuenta la nueva informacion que nos pro-porcionaba la fiabilidad de cada red. Como metodo de control de errores, hemos elegido elmetodo basando en la tecnica de ajuste de mınimos cuadrados ponderado, que recordemosque consistıa en utilizar las predicciones de las ultimas operaciones y sus resultados finalesreales para ajustar una recta que permita corregir la prediccion nueva.

Ademas, pese a que de nuevo los datos de prediccion y fiabilidad que obtenemosen nuestro sistema estan planteados para ser utilizados por un agente externo, imple-mentamos una nueva estrategia basica que nos permita probar el sistema. En este casoelegiremos para operar todos aquellos robots que, pese a tener en cuenta el error queesperamos cometer en nuestra prediccion, supere un cierto umbral U .

Ademas de este umbral, debemos elegir un valor del parametro α utilizado en el metodoelegido de fiabilidad para definir los pesos que asignamos a cada una de las operacionesanteriores. Tanto este valor α como el valor del umbral U se ajustaron utilizando lasoperaciones cuyos resultados se detallan en la seccion anterior. Ası, se eligieron aquellosparametros que hubieran dado mejores resultados en ese periodo de tiempo. Concreta-mente, estos fueron los parametros α = 0,3 y U = 2.

Los resultados del sistema tras 3 semanas de ejecucion (del lunes 10/08/2014 al domingo31/08/2014) son los que se detallan en esta seccion. Al igual que en la seccion anterior,realizaremos la comparativa entre los resultados obtenidos con nuestro sistema y aquellosque los robots habrıan obtenido sin el.

Nos centraremos principalmente en las mismas metricas: El balance total de cadasemana y desglosado por robot, los balances positivo y negativo y numero de operacionespositivas y negativas. Ademas, volveremos a reflejar la proporcion entre los balances ynumero de operaciones que se realizan con nuestro sistema frente a los totales que seproducirıan sin nuestra intervencion. Esperamos que, si nuestro sistema funciona bien,la proporcion de balance y operaciones positivas que se realizan con nuestro sistema seasiempre mayor que la proporcion balance y operaciones negativas.

En la tabla 4.5 podemos encontrar los balances totales comparados de las 3 semanas,y el balance final total. Ademas, en la tabla 4.6 podemos encontrar el balance positivo ynegativo que realizan los robots que nuestro sistema elige para operar en cada momentofrente al que realizarıa la totalidad de los robots si operaran de forma independiente.Tambien encontramos en esta tabla, al igual que en la seccion anterior, la proporcionentre los resultados de ambos tipos.

Por ultimo, en la tabla 4.7 podemos encontrar los balances finales y numero de opera-ciones positivas y negativas que realiza cada uno de los robots utilizados. Como podemosver, todos los resultados en este caso son mucho mas favorables que en la seccion anterior,en concreto, podemos citar los siguientes:

Page 55: An alisis t ecnico de mercados nancieros basado en t

4.2. RESULTADOS FINALES 55

Balance Final Original Balance Final Redes DiferenciaSemana 1 -144.9 -6.22 138.68Semana 2 -229.22 -102.65 126.57Semana 3 -22.75 39.76 62.51TOTAL -396.87 -69.11 327.76

Cuadro 4.5: Balance total de las 3 semanas y total. Software sin fiabilidad.

Balance Positivo Proporcion Balance Negativo ProporcionSemana 1 138.63 / 154 0.90 -144.85 / -298.9 0.48Semana 2 128.6 / 210.18 0.61 -231.25 / -439.4 0.53Semana 3 155.66 / 265.12 0.59 -115.9 / -287.87 0.40TOTAL 422.89 / 629.30 0.67 -492 / -1026.17 0.48

Ops. Positivas Proporcion Ops. Negativas ProporcionSemana 1 16 / 23 0.70 11 / 22 0.5Semana 2 19 / 29 0.66 15 / 26 0.57Semana 3 23 / 38 0.61 6 / 30 0.2TOTAL 58 / 90 0.64 32 / 78 0.41

Cuadro 4.6: Balance positivo y negativo y numero de operaciones positivas y negativasde cada semana y final. Software con fiabilidad. Comparacion entre Robots con Red /Robots sin Red

Todas las semanas los resultados de balance total de nuestro sistema son mejoresque los obtenidos sin su utilizacion.

Todas las semanas la proporcion de operaciones positivas respecto del total ha sidosuperior a la proporcion de operaciones negativas.

Todas las semanas la proporcion de balance positivo respecto del total ha sidosuperior a la proporcion de balance negativo.

De los 21 robots que han operado y muestran diferencias entre nuestros resultadosy los obtenidos operando independientemente, en 13 se ha producido una mejorade los mismos, y solo en 8 los resultados han empeorado. Lo que es mas, la mediade mejora para esos 13 son 34$, mientras que la media de empeoramiento para losotros 8 es de solo 15$.

Ademas, como resultados finales obtenemos que a pesar de que los robots en general hanfuncionado mal durante este periodo, y el balance total de estos operando independien-temente ha sido de -396.87$, el balance final total de nuestro sistema ha sido de 69.11$.Lo que es mas importante, nuestro sistema ha realizado 58 de 90 operaciones positivas (el64 %) y tan solo 32 de 78 operaciones negativas (el 41 %).

Ademas, la suma del balance de las operaciones positivas que ha dejado pasar ha sido422.89$ de 629.30$ totales (67 %), y la suma del balance de las operaciones negativasrealizadas ha sido tan solo de -492$, frente a los -1026.17$ de balance negativo total(48 %).

Page 56: An alisis t ecnico de mercados nancieros basado en t

56 CAPITULO 4. RESULTADOS Y CONCLUSIONES

Balance Original Balance Redes Ops. Positivas Ops. Negativas10062 6.63 13.77 3 / 3 0 / 110078 -32.5 -32.6 2 / 2 1 / 110208 6.82 6.82 1 / 1 0 / 010224 0 0 0 / 0 0 / 010387 0 0 0 / 0 0 / 015009 -31.5 -19.1 3 / 4 2 / 516052 -126.27 37.33 2 / 3 0 / 220042 0 0 0 / 0 0 / 020059 4.35 3.02 1 / 2 0 / 050016 -38.9 -39.7 0 / 0 1 / 150030 5.89 12.64 2 / 1 0 / 050082 0 0 0 / 0 0 / 050407 -110.91 -92.41 1 / 1 4 / 510169 1.86 1.86 2 / 2 1 / 110185 29.33 -1 0 / 3 1 / 310194 5.06 0 0 / 2 0 / 010225 0 0 0 / 0 0 / 010226 0 0 0 / 0 0 / 010290 8.4 8.4 1 / 1 0 / 050003 -3 0 0 / 0 0 / 150011 -19 -19 1 / 1 1 / 150114 0 0 0 / 0 0 / 010309 16.8 0 0 / 1 0 / 015036 -24.97 -17.99 6 / 8 4 / 616024 0 0 0 / 0 0 / 016080 -90 0 0 / 0 0 / 216104 9.1 9.1 2 / 2 0 / 020020 10 8.2 4 / 6 2 / 220030 -1.6 -6.1 1 / 7 1 / 220035 0 0 0 / 0 0 / 025013 -72.7 -6.8 1 / 2 3 / 830207 0 0 0 / 0 0 / 040003 21.82 -16.04 2 / 6 4 / 740005 -11.4 30.9 1 / 3 0 / 1250006 0 0 0 / 0 0 / 050138 32.52 9.18 1 / 5 0 / 450177 -1 18.2 5 / 6 1 / 250212 -37.4 -22.69 1 / 1 1 / 350242 44.9 44.9 15 / 15 5 / 550450 0 0 0 / 0 0 / 0

Cuadro 4.7: Balance total desglosado de la semana 4.

Page 57: An alisis t ecnico de mercados nancieros basado en t

4.3. CONCLUSIONES 57

Todo esto indica que, finalmente, hemos logrado que nuestro software realice las pre-dicciones con suficiente precision, y hemos podido utilizar esta informacion para manejarlos robots de forma conveniente, mejorando significativamente sus resultados.

4.3. Conclusiones

Recordemos que nuestro objetivo inicial era aplicar tecnicas de inteligencia artificialpara resolver el problema real al que se enfrentaba la empresa Talentum. Esta tenıa milesde robots programados y configurados, y su problema consistıa en elegir cuales de ellostener operando en cada momento. Para ello, planteamos que nuestro objetivo final serıadesarrollar un sistema que diera suficientes datos para tomar esta decision.

La implementacion del primer prototipo unicamente proporcionaba una prediccion delbalance que obtendra cada robot si lo pusieramos a operar en el mercado. Para ello,utilizamos redes neuronales como predictores, y otras tecnicas para las distintas etapas delproceso: analisis principal de componentes, tests estadısticos, etc. Una vez implementadotodo ello, pusimos nuestro sistema a funcionar durante un mes, y evaluamos los resultados.Por desgracia, estos resultados fueron altamente insatisfactorios, aunque esperabamos quemejoraran tras la adicion de las medidas de control de errores al sistema.

Ası, aplicando ideas de matematicas y estadıstica, desarrollamos e implementamos unsistema nuevo que nos proporcionara, ademas de las predicciones, una cierta medida dela fiabilidad de estas. Ahora, utilizando estas dos informaciones, podıamos mejorar lasdecisiones que tomara nuestro agente externo a la hora de elegir los robots para operar.

Finalmente, en el prototipo inicial sı logramos obtener resultados satisfactorios. Enconcreto, tras su ejecucion durante 3 semanas mas, logramos que el agente programado conuna estrategia basica consiguiera realizar operaciones que sumaron un 67 % del balancepositivo total, mientras que unicamente dejo pasar operaciones que sumaron un 48 %del balance negativo total. Esto permitio pasar de unos resultados totales por parte delos robots de perdidas de -396.78$, a perder unicamente -69.11$, lo que constituye unadiferencia de 327.76$, que supone una mejora sustancial de los resultados.

Por otra parte, el sistema actual aun se puede mejorar. Como trabajo futuro propone-mos:

El reentrenamiento automatico de las redes cada cierto tiempo, para utilizar losdatos nuevos.

El entrenamiento de las redes asignando mas peso a los casos obtenidos de opera-ciones realizadas mas recientemente.

Establecer las estrategias de fiabilidad a utilizar independientemente para cada red.Actualmente se establece una estrategia de fiabilidad global, pero para cada redpuede funcionar mejor una que otra.

Establecer estrategias mas complejas para el agente externo utilizando la informa-cion proporcionada.

Page 58: An alisis t ecnico de mercados nancieros basado en t

58 CAPITULO 4. RESULTADOS Y CONCLUSIONES

Ampliar la parte de visualizacion de estadısticas, y en general hacer la interfaz masusable por un usuario menos tecnico.

Probar otros metodos de entrenamiento de redes neuronales.

Utilizar otros factores de medida del rendimiento de un robot aparte del beneficiototal esperado en el caso de realizar una operacion, como una estimacion del beneficioen funcion del tiempo que este operando.

Utilizar otras tecnicas de inteligencia artificial para implementar los predictores,como sistemas clasificadores o support vector machines.

Mejorar el control de errores cometido por las redes. Podrıa utilizarse para ello, porejemplo, en lugar del ajuste a un recta, otra red neuronal para intentar aproximarla funcion de error.

Entrenar las redes penalizando menos las subestimaciones que las sobreestimaciones.

Page 59: An alisis t ecnico de mercados nancieros basado en t

Bibliografıa

[1] Bolsa, Mercados y Tecnicas de Inversion, Francisco Lopez Lubian, Pablo GarcıaEstevez.

[2] Talentum - Automatic Systems for your Trading, http://fxtalentum.com/

[3] Artificial neural networks. Opening the black box. Cancer. Dayhoff JE, DeLeo JM.American Cancer Society, v. 91, p. 1615-1635, 2001.

[4] Neuro-Fuzzy and soft computing. A computational approach to learning and machineintelligence. Jang J.-S.R., Sun C. –T., Mizutani E. (1997).

[5] Coursera - Machine Learning, Andrew Ng. Stanford University. https://www.

coursera.org/course/ml

[6] Apuntes de la asignatura Inferencia Estadıstica, Felix Luis Belzunce Torregrosa, JoseMarıa Ruiz Gomez. Universidad de Murcia. http://aulavirtual.um.es

[7] Principal Components Analysis. http://inst.eecs.berkeley.edu/~ee127a/book/login/l_sym_pca.html

[8] Encog Machine Learning Framework. Heaton Research. http://www.

heatonresearch.com/encog

[9] Weka 3: Data Mining Software in Java. Machine Learning Group at the Universityof Waikato. http://www.cs.waikato.ac.nz/~ml/weka/

[10] Commons Math: The Apache Commons Mathematics Library. http://commons.

apache.org/proper/commons-math/index.html

[11] Jmathplot: Easy Java scientific plot for math engineering. http://code.google.

com/p/jmathplot/

[12] Neural-Networks FAQ, http://www.faqs.org/faqs/ai-faq/neural-nets/part2/

[13] AbstractTableModel (Java Platform SE 7). http://docs.oracle.com/javase/7/

docs/api/javax/swing/table/AbstractTableModel.html

[14] Java SE Technologies - Database - The Java Database Connectivity (JDBC), Oracle,http://www.oracle.com/technetwork/java/javase/jdbc/index.html

59