Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los directores del Proyecto: JOS VILLAR COLLADO Fdo.: .. Fecha: /09/2009
Agradecimientos
Me gustara aprovechar estas lneas para agradecer a mi familia, especialmente a mis padres, todo el cario, comprensin, apoyo y esfuerzo realizado a lo largo de los aos para que este momento haya llegado. Tambin a ti Juan, gracias, por todo lo que me enseas da a da. Confo en que todo te va a ir mejor que bien. A ti, por ser tan especial en mi vida, gracias. Muy importantes en esta etapa tambin han sido mis amigos, sin vosotros nada sera lo mismo. Gracias Hugo, te estar siempre agradecido. No sera justo si no reconociera a Eugenio Snchez el empujn inicial y a Miguel ngel Sanz y Juan Marn todas las dudas resueltas. Agradecer a mis directores, Jos Villar y lvaro Snchez, haberme dado la oportunidad de realizar este proyecto y haber podido trabajar a su lado. Reconocer tambin a Eduardo Alcalde toda la ayuda recibida. Por ltimo, agradecer a Jos Antonio Madrigal y a las Tortugas Hispnicas todo lo aprendido. Espero no dejar de aprender nunca. A todos una vez ms, GRACIAS.
II
El presente proyecto consiste en el desarrollo de una aplicacin de inversi n en bolsa con la que sea posible realizar predicciones sobre las cotizaciones de algunas empresas del parqu espaol. Del mismo modo el sistema ejecutar automticamente rdenes de compra y venta en funcin de dichas predicciones. El objetivo ltimo del proyecto es conseguir un sistema rentable y fiable para el usuario. Se presenta una aplicacin con un interfaz intuitivo para el usuario a travs del cual ser posible entrenar diferentes modelos en busca del ms ptimo a la hora de realizar las predicciones. El usuario ser capaz de estudiar las situaciones y los modelos gracias a la informacin que el sistema facilitar mediante grficas e informes. Para conseguir una aplicacin completa, a la funcionalidad de la misma, se ha aadido un simulador de resultados off-line para que el usuario pueda comprobar los resultados que el sistema alcanzara. El desarrollo del sistema se ha realizado principalmente en Matlab y se han puesto en prctica los conocimientos adquiridos sobre programacin e inteligencia artificial. Ha sido posible el desarrollo de la aplicacin con Matlab gracias a su toolbox sobre redes neuronales y la posibilidad que dispone de crear interfaces grficos de manera gil. La forma de predecir las series financieras en el proyecto se realiza a travs de modelos no lineales, ms concretamente redes neuronales. La aplicacin de modelos no lineales para la prediccin de series financieras est adquiriendo gran importancia en los ltimos aos y se considera un campo de estudio que puede aportar resultados muy interesantes.
III
El proyecto es la continuacin de los trabajos realizados sobre la materia en aos anteriores, ya que los interesantes resultados obtenidos hasta la fecha empujan a seguir investigando en la materia. El presente documento explicar la adaptacin del trabajo realizado hasta el momento y las nuevas mejoras introducidas. Del mismo, se ha desarrollado la lgica que la aplicacin seguir en el tiempo real. Dicho problema quedar solucionado en futuros trabajos con el desarrollo en Visual Basic de las funciones que conecten la aplicacin desarrollada con Visual Chart (el proveedor de informacin burstil).
IV
Abstract
This project develops a stock investment application with which it is possible to forecast the prices of some companies in the Spanish Stock Exchange. Similarly, the system will automatically buy and sell orders based on these predictions. The project's ultimate objective is to achieve a cost-effective and reliable tool for the user. The application has an intuitive user interface through which it will be possible to try different models in order to find the most efficient one to make predictions. The user will be able to study situations and models due to information that the system provides through graphs and reports. An off-line simulator has been added so as to have a complete application. The way to predict the financial series in the project is implemented through non-linear models, specifically neural networks. The project continues with the work done in this area in previous years, since the positive results achieved up to date encourage further investigation of the matter. The real time problem will be solved in future versions with Visual Basic development functions combining the application developed with Visual Chart.
ndice
1.
Introduccin ..................................................................................................................................... 2 1.1. Motivacin .......................................................................................................................................................... 3 1.2. Objetivos ............................................................................................................................................................. 3 1.3. Metodologa ........................................................................................................................................................ 4 1.4. Recursos Empleados ......................................................................................................................................... 6 1.4.1. Hardware...................................................................................................................................................... 6 1.4.2. Software ....................................................................................................................................................... 6
2. 3.
Estado del Arte ................................................................................................................................. 9 Estudio de Antecedentes............................................................................................................... 13 3.1. Inversin en Bolsa ...........................................................................................................................................13 3.2. Prediccin de Series Financieras..................................................................................................................14 3.3. Modelo ...............................................................................................................................................................15 3.3.1. Entradas del Modelo ................................................................................................................................15 3.3.2. Redes Neuronales .....................................................................................................................................18
4.
Extreme Programming .................................................................................................................. 24 4.1. Qu es Extreme Programming ? ..................................................................................................................24 4.2. Fases de la Metodologa XP ............................................................................................................................25 4.2.1. Planificacin del Proyecto ......................................................................................................................25 4.2.2. Diseo .........................................................................................................................................................26 4.2.3. Codificacin ...............................................................................................................................................27 4.2.4. Pruebas.......................................................................................................................................................28 4.3. Conclusiones.....................................................................................................................................................28
5.
Planificacin ................................................................................................................................... 31 5.1. Introduccin .....................................................................................................................................................31 5.2. Histricos..........................................................................................................................................................32 5.3. Modelo ...............................................................................................................................................................33 5.4. Simulacin ........................................................................................................................................................34 5.5. Resultados.........................................................................................................................................................35 5.6. Sistema de Decisin ........................................................................................................................................36 5.7. Tiempo real.......................................................................................................................................................36
6.
VI
6.2.1. Carga ...........................................................................................................................................................40 6.2.2. Visualizacin .............................................................................................................................................41 6.2.3. Diagrama de Flujo de Datos ....................................................................................................................41 6.3. Modelo ...............................................................................................................................................................42 6.3.1. Entrenamiento ..........................................................................................................................................43 6.3.2. Carga ...........................................................................................................................................................44 6.3.3. Diagrama de Flujo de Datos ....................................................................................................................45 6.3.4. Gestin de Modelos ..................................................................................................................................45 6.4. Simulacin ........................................................................................................................................................47 6.4.1. Simulacin..................................................................................................................................................47 6.4.2. Carga ...........................................................................................................................................................48 6.4.3. Diagrama de Flujo de Datos ....................................................................................................................48 6.5. Resultados.........................................................................................................................................................49 6.5.1. Diagrama de Flujo de Datos ....................................................................................................................50 6.6. Sistema de Decisin ........................................................................................................................................51 6.7. Tiempo Real ......................................................................................................................................................52 6.7.1. Diagrama de Flujo de Datos ....................................................................................................................52 6.8. Diagrama de Flujo de la Aplicacin ..............................................................................................................53 7. Desarrollo ....................................................................................................................................... 55 7.1. Introduccin .....................................................................................................................................................55 7.2. Histricos..........................................................................................................................................................55 7.2.1. Inicio de Sesin .........................................................................................................................................55 7.2.2. Resumen de Variables..............................................................................................................................57 7.2.3. LOG de Sesin ............................................................................................................................................58 7.2.4. Carga de Histricos ..................................................................................................................................59 7.2.5. Visualizacin de Histricos.....................................................................................................................61 7.3. Modelo ...............................................................................................................................................................63 7.3.1. Entrenamiento del Modelo......................................................................................................................64 7.3.2. Carga del Modelo ......................................................................................................................................66 7.3.3. Gestin de Modelos ..................................................................................................................................67 7.4. Simulacin ........................................................................................................................................................70 7.4.1. Simular un Periodo...................................................................................................................................71 7.4.2. Carga de una Simulacin .........................................................................................................................73 7.5. Resultados.........................................................................................................................................................73 7.6. Sistema de Decisin ........................................................................................................................................77 7.7. Tiempo Real ......................................................................................................................................................79 8. Pruebas ........................................................................................................................................... 81 8.1. Pruebas unitarias.............................................................................................................................................81 8.2. Prueba global del sistema ..............................................................................................................................82 8.3. Resultados.........................................................................................................................................................82
VII
8.3.1. Enero 2008 ................................................................................................................................................82 8.3.2. Febrero 2008 .............................................................................................................................................86 8.3.3. Marzo 2008 ................................................................................................................................................89 8.3.4. Comparativa ..............................................................................................................................................92 9. Planificacin del proyecto ............................................................................................................ 96 9.1. Estructura de Descomposicin del Trabajo (EDT) ....................................................................................96 9.2. Diagrama PERT ................................................................................................................................................99 9.3. Responsabilidades del Proyecto ................................................................................................................ 102 10. Asignacin Presupuestaria ......................................................................................................... 104 10.1. Asignacin horas/hombre ........................................................................................................................ 104 10.2. Tarifas de los Participantes...................................................................................................................... 105 10.3. Presupuesto Final....................................................................................................................................... 105 10.4. Conclusin ................................................................................................................................................... 106 11. 12. Conclusiones................................................................................................................................. 108 Lneas de continuacin ............................................................................................................... 110
12.1. Finalizar los Mdulos de Visual Basic para Visual Chart ..................................................................... 110 12.2. Optimizar Entrenamiento del Modelo .................................................................................................... 110 12.3. Incorporacin de Nuevas Entradas ......................................................................................................... 111 12.4. Optimizar la Toma de Decisiones ............................................................................................................ 111 12.5. Dinamizar las Empresas que Sern Predichas ...................................................................................... 112 12.6. Contrastar con otros Modelos .................................................................................................................. 112 12.7. Limitar el Capital Invertido ...................................................................................................................... 112 13. ANEXO A Manual de Usuario .................................................................................................... 114 13.1.1. Cargar .................................................................................................................................................... 115 13.1.2. Ver.......................................................................................................................................................... 116 13.2. Modelo .......................................................................................................................................................... 118 13.2.1. Entrenar/Cargar .................................................................................................................................. 118 13.2.2. G de Modelos ...................................................................................................................................... 120 13.3. Simular ......................................................................................................................................................... 122 13.3.1. Simular/Cargar .................................................................................................................................... 122 13.4. Ver Resultados ............................................................................................................................................ 124 13.4.1. Resumen General................................................................................................................................. 124 13.4.2. Elegir Empresa..................................................................................................................................... 124 13.5. Otra informacin ........................................................................................................................................ 127 14. ANEXO B Variaciones de los Indicadores Respecto al Precio .............................................. 129 14.1. ADX (Movimiento Direccional) ................................................................................................................ 129 14.2. MACD (Convergencia-Divergencia del Promedio Mvil)..................................................................... 130 14.3. OBV (Balance de Volmenes) ................................................................................................................... 131 14.4. RSI (ndice Relativo de Fuerza) ............................................................................................................... 132 13.1. Datos............................................................................................................................................................. 115
VIII
14.5. CCI (ndice de Commodities ) .................................................................................................................. 132 14.6. Estocstico................................................................................................................................................... 133 15. Bibliografa................................................................................................................................... 135 15.1. Publicaciones .............................................................................................................................................. 135 15.2. Apuntes ........................................................................................................................................................ 137 15.3. Pginas Web ................................................................................................................................................ 137
IX
1. INTRODUCCIN
En este apartado se expondr una introduccin general del proyecto, las motivaciones para realizarlo, los objetivos, la metodologa y los recursos necesarios para el mismo.
1. Introduccin
El proyecto, Sistema de Inversin en Bolsa a Corto Plazo , contina con el trabajo y los estudios realizados por otros compaeros sobre la materia en aos anteriores. Se trata por tanto de un trabajo que ha ido evolucionando y mejorando a lo largo del tiempo. Empezando con el proyecto [MARA07], en el que se estudi la aplicacin del perceptrn multicapa para la toma de decisiones sobre la compra y la venta de acciones de bolsa a corto plazo, cuyos resultados ayudaron a continuar por las lneas de investigacin que se estaban siguiendo. La principal referencia al proyecto es [HORN08]. Sirve de punto de partida y los resultados alcanzados animan a seguir perfeccionando el trabajo realizado. A lo largo del presente documento se har referencia constante a dicho proyecto por lo que se recomienda realizar una lectura previa. El proyecto actual, seguir las mismas lneas de investigacin que los anteriores y tratar de mejorar, tanto la toma de decisiones del sistema como el tiempo de ejecucin del mismo. Del mismo modo, se aadir funcionalidad para poder trabajar en tiempo real y se disear un interfaz de usuario para facilitar todas las operaciones.
1.1. Motivacin
La principal motivacin para realizar un proyecto sobre inversin en bolsa a corto plazo es la necesidad que existe de tener una herramienta eficaz y eficiente en este campo. Hasta ahora una de las principales limitaciones para realizar inversiones en bolsa intradiarias, era la presencia fsica del inversor, al finalizar el proyecto, se pretende disponer de una aplicacin que tome decisiones de inversi n
automticamente. Existen ventajas significativas en la utilizacin de la inteligencia artificial y los sistemas automticos en la inversin en bolsa. Al operar a muy corto plazo (intrada), el sistema es ajeno a los momentos que est pasando la bolsa, ya que aprovechar las pequeas fluctuaciones que existan a lo largo del da. Las conclusiones obtenidas en proyectos anteriores sobre la misma materia refuerzan la idea de que es posible alcanzar grandes resultados con estos sistemas (Ver [MARA07] y [HORN08]).
1.2. Objetivos
Los objetivos que se pretenden alcanzar a la finalizacin del proyecto son: Conseguir una herramienta intuitiva y de fcil utilizacin que permita al usuario: o Analizar los histricos de las empresas. o Entrenar diferentes modelos y poder comparar los errores cometidos por cada uno de ellos en busca del modelo ms preciso.
o Realizar simulaciones off-line de diferentes periodos de la bolsa que aportarn entre otros resultados sobre las posiciones y el beneficio obtenido. o Disponer de conexin en tiempo real con el broker y la bolsa de Madrid para que el sistema lance las operaciones oportunas automticamente a lo largo del da. o Seguir detalladamente todas las operaciones realizadas en cada sesin. o Obtener beneficios sin correr riesgos elevados. Optimizar el sistema de decisin que existe en la actualidad. Cumpliendo con los objetivos expuestos anteriormente el usuario dispondr de una herramienta de anlisis y un sistema automtico de inversin ergonmico, seguro y eficaz.
1.3. Metodologa
La metodologa que se va a seguir para el desarrollo del proyecto es la metodologa Extreme Programming . Esta forma de trabajar es la ms destacada dentro de todos los procesos giles de desarrollo de software. Se considera gil ya que intenta evitar los tortuosos y burocrticos caminos de las metodologas tradicionales enfocndose en el cliente y en los resultados. Los principios bsicos de esta metodologa son: Simplicidad: se simplifica el diseo para agilizar el desarrollo y facilitar el mantenimiento. Tambin se aplica la simplicidad en la documentacin eligiendo adecuadamente los nombres de las variables, mtodos y clases.
Comunicacin: La comunicacin con el cliente es fluida ya que el cliente forma parte del equipo de desarrollo. El cliente decide qu caractersticas tienen prioridad y siempre debe estar disponible para solucionar dudas. Feedback : Al realizarse ciclos muy cortos tras los cuales se muestran resultados, se minimiza el tener que rehacer partes que no cumplen con los requisitos y ayuda a los programadores a centrarse en lo que es ms importante.
(Fuente: [WEB002])
Las caractersticas principales son: Desarrollo iterativo e incremental. Pruebas unitarias continuas, frecuentemente repetidas y automatizadas. Frecuente integracin del equipo de programacin con el cliente o usuario. Correccin de todos los errores antes de aadir nueva funcionalidad. Hacer entregas frecuentes. Simplicidad en el cdigo: es la mejor manera de que las cosas funcionen. Cuando todo lo anterior est correcto se podr aadir nueva funcionalidad si es necesario.
1.4.1. Hardware PC Porttil: porttil de gama media con los recursos necesarios para la realizacin del proyecto. 1.4.2. Software Matlab : (abreviatura de MATrix LABoratory ) es un software matemtico que ofrece un entorno de desarrollo integrado con un lenguaje de programacin propio (lenguaje M). Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos y funciones, la implementacin de algoritmos, la creacin de interfaces de usuario y la comunicacin con programas en otros lenguajes y con otros dispositivos hardware. El desarrollo de la aplicacin principal se ha llevado a cabo sobre esta herramienta. Gracias a las libreras que posee sobre inteligencia artificial y la posibilidad de desarrollar interfaces grficos se consider la mejor opcin a la hora de programar el sistema. Visual Chart : Visual Chart es la aplicacin financiera ms potente que existe y permite hacer un seguimiento real, de forma fcil e intuitiva, de cualquier circunstancia relativa a las inversiones en bolsa. Admite recabar, interpretar y utilizar los datos de cualquier valor o mercado, as como
Existe una fuerte restriccin en cuanto al tiempo de ejecucin del programa. Cada cinco minutos el sistema debe tomar una decisin de inversin, por lo tanto, la combinacin del hardware y el software debe ajustarse a esta ventana de tiempos. De no ser as, el sistema podra llegar a la toma de decisiones tarde y por consiguiente errneamente.
poder manejar de forma operativa toda la informacin recibida utilizando eficaces herramientas de anlisis y estudio. Con Visual Chart y una licencia para obtener datos en tiempo real del IBEX-35 se pueden obtener las entradas al modelo y sobre la misma plataforma lanzar las rdenes de compra o venta. Visual Basic : es un lenguaje de programacin desarrollado por Alan Cooper para Microsoft. El lenguaje de programacin es un dialecto de BASIC, con importantes aadidos. Su primera versin fue presentada en 1991 con la intencin de simplificar la programacin utilizando un ambiente de desarrollo completamente grfico que facilitar la creacin de interfaces grficas y en cierta medida tambin la programacin misma. Visual Basic constituye un entorno de desarrollo integrado ( IDE ), que ha sido empaquetado como un programa de aplicacin, es decir, consiste en un editor de cdigo (programa donde se escribe el cdigo fuente), un depurador (programa que corrige errores en el cdigo fuente para que pueda ser bien compilado), un compilador (programa que traduce el cdigo fuente a lenguaje de mquina), y un constructor de interfaz grfica o GUI (es una forma de programar en la que no es necesario escribir el cdigo para la parte grfica del programa, sino que se puede hacer de forma visual). Gracias a este software es posible la comunicacin entre Visual Chart y Matlab para toda la operativa en tiempo real. Microsoft Office : para la realizacin de toda la documentacin ha sido necesario utilizar los programas de la herramienta ofimtica de Windows, tanto Word como PowerPoint .
El desarrollo de sistemas automticos de inversin supone un ahorro de tiempo para las personas que lo empleen siempre y cuando consigan que sea rentable. Es fcil descubrir cantidad de cursos y msteres sobre la materia por las ventajas que aporta. Es posible encontrar multitud de aplicaciones en Internet sobre sistemas de automticos de trading, muchos de ellos de forma gratuita que se basan en simples clculos y su rentabilidad muchas veces queda en entredicho. En otras ocasiones los sistemas requieren un pago por adquirirlo y prometen rentabilidades desorbitadas que no terminan de ofrecer confianza en el inversor. A pesar de desconocer los resultados finales de todas estas aplicaciones, a continuacin se har referencia a algunas de ellas. En la direccin [WEB006], el lector podr encontrar un par de aplicaciones sobre trading con futuros y con acciones. Ms en concreto, disponen de un sistema automtico de inversin en empresas del IBEX-35, Sistema ABCBOLSA. Dicho sistema realiza una media de tres a siete operaciones al ao por cada valor del ndice, dispone de stops de proteccin arriesgando en cada operacin entre un 3 y un 6% del capital. Las rentabilidades para los aos 2005, 2006 y 2007 han sido: 60, 17 y 40% respectivamente. Es posible encontrar otro sistema de inversin en bolsa en la pgina [WEB007], AIM ( Automatic Investment Management ), realizado por Robert Lichello. Este sistema centra la inversin en una determinada compaa que tras su estudio, va recomendando la compra o venta de las acciones.
La direccin web en la que el lector podr encontrar ms software relacionado con el proyecto es en [WEB008]. A continuacin se nombran y detallan dos de las ms relevantes: Aimotionless Investment Manager : dicha aplicacin asesora al usuario a la hora de vender o comprar acciones siguiendo los algoritmos detallados en el bestseller de Robert Lichello. SprinN Professional: es un sistema de prediccin de mercados capitales. Soporta cualquier activo financiero en cualquier mercado del mundo. Dicho sistema aplica tcnicas de inteligencia artificial en sus predicciones, basadas en complejas redes neuronales. Su principal funcin es la prediccin, incluyendo recomendaciones, con lo que el usuario slo deber invertir tiempo en las medidas a tomar y no en observar las tendencias o perspectivas. La aplicacin incluye numerosos indicadores, medias mviles, volatilidad, osciladores, indicador
desviaciones,
momentos,
incrementos,
estocstico, MACD... Provee tambin al usuario de detallados informes y grficos de todos los anlisis.
El lector podr encontrar ms informacin referente al tema buscando en la web por el ttulo del presente proyecto. Desde el programa Visual Chart es posible programar estrategias de inversin en Visual Basic a travs de un interfaz sencillo, pero los sistemas creados no tratan de predecir las series financieras sino que simplemente lanzan rdenes cuando la cotizacin alcanza un punto indicado o determinado indicador recomienda la compra.
10
El trabajo propuesto en el presente proyecto va ms all y pretende ser capaz de predecir en un espacio temporal reducido el movimiento que sufrir la cotizacin e intentar aprovechar las subidas y bajadas de la bolsa en el da para obtener rentabilidad. Las grandes entidades financieras disponen de sofisticados sistemas y herramientas para la inversin en bolsa. Debido al riesgo que existe para la entidad si se descubriera el tipo de algoritmo que utiliza o en que variables se basa, las entidades emplean los sistemas ms desarrollados para su propia utilizacin, mientras que los sistemas ms bsicos los ponen a disposicin de sus clientes.
11
3. ESTUDIO DE ANTECEDENTES
En este apartado se introduce brevemente la inversin en bolsa, la prediccin de series financieras y se explica el modelo empleado en el proyecto.
12
3. Estudio de Antecedentes
3.1. Inversin en Bolsa
El modelo de inversin que se viene planteando es la inversin en acciones a corto plazo, ya que se considera el escenario ms susceptible de ser modelado matemticamente. Un modelo matemtico de prediccin requiere de un escenario en el cual la prediccin a realizar dependa de una serie de variables cuantificables. Se parte del supuesto de que las variaciones de una accin en el corto plazo estn fuertemente afectadas por la informacin histrica que se tiene de sta. Esta informacin histrica se puede representar mediante el valor de los diferentes indicadores burstiles que se utilizarn. La principal ventaja que tiene invertir en bolsa en corto plazo es que se cuenta con la posibilidad de aprovechar la elevada volatilidad del mercado. Como desventaja, este tipo de inversin acarrea unos costes de transaccin (pago de comisiones a intermediarios) muy elevados debido al gran nmero de operaciones que se realizan. Adems la inversin en bolsa en corto plazo requiere un seguimiento continuo del mercado (ver [RODR04]). Cuando se ejecutan rdenes hay que pagar una comisin al intermediario que las efecta. La bolsa puede ser vista desde diferentes pticas segn [FERN07]: como canalizadora del ahorro, como va para la financiacin empresarial o como barmetro de la economa. En el contexto del proyecto, la visin de la bolsa se aproxima ms a la primera de las anteriores.
13
(Fuente: [CAVA07])
Ciclos: un ciclo se refiere a movimientos hacia arriba o hacia abajo alrededor del nivel de tendencia. Estacionalidades: patrones que se repiten cada determinado tiempo.
14
Aleatoriedades: son movimientos irregulares en una serie de tiempo que no siguen un patrn regular, ni reconocible.
La prediccin de valores futuros de series financieras es un problema difcil, dado que debera tener en cuenta todos los parmetros que determinan las expectativas de los intervinientes en el mercado, y estos parmetros suelen ser de carcter psicolgico e imposibles de cuantificar. Lo que s es cierto es que muchas de las expectativas que genera el valor de una accin se deben a la informacin histrica que se conoce de ella. La aplicacin desarrollar modelos utilizando un enfoque de redes, en busca de un algoritmo que imite el comportamiento de la serie financiera. La experiencia de anteriores estudios indica que la utilizacin de redes neuronales incrementa la precisin en la prediccin de series financieras.
3.3. Modelo
En este apartado van a ser vistas a grandes rasgos las principales caractersticas del modelo empleado para predecir las series temporales. Se estudiarn las entradas, las redes y las salidas del modelo. Sobre el modelo existente se ha trabajado para optimizar ciertos aspectos y se ha aadido funcionalidad en la aplicacin para facilitar al usuario la eleccin del modelo que mejor prediccin haga. 3.3.1. Entradas del Modelo Las entradas al modelo se obtienen de los datos histricos de las empresas que interesen de la Bolsa. En la versin anterior, los datos histricos se tenan que descargar manualmente. Era necesario seleccionar un intervalo
15
de tiempo de 5 minutos y se descargaban de la aplicacin Visual Chart . Dicha aplicacin convierte los grficos de las compaas en texto, cuyo formato es:
Representa a la empresa. Fecha (p.e.: 20090915). Hora (p.e.: 103000). Precio de apertura. Precio ms alto. Precio ms bajo. Precio de cierre. Volumen en el periodo.
Tabla 1. Formato de los histricos
Una vez descargados los datos en ficheros de texto, se procesan con funciones de Matlab para que formen parte de las entradas del modelo. Como se explicar en el apartado siguiente, para cada empresa existir una red neuronal que ser la que haga la prediccin para el periodo siguiente. Las entradas al modelo son las que se presentan a continuacin, despus de las conclusiones del proyecto [MARA07] y de los estudios empricos realizados por [HORN08] que concluyeron con la incorporacin de algunas nuevas entradas y con la eliminacin de otras existentes. En definitiva, las 30 entradas al modelo se presentan en la siguiente tabla:
16
Entrada 1 Entrada 2 Entrada 3 Entrada 4 Entrada 5 Entrada 6 Entrada 7 Entrada 8 Entrada 9 Entrada 10 Entrada 11 Entrada 12 Entrada 13 Entrada 14 Entrada 15 Entrada 16 Entrada 17 Entrada 18 Entrada 19 Entrada 20 Entrada 21 Entrada 22 Entrada 23 Entrada 24 Entrada 25 Entrada 26 Entrada 27 Entrada 28 Entrada 29 Entrada 30
Close (t-1) Open (t-1) Open (t-2) Open (t-3) Open (t-5) Open (t-7) Open (t-9) Open (t-11) Open (t-13) Open (t-15) Open (t-17) Pendiente de los 4 ltimos precios de apertura Pendiente de los 2 ltimos precios de apertura Media exponencial de los ltimos 14 precios de apertura Media mvil de los ltimos 26 precios de apertura Media mvil de los ltimos 7 precios de apertura Media mvil de los ltimos 42 precios de apertura Valor del ADX Coeficiente de variacin del ADX respecto al precio de apertura* Valor del MACD Valor de SIGNAL Coeficiente de variacin del MACD respecto al precio de apertura Coeficiente de variacin del OBV respecto al precio de apertura Valor del RSI Coeficiente de variacin del RSI respecto al precio de apertura Valor del CCI Coeficiente de variacin del CCI respecto al precio de apertura Valor de la curva K del Estocstico Diferencia entre las dos curvas del Estocstico (K-D) Coeficiente de variacin de la curva K del Estocstico respecto al precio de apertura
Tabla 2. Lista de Entradas del Modelo
Las primeras 11 entradas hacen referencia a los periodos anteriores al que se estudia en el periodo t, as se obtendr el precio de cierre del periodo inmediatamente anterior y varios precios de apertura de periodos anteriores. El resto de entradas se calculan aplicando los diferentes indicadores que se
17
pueden ver en el documento anexo a ste con el ttulo de ANEXO BVariaciones de los indicadores respecto al precio . 3.3.2. Redes Neuronales El modelo matemtico que utiliza el sistema de inversin para predecir valores futuros es una red neuronal artificial (RNA). En este captulo se van a resumir las principales caractersticas. Si el lector quisiera profundizar en la materia se recomiendan los trabajos [GARC02], [A_SANZ] y [HORN08]. Una red neuronal artificial est compuesta por un conjunto de neuronas interconectadas entre s que trabajan conjuntamente para solucionar un determinado problema. El elemento bsico de una red neuronal es la neurona. Una neurona no es ms que una funcin de transferencia que a partir de un nmero de entradas calcula una nica salida. Estas entradas estn ponderadas de manera que cada una de ellas lleva asociada un peso (constante por la que se multiplica su valor) que representa la importancia que tiene la entrada en la salida de la neurona. Los parmetros necesarios para definir el funcionamiento de una neurona son: Nmero de entradas. Pesos de las entradas. Funcin de transferencia. Existen diferentes tipos de redes neuronales segn la estructura en la que estn organizadas las neuronas: redes de propagacin hacia delante ( feedforward ), redes recurrentes, estructura de Lattice, redes estocsticas, redes modulares Es posible entrenar las redes con alguno de los siguientes mtodos para conseguir el objetivo:
18
Entrenamiento supervisado: en este tipo de entrenamiento se le proporciona a la red una serie de ejemplos, denominados patrones de entrenamiento, que consisten en pares de entradas con sus correspondientes salidas (ejemplos de cmo se quiere que funcione la red neuronal). El proceso de entrenamiento consistir en ajustar los pesos para que la salida de la red sea lo ms parecida posible a la salida deseada (terica). Entrenamiento no supervisado: en este tipo de entrenamiento se presenta a la red una serie de ejemplos pero no se presenta la respuesta deseada. Lo que hace la red es reconocer regularidades en el conjunto de entradas. Entrenamiento hbrido: es una mezcla de los anteriores. Unas capas de la red tienen un aprendizaje supervisado y otras capas de la red tienen un aprendizaje de tipo no supervisado. Entrenamiento recurrente: Es un entrenamiento en el que no se proporciona una salida deseada, slo se indica si la salida es correcta o no, pero no indica en cunto se diferencia de la salida buscada. En el modelo, desde el que se parte en el presente trabajo, la elecci n de la red fue un perceptrn multicapa. Se trata del tipo de red neuronal ms eficaz y que ms se utiliza para la prediccin de series temporales segn estudios realizados anteriormente (consultar [CRUZ04] y [OLME04]). En estos estudios se aprecia que el perceptrn multicapa tiene la habilidad de permitir a la red hacer generalizaciones razonables. Las neuronas de las capas intermedias son detectoras de caractersticas. Estas propiedades
(generalizacin y deteccin de caractersticas) del perceptrn multicapa hacen que sea el tipo de red neuronal ms apropiada para la prediccin de series financieras.
19
(Fuente: [OLME04])
Es de vital importancia recordar que el sistema realiza predicciones de valores burstiles cada 5 minutos. Por lo tanto, es necesaria una red neuronal que se ejecute en esa ventana de tiempo, esta caracterstica tambin la cumple el perceptrn multicapa aunque su entrenamiento sea lento. Una vez escogido el tipo de red que se emplear para la prediccin de las cotizaciones se realiz un estudio sobre la estructura de la misma, es decir, el nmero de capas y de neuronas en cada capa. Estudios anteriores han mostrado que con dos capas ocultas se puede aproximar funciones con una precisin arbitrariamente buena (ver [CYBE89]). Hasta ahora no se han publicado estudios de perceptores multicapa con ms de dos capas ocultas. Se parte por tanto de una red neuronal con dos capas ocultas. Las conclusiones del trabajo de [HORN08] establecen el nmero ptimo de la primera capa en 30 neuronas y para la segunda capa oculta en 7 neuronas.
20
En definitiva y para fijar el punto de partida del proyecto, el modelo anterior era: Perceptrn Multicapa N de entradas 30 N de salidas 1 N de capas 4 N de neuronas en la capa de entrada 30 N de neuronas en la primera capa oculta 30 N de neuronas en la segunda capa oculta 7 N de neuronas en la capa de salida 1 Funcin de transferencia de la primera capa Tangente sigmoidea oculta Funcin de transferencia de la segunda capa Tangente sigmoidea oculta Funcin de transferencia de la capa de salida Lineal Algoritmo de entrenamiento Levenberg-Marquardt2
Tabla 3. Resumen del modelo
2
21
(Fuente: [HORN08])
22
4. EXTREME PROGRAMMING
En este apartado se realizar una introduccin a la metodologa y a las fases de la misma.
23
4. Extreme Programming
Una frase de Kent Beck que resalta muy bien este aspecto dice as: Todo en el software cambia. Los requisitos cambian. El diseo cambia. El negocio cambia. La tecnologa cambia. El equipo cambia. Los miembros del equipo cambian. El problema no es el cambio en s mismo, puesto que sabemos que el cambio va a suceder; el problema es la incapacidad de adaptarnos a dicho cambio cuando ste tiene lugar.
3
24
(Fuente: [WEB002])
4.2.1. Planificacin del Proyecto Historias de usuario: el primer paso de cualquier proyecto que siga la metodologa XP es definir las historias de usuario con el cliente. Las historias de usuario tienen la misma finalidad que los casos de uso pero con algunas diferencias. Son usadas para estimar tiempos de desarrollo de la parte de la aplicacin que describen. Plan de entregas: despus de tener ya definidas las historias de usuario es necesario crear un plan de entregas, donde se indiquen las historias de usuario que se crearn para cada versin del programa y las fechas en las que se publicarn estas versiones.
25
Iteraciones: todo proyecto que siga la metodologa XP se ha de dividir en iteraciones. Al comienzo de cada iteracin los clientes deben seleccionar las historias de usuario definidas en el Plan de Entregas que sern implementadas.
Reuniones diarias: es necesario que los desarrolladores se renan diariamente y expongan sus problemas, soluciones e ideas de forma conjunta. Las reuniones tienen que ser fluidas y todo el mundo tiene que tener voz y voto.
4.2.2. Diseo Diseos simples: la metodologa XP sugiere que hay que conseguir diseos simples y sencillos. Hay que procurar hacerlo todo lo menos complicado posible para conseguir un diseo fcilmente entendible e implementable que a la larga costar menos tiempo y esfuerzo desarrollar. Glosarios de trminos: usar glosarios de trminos y una correcta especificacin de los nombres de mtodos y clases ayudar a
26
comprender el diseo y facilitar sus posteriores ampliaciones y la reutilizacin del cdigo. Riesgos: si surgen problemas potenciales durante el diseo, XP sugiere utilizar una pareja de desarrolladores para que investiguen y reduzcan al mximo el riesgo que supone ese problema. Funcionalidad extra: nunca se debe aadir funcionalidad extra al programa aunque se piense que en un futuro ser utilizada. Slo el 10% de la misma es utilizada, lo que implica que el desarrollo de funcionalidad extra es un desperdicio de tiempo y recursos. Refactorizar: es mejorar y modificar la estructura y codificacin de cdigos ya creados sin alterar su funcionalidad. Refactorizar supone revisar de nuevo estos cdigos para procurar optimizar su
funcionamiento. Es muy comn rehusar cdigos ya creados que contienen funcionalidades que no sern usadas y diseos obsoletos.
4.2.3. Codificacin Cliente: el cliente es una parte ms del equipo de desarrollo; su presencia es indispensable en las distintas fases de XP. A la hora de codificar una historia de usuario su presencia es an ms necesaria. No se puede olvidar que los clientes son los que crean las historias de usuario y negocian los tiempos en los que sern implementadas. Codificacin: la codificacin debe hacerse ateniendo a estndares de codificacin ya creados. Programar bajo estndares mantiene el cdigo consistente y facilita su comprensin y escalabilidad. Optimizacin: la optimizacin del cdigo siempre se debe dejar para el final. Hay que hacer que funcione y que sea correcto, ms tarde se puede optimizar.
27
4.2.4. Pruebas
Pruebas: al ser las distintas funcionalidades de la aplicacin no demasiado extensas, no se harn test que analicen partes de las mismas, sino que las pruebas se realizarn para las funcionalidades generales que debe cumplir el programa especificado en la descripcin de requisitos.
4.3. Conclusiones
Los resultados tras la utilizacin de esta metodologa apuntan a un posible cambio en el desarrollo del software segn las encuestas.
(Fuente: [WEB002])
Se ha escogido esta metodologa para el desarrollo ya que se ha credo la ms conveniente dadas las caractersticas del proyecto.
28
Si el lector quisiera profundizar en la programacin extrema se le recomiendan las siguientes lecturas: [BECK02], [ROSE03], [WEB002], [WEB003] y [WEB004]. En los siguientes captulos se explicarn las distintas fases de planificacin, diseo, desarrollo y pruebas que se han llevado a cabo en el proyecto fin de carrera.
29
5. PLANIFICACIN
En este apartado se expondr dicha fase de la metodologa XP aplicada a las tareas a realizar en el proyecto.
30
5. Planificacin
5.1. Introduccin
Siguiendo con la metodologa XP las tareas se deben factorizar lo mximo posible. Una vez se tiene una tarea atmica, se realizan las cuatro fases principales de la metodologa: planificacin, diseo, desarrollo y pruebas. Se ha considerado ms cmodo para el lector agrupar en la memoria el trabajo realizado en cada una de las fases. En lugar de tener captulos con las diferentes tareas a realizar y que cada captulo siguiera el mismo esquema de las cuatro fases, se ha preferido hacer cuatro captulos que se titularn como cada una de las fases. As pues, aunque el orden cronolgico no sea el correcto, en este captulo y en los siguientes se explicarn los trabajos realizados para cada tarea en funcin del captulo/fase en el que se encuentre. El proyecto se ha dividido en seis grandes tareas para facilitar el trabajo a la hora de desarrollar el interfaz grfico 4: Carga y visualizacin de histricos (Histricos). Entrenamiento y/o carga del modelo (Modelo). Carga y/o realizacin de simulacin (Simulacin). Visualizacin de resultados de la simulacin (Resultados). Mejora del sistema de decisin (Sistema de decisin). Funcionamiento en tiempo real (Tiempo real).
Entre parntesis aparecen los futuros ttulos de los apartados que harn referencia a cada parte del proyecto.
4
31
5.2. Histricos
NOTA : En esta etapa se detecta la necesidad de facilitar al usuario informacin referente a las variables que tenga cargadas en el sistema y se tratar de resolver. Del mismo modo se cree conveniente proporcionar al usuario un log en el que se reflejen los pasos dados en cada sesin.
32
5.3. Modelo
REQUISITOS : Existencia de histricos cargados en el sistema (slo para el entrenamiento, si se decide cargar un modelo entrenado con anterioridad no ser necesario).
NOTA : Existir la opcin de comparar modelos para conocer cul de todos los entrenados ajusta mejor la variable del precio.
33
5.4. Simulacin
REQUISITOS : Existencia de histricos cargados en el sistema (slo para realizar una simulacin, si se decide cargar una hecha con anterioridad no ser necesario). Existencia de un modelo cargado en el sistema (slo para realizar una simulacin, si se decide cargar una hecha con anterioridad no ser necesario).
34
5.5. Resultados
35
36
6. DISEO
En este apartado se expondr el diseo de la aplicacin desglosndolo en cada tarea realizada.
37
6. Diseo
6.1. Introduccin
Como ya se adelantara en el apartado 1.4 Recursos Empleados, en el primer captulo en la seccin de software, el sistema se ejecutar sobre el sistema operativo de Windows XP. El desarrollo de la aplicacin principal se realizar en Matlab ya que facilita mucho el trabajo la librera de redes neuronales que aporta este software. La informacin de la Bolsa de Madrid se conseguir con la aplicacin Visual Chart y la licencia de tiempo real para el Ibex-35 a travs de Internet. En dicha plataforma es posible desarrollar rutinas en Visual Basic con las cuales se descargarn los datos cada cinco minutos y se lanzarn las rdenes oportunas de compra o venta.
38
6.2. Histricos
Antes de abordar el tema de la carga y la visualizacin de los histricos, se pretende disear un panel que sirva de resumen de las variables que se cargan en el sistema para que el usuario tenga acceso a esa informacin siempre que quiera. De esta forma, el usuario, sabr en todo momento que variables tiene cargadas en memoria y se mostrar la ubicacin de las mismas en el equipo, adems de un breve resumen sobre la variable siempre que proceda. La nota que aparece en el apartado 5.2 Histricos del captulo anterior, enuncia la problemtica expuesta en los prrafos anteriores. Adems en dicha nota, se hace referencia a facilitar al usuario un log para saber las acciones que realiz en cada una de las sesiones. En el log se guardar informacin de cada accin acompaada de la fecha y la hora en la que se realiz. Los mensajes tipo que aparecen en este log sern del estilo:
30/07 30/07 30/07 30/07 30/07 30/07 30/07 01:16:47 01:17:00 01:17:15 01:17:15 01:17:16 01:17:16 01:17:50 -> -> -> -> -> -> -> Comienzo de xito en la Comienzo de Importacin xito en la HISTRICOS: Comienzo de la carga del MODELO. carga. la carga de HISTRICOS. de histricos homogeneizados. carga. C:\ws_SI\HISTORICO-Crisis.mat. la SIMULACIN.
El usuario tendr acceso a ambas informaciones ( log y resumen de variables) de una forma fcil e intuitiva mientras mantenga abierta la sesin. El fichero del log a diferencia del resumen de variables podr ser consultado despus incluso de cerrar la sesin ya que se guardar en la carpeta de sesin un fichero LOG.txt por si fuera necesaria su consulta en el futuro.
39
6.2.1. Carga El diseo de la carga y visualizacin de histricos pretende ser sencillo e intuitivo para el usuario. Como se adelant en el captulo anterior, los histricos se descargarn de la aplicacin Visual Chart (ver [HORN08]) a
ficheros de texto. Cada empresa tendr un fichero de texto independiente al resto y el estndar
5
para
los
nombres
de
los
ficheros
ser:
nombredelaempresa .txt . Existen dos formas de cargar los histricos: Cargar los ficheros de texto y crear una variable en Matlab que tenga la informacin de todas las empresas. Previa a la creacin de la variable, se pasarn los datos por unas rutinas de Matlab que homogeneizarn los datos eliminando los periodos en los que no se disponga de informacin. Los datos se guardarn en una variable en la carpeta de la sesin con el nombre que el usuario haya escogido. Para facilitar la gestin de los ficheros que se almacenan en la carpeta de la sesin, previo al nombre elegido por el usuario, se aadir la palabra HISTORICO. De tal modo, el fichero que contiene la informacin de los histricos de un determinado periodo se almacenar de la siguiente manera: HISTORICO- nombre . Cargar la variable HISTORICO- nombre que se haya generado en otra sesin.
Si el nombre fuera compuesto, como por ejemplo Unin Fenosa, el identificador del fichero ser unionfenosa .txt.
5
40
6.2.2. Visualizacin Una vez cargados los histricos en el sistema por cualquiera de los dos caminos explicados anteriormente, el usuario tendr la opcin de visualizarlos. Para ello, se le facilitar un men en el que podr escoger entre varias opciones: Ver todas las empresas o escoger slo algunas. Ver el periodo mximo que contemplen los histricos cargados o elegir un periodo concreto. Ver la grfica con precios de apertura, cierre, mximo o mnimo diario. Ver los resultados en grficas independientes o en una sola grfica a modo de comparativa.
6.2.3. Diagrama de Flujo de Datos El diagrama de flujo de datos (DFD) es la representacin grfica de un modelo de procesos o funciones donde aparecen flujos de datos y sus transformaciones a lo largo del sistema (ver [BARR01]) y su notacin es:
41
1. Homogeneizacin de Histricos
Histricos Homogeneizados
2. Cargar Histricos
Histricos Homogeneizados
TXT HISTRICOS
HISTRICOS
6.3. Modelo
Este apartado abarca todo lo referente al diseo del entrenamiento y carga de modelos. Existe de la misma forma, una parte dedicada a la gestin de los mismos, dnde el usuario podr comparar los diferentes entrenamientos que realice y as poder escoger el modelo que mejor ajuste.
42
6.3.1. Entrenamiento Se considera requisito necesario para poder entrenar un modelo la existencia de histricos en el sistema. Mientras el usuario no cargue dicho fichero, el men del entrenamiento quedar inhabilitado siendo solo posible la carga de un modelo previamente entrenado. Cada modelo que el usuario entrene recibir una identificacin para poder guardar el fichero en la carpeta de sesin. El estndar para los nombres de los modelos estar compuesto por tres partes: Primera parte: MODELO. Segunda parte: instante en el que se cre 6. Tercera parte: nombre introducido por el usuario. El resultado final por tanto tendr la siguiente apariencia: MODELO-AAAAMMDD T HHMMSS- nombre El usuario podr escoger entre varias opciones a la hora de entrenar el modelo para dar ms flexibilidad al apartado. La modificacin, por mnima que sea, de algunas de estas opciones puede dar lugar a modelos con ajustes completamente diferentes. Para entrenar un modelo ser necesario escoger en primer lugar las fechas de los histricos con los que se va a entrenar. Una vez seleccionado el periodo, el usuario debe determinar cuntos de los datos se emplearan para el entrenamiento, cuantos para la validacin y cuantos para el test. Estos datos se introducirn en porcentajes sobre el total de datos.
Se emplea un estndar de Matlab y un ejemplo de ste sera: 20090726T004132. Expresa el ao, mes y da, seguido de una T para dar paso a las horas, minutos y segundos.
6
43
Tambin ser necesario que el usuario escoja el nmero de epochs 7 y el goal 8 de la red neuronal. Existe la posibilidad de mostrar la evolucin del entrenamiento con la opcin show que mostrar los errores en las epochs que el usuario introduzca. Por ltimo se dan opciones sobre la estructura de la red, pudiendo modificar el nmero de neuronas de las capas y la funcin de transferencia en cada una de ellas. De las tres capas que dispone el modelo slo ser posible modificar el nmero de neuronas en la segunda, ya que en la primera deben ser 30 neuronas y en la ltima capa la nica neurona que exista predecir el valor del precio. Lo que si ser posible modificar en todas las capas ser la funci n de transferencia. Por lo que se desprende de estudios anteriores, existen algunos parmetros que, con cierto valor, consiguen un mejor ajuste del modelo. Se ha decidido sugerir estos valores aunque ser posible modificarlos. Las opciones escogidas por el usuario quedarn reflejadas en el fichero del log y las partes ms significantes quedarn reflejadas en el resumen de variables de la aplicacin.
6.3.2. Carga Para la carga de un modelo no ser necesaria la existencia de histricos en el sistema. Despus de cargar un modelo en memoria se reflejar un resumen del mismo en el panel de resumen de variables.
Hace referencia al nmero de veces que se le pasarn los datos a la red neuronal para el entrenamiento. 8 Cuando alcance dicho valor se considerar que la red ajusta correctamente.
7
44
Opciones
2. Entrenar Modelo
Modelo
3. Guardar Modelo
4. Cargar Modelo
HISTRICOS
MODELO
6.3.4. Gestin de Modelos Con la seccin de gestin de modelos ser posible comparar el ajuste de los diferentes modelos que se hayan entrenado. La informacin del ajuste se mostrar de forma grfica bien sobre empresas en concreto o comparando los errores cometidos. Se facilitarn unas grficas que muestren la diferencia entre la prediccin de la red y la prediccin ingenua 9. Tambin se mostrarn los errores cometidos por el modelo y los errores cometidos por la predicci n ingenua, dando por buenos los que sean menores que estos segundos.
45
6.3.4.1. Errores Empleados Los errores empleados para conocer predicciones son los siguientes: MAPE ( Mean Absolute Percentage Error) : se calcula encontrando el error absoluto en cada periodo, dividiendo ste entre el valor real observado, para ese periodo y despus promediando estos errores absolutos de los ajustes de las
porcentaje. Proporciona una indicacin de cuan grandes son los errores de pronstico comparados con los valores reales de la matemtica es: serie (Ver [WEB004]). La expresi n
MAE (Mean Absolute Error) : se calcula el error para cada prediccin y se realiza la media (Ver [WEB005]). Su expresin matemtica:
MSE ( Mean Squared Error) : consiste en la suma de las diferencias al cuadrado entre lo real y lo proyectado por el modelo. Cada error o residual se eleva al cuadrado, luego estos valores se suman y se divide entre el nmero de observaciones. Este enfoque penaliza los errores mayores de pronsticos, ya que eleva cada uno al cuadrado (Ver [WEB006]). Expresado matemticamente sera:
donde,
46
6.4. Simulacin
Se presenta el diseo de todo lo referente a la realizacin de una simulacin y la carga de la misma en este apartado.
6.4.1. Simulacin Al realizar una simulacin el usuario podr comprobar los resultados de aplicar el modelo a un periodo de tiempo pasado. Por lo tanto a la hora de realizar una simulacin es necesario que existan en el sistema dos variables: los histricos y un modelo. Despus de realizar la simulacin la aplicacin guardar toda la informacin en un fichero ubicado en la carpeta de sesin. La identificacin de este fichero sigue el estndar presentado en el apartado anterior 6.3 Modelo . La nica diferencia reside en que la primera parte del identificador en este caso ser SIMULACION. Por lo tanto el nombre final de dicho fichero tendr el siguiente aspecto: SIMULACION-AAAAMMDD T HHMMSS- nombre
Existen varias opciones que son comunes a cualquier simulacin que el usuario pueda realizar: Periodo de la simulacin. Comisin del broker por operacin. Impuestos, como por ejemplo el IRPF.
47
Una vez fijados los parmetros de estas variables comunes a todas las simulaciones, el usuario podr escoger entre dos situaciones de partida diferentes: En la primera situacin, el usuario simula un periodo de tiempo introduciendo en el sistema nicamente el capital que desea invertir. Para la otra situacin, el usuario inicia la simulacin teniendo compradas dos empresas. En este modo el usuario debe introducir en el sistema ms informacin referente a las empresas en las que ha invertido, la cantidad de acciones compradas en su momento y al precio al que se compraron.
6.4.2. Carga Para la carga de una simulacin no ser necesaria la existencia de histricos ni de un modelo en el sistema. Despus de cargar una simulacin se reflejar un resumen de la misma en el panel de resumen de variables.
Opciones
2. Realizar Simulacin
Simulacin
HISTRICOS
MODELO
SIMULACIN
48
6.5. Resultados
La aplicacin generar los resultados de la simulacin en el momento que el usuario desee visualizarlos por primera vez. Tras esta operacin la aplicaci n almacenar los resultados en la carpeta de sesin para mejorar el rendimiento del sistema en futuras visualizaciones. Dado que los resultados que se generan son abundantes, se ha decidido crear una subcarpeta dentro de la carpeta de sesin que almacene todos estos ficheros. Dicha carpeta seguir con el estndar de identificacin empleado hasta el momento, as que la apariencia del nombre de la misma se asemejar a: R-SIMULACION-AAAAMMDD T HHMMSS- nombre 10
La lista de ficheros que se incluirn en esta carpeta es la siguiente: aciertos.mat bajadasacertadas.mat beneficios.mat dineroybeneficio.mat MAE.mat MAPE.mat MSE.mat numerodeposiciones.mat subidasacertadas.mat
Este nombre , a diferencia de los anteriores nombres que eran escogidos por el usuario, se generar automticamente a partir del nombre que haya recibido la simulacin a partir de la cual se obtienen los resultados.
10
49
El usuario al igual que en el resto de mens podr escoger entre varias opciones a la hora de visualizar los resultados. Es posible obtener una visin global de la situacin en la que se resuma, para todas las empresas, cual ha sido el beneficio obtenido, el nmero de veces que se ha invertido en cada empresa, la cantidad de aciertos obtenidos a la hora de predecir subidas y bajadas en los precios y la inversin media en cada una de las empresas. Otra opcin ser elegir una de las empresas contempladas en el modelo y observar la evolucin del capital en la compaa, ver detalladamente en que momentos se ha invertido en dicha empresa y un resumen con el nmero de posiciones totales en la compaa, los errores anteriormente comentados para dicha prediccin y las subidas y bajadas acertadas en comparacin con el total de predichas.
1. Calcular Resultados
Resultados
Resultados y Opciones
SIMULACIN
3. Visualizar
50
MODELO-R-( nombre1 )- AAAAMMDD T HHMMSS- nombre2 En este caso nombre1 y nombre2 tambin son asignados automticamente por el sistema. El primero, nombre1 , identifica al modelo con el que se ha realizado la simulacin y cuyos valores se han actualizado. El segundo nombre, nombre2 , identifica el nombre de la simulacin que ha provocado el reentrenamiento.
51
La segunda medida trata de descartar aquellas empresas cuya prediccin no sea del todo buena. El criterio para descartar empresas consistir en prescindir a la hora de tomar la decisin de inversin de aquellas empresas cuyos errores (cualquiera de los tres explicados anteriormente: MAPE , MAE, MSE) sean mayores que los errores producidos por la prediccin ingenua. De este modo se descartan a priori aquellos valores que el modelo no termina de ajustar con precisin.
6.7.1. Diagrama de Flujo de Datos El tiempo real funcionar segn el siguiente DFD:
52
1. Descaga Histricos
2. Espera 5 minutos
RDENES
3. Prediccin
53
7. DESARROLLO
Se expone en este apartado el desarrollo del sistema para cada tarea en las que se ha fragmentado el trabajo.
54
7. Desarrollo
7.1. Introduccin
El desarrollo de la aplicacin se he realizado siguiendo las indicaciones hechas en el diseo. Las dudas surgidas a lo largo de la programacin han sido resueltas en diferentes reuniones que tambin han servido para dar por finalizadas las tareas. La aplicacin principal se ha programado en Matlab y en este captulo se podr apreciar el resultado final del interfaz grfico as como tambin partes del cdigo que se consideran relevantes. A lo largo del desarrollo de la aplicacin se ha realizado un arduo trabajo de adaptacin del cdigo entregado en el proyecto [HORN08] ya que en dicho proyecto se trabaj con y para unos datos concretos. De tal forma, muchas de las funciones estaban adaptadas para dichos datos y ha sido necesario modificar tanto la lgica como la estructura de las mismas. En la lectura de [HORN08] se podrn encontrar muchas diferencias entre el cdigo presentado en dicho proyecto y en el que a continuacin se presenta, aunque se han mantenido los nombres de las funciones para facilitar su entendimiento al lector.
7.2. Histricos
7.2.1. Inicio de Sesin En captulos anteriores se haca referencia a una carpeta de sesin y es aqu cuando se explica el sentido de la misma. Cada vez que el usuario
55
comience una sesin se crear una carpeta en la que se ir almacenando todo lo referente a la misma. De esta forma la sesin no comienza hasta que no se haya definido esta carpeta, bien con el nombre que el sistema le asigna automticamente, bien con un nombre escogido por el usuario. Por defecto, el nombre del directorio ser la fecha y hora en la que se inicie la sesin.
Dicha carpeta se crear dentro de una carpeta designada para guardar todas las sesiones en la siguiente ruta:
C:\ws_SI\
Esta carpeta se crear automticamente la primera vez que se inicie la aplicacin. El nombre de la misma se compone de dos partes abreviadas, la primera ws , espacio de trabajo en ingls workspace y la segunda de Sistema de Inversin. Una vez iniciada la sesin la apariencia de la aplicacin es la siguiente:
56
7.2.2. Resumen de Variables Como ya se explic en el diseo, se considera necesario disponer en todo momento de informacin referente a las variables cargadas en el sistema por el usuario como podran ser: direccin de la carpeta de sesin, histricos, modelos, simulaciones Se ha programado en el interfaz un panel situado a la derecha en el que aparecer toda la informacin necesaria para el usuario.
57
7.2.3. LOG de Sesin Al iniciar la sesin se activa el botn para consultar el log . Dicha accin se realiza con la funcin siguiente:
function verLog_Callback(hObject, eventdata, handles) !write LOG.txt
58
LOG 27-Jul-2009 =============== 27/07 12:33:14 -> 27/07 12:33:36 -> 27/07 12:33:48 -> 27/07 12:33:48 -> 27/07 12:37:00 -> 27/07 12:37:00 -> 27/07 12:37:01 -> 27/07 12:37:01 -> 27/07 12:37:37 -> 27/07 12:37:37 ->
WORKSPACE establecido en: C:\ws_SI\20090727 Comienzo de la carga del MODELO. Exito en la carga. MODELO: C:\ws_SI\20090726-00.39.37-MODELOLAST.mat Comienzo de la carga de HISTRICOS. Importacin de histricos homogeneizados. Exito en la carga. HISTRICOS: C:\ws_SI\HISTORICO-Crisis.mat. Comienzo de la SIMULACIN. Parmetros de Entrada: Fecha Inicio: 02/01/2008 Fecha Fin: 29/08/2008 Comisin del Broker(%): 0.05 IRPF(%): 18 Situacin de partida: Sin Empresas Dinero a invertir: 10000.
En cada una de las funciones que se ha considerado preciso que escriban en el log se ha situado una llamada a guardarLog(mensaje), que escribir el mensaje que se coloque en los argumentos junto a informacin del da y la hora en la que se almacen dicho informacin.
7.2.4. Carga de Histricos La carga de los histricos se puede realizar, como se explicaba en el diseo, a partir de los histricos en formato texto o a partir de una variable de los mismos previamente guardada. El men que se presenta a continuacin del interfaz dispone ambas funciones. La primera de ellas realiza la carga a partir de los ficheros de texto, la segunda a partir de la variable de Matlab almacenada con anterioridad.
59
Cuando la carga se haya realizado correctamente aparecer un mensaje como el que ilustra la siguiente imagen:
Dependiendo que tipo de carga se realice, los datos que la aplicacin carga en memoria son distintos, siendo en ambos casos el resultado una variable global con el nombre HISTORICOS. Si se desea cargar los ficheros de texto se debe cargar una carpeta que contenga dichos ficheros para llamar a la funcin homogeniza(carpeta). Sin embargo, si se decide cargar el fichero previamente guardado, slo ser necesario conocer la ubicacin del mismo. En el siguiente cuadro de texto se identifican las diferencias entre una y otra llamada:
60
Slo cuando el usuario decida cargar los ficheros de texto, la aplicaci n guardar la variable con los histricos en la carpeta de sesin. De una forma resumida la carga de los ficheros de texto se podra reflejar con el siguiente cdigo:
La funcin homogeniza estructura los datos y elimina posibles errores en los mismos, ya que, en ocasiones, en ciertos periodos de tiempo no se dispone de informacin burstil y si no se eliminaran dichos periodos podra producir consecuencias inesperadas en la aplicacin.
7.2.5. Visualizacin de Histricos La visualizacin de histricos se ha ceido estrictamente a lo recomendado en el diseo. El objetivo final de este apartado es dar la opci n al usuario de visualizar los histricos de las empresas siempre que lo precise. La apariencia principal de este men es:
61
Se ha programado que el usuario pueda escoger entre todas o algunas de las empresas, el periodo de estudio y el precio que se quiere impresionar. A todas estas opciones se le aade la posibilidad de realizar una comparativa entre compaas. La grfica siguiente refleja una comparativa de histricos entre dos compaas. Si se hubiesen aadido ms empresas a la grfica, el usuario tendra una visin global de la situacin en el momento de tiempo escogido.
62
El resultado de dicha grfica se consigue a travs de dos funciones que se encuentran en el siguiente cuadro de texto. La primera se encarga de obtener los datos introducidos por el usuario, mientras que la segunda es la encargada de realizar la grfica.
7.3. Modelo
En este apartado se explicar cmo se ha llevado a cabo el desarrollo de todo lo referente al modelo. La mayor carga de trabajo ha estado en el entrenamiento ya que la carga de un modelo entrenado previamente se asemeja, a grandes rasgos, a la
63
carga de histricos guardados con anterioridad (lo mismo ocurrir en la carga de simulaciones). Si se intenta acceder al men referente al modelo y an no se han cargado los histricos, se ha programado un aviso para informar al usuario de que sin histricos solamente ser posible la carga de un modelo entrenado con anterioridad.
Mensajes con este formato aparecen siempre que el usuario intente realizar alguna accin que requiera la carga de algn fichero que no se haya hecho. Tras el entrenamiento o la carga de un modelo, la aplicacin dispondr de una variable global referente al mismo, denominada modelo .
7.3.1. Entrenamiento del Modelo La programacin del entrenamiento del modelo ha contemplado toda la casustica explicada en su diseo. Por lo tanto, el usuario podr escoger entre varias opciones a la hora de entrenar el modelo. Estas opciones son las siguientes: Fecha inicio. Nmero de periodos 11.
Se ha programado que al introducir el nmero de periodos, para orientar al usuario, se imprima la fecha aproximada a la que se refiere.
11
64
Porcentaje de datos para entrenamiento. Porcentaje de datos para validacin. Porcentaje de datos para test 12. Show. Epochs . Goal . N de neuronas y funcin de transferencia para cada capa.
12
65
En la ilustracin anterior se puede apreciar el men con el que se representan las opciones. En el momento que el usuario empiece el entrenamiento, existe una funcin que verificar que todos los datos introducidos son correctos.
[er1,er2,er3,er4,er5,er6,er7] = comprobarErrores(handles,HISTORICOS);
7.3.2. Carga del Modelo La carga del modelo se realiza de una forma muy parecida a la carga de histricos. Por lo tanto en esta parte ha sido posible la reutilizacin de cdigo dentro de la misma aplicacin. La ilustracin del men de carga del modelo es la siguiente:
66
7.3.3. Gestin de Modelos Cuando el usuario tenga cargado un modelo en la aplicacin, se ha desarrollado la posibilidad de ver la calidad del ajuste del mismo. Para dicho interfaz, se ha reutilizado parte del cdigo empleado en la visualizacin de histricos porque, de la misma manera que en lo anterior, el usuario escoga entre otras opciones si ver todas o algunas empresas, el tipo de precio que se mostraba y si quera las grficas individuales o una sola para comparar entre compaas, en este men se permiten esas mismas opciones.
La novedad en este apartado radica en la posibilidad de ver los errores que comete el modelo. Dichos errores son los explicados en apartados anteriores y se facilita al usuario graficas diferentes para los errores que comente el modelo con datos con los que se ha entrenado (porcentaje de datos para entrenamiento y validacin) y los errores que comete con datos que jams
67
han pasado por el modelo (porcentaje de datos para test). En ambos casos se enfrentan dichos errores a los cometidos por la prediccin ingenua. Se ha decidido, para la comodidad del usuario a la hora de estudiar la grfica, dibujar en rojo aquellos errores que sean mucho ms grandes que el error cometido por la prediccin ingenua, en azul aquellos que siendo mayor su valor, se aprecia en la grfica y en verde aquellos que mejoran el error cometido por la ingenua. Cuando el usuario quiera apreciar el ajuste del modelo, aparecer una grfica similar a la siguiente:
68
Las tres grficas superiores representan en primer lugar la cotizaci n real, la prediccin del modelo y la prediccin ingenua; la segunda grfica la cotizacin real y la prediccin del modelo; mientras que la tercera representa la cotizacin real y la prediccin ingenua. Las tres grficas inferiores, constituyen el error de las tres primeras respectivamente. El cdigo Matlab que permite esta accin es:
[EMPRESAS,GRAFICO,TIPO_PRECIO] = obtener_datos_gm(handles); grafica_gm(EMPRESAS,GRAFICO,TIPO_PRECIO,modelo);
El lector podr apreciar lo semejantes que son las funciones explicadas en el captulo 7.2.5. Visualizacin de histricos y las ahora comentadas, ya que se ha intentado reutilizar el mximo cdigo posible. Al igual que con los histricos, la primera funcin obtener_datos_gm(handles), recoge los datos introducidos por el usuario, mientras que la segunda funcin, grafica_gm(EMPRESAS,GRAFICO,TIPO_PRECIO,modelo), se encarga de realizar la grfica. Las grficas de los errores se crean en el momento del entrenamiento y se almacenan en un fichero que lleva el mismo nombre que el modelo acompaado de: ENTRENAMIENTO: se trata de la grfica con los errores cometidos por el modelo con los datos que ya conoce. VALIDACIN: grfica con los errores cometidos con datos desconocidos. REENTRENAMIENTO: grfica tras el reentrenamiento del modelo. La grfica con los errores es la siguiente:
69
7.4. Simulacin
Al igual que pasaba con el modelo, si el usuario trata de realizar una simulacin sin tener cargado el modelo, el sistema avisar de que no es posible y que tan solo podr cargar otra simulacin. El cdigo que genera estos tipos de aviso es:
warndlg(mensaje,'Warning');
70
7.4.1. Simular un Periodo Como se explic en el diseo, para realizar una simulacin deben existir unos datos histricos y un modelo cargados en la aplicacin. Una vez cumplidos los requisitos, el usuario, como pasaba en los mens anteriores, escoger entre varias opciones. Las opciones bsicas para realizar una simulacin son: Periodo: fecha de inicio y fin de la simulacin. Comisiones del broker por operacin. Impuestos del tipo IRPF. Situacin de partida: comenzar la simulacin con empresas en cartera o sin empresas.
71
En la imagen anterior se aprecia la situacin de partida en la que el usuario no dispone an de ninguna compaa. La imagen siguiente representa la opcin de disponer, previo a simular, de alguna compaa y los datos que sern necesarios introducir en tal caso.
7.4.1.1. Control ActiveX Se quiere aprovechar este pequeo apartado para explicar brevemente la programacin de los controles ActiveX que el usuario encontrar a lo largo de la aplicacin principalmente en los calendarios a la hora de escoger periodos o fechas. Los controles ActiveX se crean desde el men de creacin de interfaces de Matlab , que provee al programador de cantidad de dichos controles. El problema surge al no encontrar ninguna forma de ocultar estos controles hasta que no sea necesaria su utilizacin.
72
El problema se ha resuelto creando y destruyendo los controles cada vez que eran necesarios o dejaban de serlo. El cdigo que crea los controles y que ha causado tantos problemas en el desarrollo es el siguiente:
handle = actxcontrol('MSComCtl2.DTPicker.2', [180 475 14 14],a,{'CloseUp' 'fechaVerSi'});
7.4.2. Carga de una Simulacin Revisar el apartado 7.3.2. Carga del modelo ya que el interfaz se ha programado de la misma forma dado que era posible reutilizar cdigo y resultaba ms intuitivo para el usuario.
7.5. Resultados
La aplicacin genera los resultados en el instante que el usuario precisa verlos por primera vez, como se explic en el diseo, y los guarda en su correspondiente carpeta. El resumen general, como opcin del usuario, aporta una visin global de la simulacin, y se ha desarrollado para que adems de global sea completa. A pesar de todo, si el usuario necesitara ms informacin sobre un valor en concreto, podr escoger del men una compaa determinada. El interfaz programado para esta funcin es el siguiente:
73
El resultado final a la hora de visualizar el resumen general se ajusta a las especificaciones hechas en el diseo y es el siguiente:
74
Adems del resumen anterior, en el que una grfica representa el beneficio aportado por cada compaa, se le presenta al usuario una evolucin del mismo en la siguiente grfica:
La primera funcin hace referencia a la primera grfica explicada y la segunda funcin a la ltima grfica sobre la evolucin del beneficio.
75
Cuando el usuario escoja la opcin detallada sobre una compaa, el resultado, ajustndose al diseo, ser el siguiente:
Dnde la grfica de la izquierda representa el capital invertido en cada periodo de tiempo y la otra grfica la evolucin del beneficio aportado por dicha empresa.
76
(Fuente: [HORN08])
77
Dicho fragmento del cdigo asigna una posible ganancia de cero, en el valor que tenga errores mayores que la prediccin ingenua, por lo tanto, el sistema no lo elegir como uno de los valores ptimos en los que invertir y se mejora as el sistema de decisin. La otra parte del cdigo que optimiza el sistema de decisin es la referida al reentrenamiento del modelo al finalizar cada jornada y que se realiza as:
%ACTUALIZACIN DE LA RED NEURONAL guardarLog('REENTRENAMIENTO del MODELO'); for empresa=1:20 fecha = VALORES{1,i}{1,1}(1,2); [precios]=dame_precios(HISTORICOS,empresa,num2str(fecha), 173000,101); precio_real{1,empresa} = precios; [Matriz_de_entradas,targets]=crea_entradas(precios); Matriz_de_entradas=Matriz_de_entradas'; targets=targets'; P=Matriz_de_entradas(3:end,:); T=targets(3,:); [p,PE] = mapstd(P); normaliza{1,empresa}=PE; [t,PS] = mapstd(T); normaliza{2,empresa}=PS; Matriz_de_entradas=Matriz_de_entradas'; PMayus{1,empresa} = P; pn = mapstd('apply',P,PE); tn = mapstd('apply',T,PS); [net, tr] = adapt(redneuronal1{1,empresa},pn,tn); redneuronal{1,empresa}=net; trvar{1,empresa}=tr; end
78
79
8. PRUEBAS
Se presenta en este captulo las pruebas unitarias realizadas en cada tarea del proyecto, la prueba global de la aplicacin y los resultados obtenidos.
80
8. Pruebas
81
8.3. Resultados
En este apartado, se presentarn los resultados obtenidos en algunas de las simulaciones realizadas con la aplicacin. Ms concretamente, se presentarn las simulaciones de los meses de enero, febrero y marzo de 2008, con un modelo entrenado hasta finales de 2007 y una inversin inicial cada mes de 10.000 . Tambin se facilitar, en el ltimo subapartado, una comparacin entre los resultados obtenidos en enero de 2008 con la lgica del trabajo [HORN08], en el que no se reentrenaba el modelo ni se descartaban valores en funcin de los errores, y los obtenidos con la aplicacin actual.
8.3.1. Enero 2008 En primer lugar, se presenta la grfica de los histricos con las 20 empresas estudiadas, para apreciar a grandes rasgos la tendencia en dicha fecha.
82
83
Segn los resultados, la aplicacin sera capaz de conseguir un 160% de rentabilidad, ya que invirtiendo 10.000 a principios de enero 13, consigue un beneficio de aproximadamente 16.000 . Se aprecia que la inversin se centra en 8 compaas. La ms escogida es Ferrovial 14 que produce unas prdidas superiores a 5.000 , mientras que la que ms beneficio reporta es Gas Natural, se confa en ella unas 300 veces y su beneficio final supera los 7.000 .
Se dice a principios ya que todo el beneficio obtenido en cada operacin se reinvierte en la siguiente. 14 Identificacin de empresas: 1.Acciona; 2.Acerinox; 3.ACS; 4.Bankinter; 5.BBVA; 6.Endesa; 7.FCC; 8.Ferrovial; 9.Gamesa; 10.Gas Natural; 11.Iberdrola; 12.Iberia; 13.Inditex; 14.Indra; 15.Popular; 16.Red Elctrica; 17.Repsol; 18.Santander; 19.Telefnica; 20.Unin Fenosa.
13
84
El porcentaje total de aciertos supera el 60%. La evolucin del beneficio a lo largo del periodo es:
85
15
86
Segn los resultados, se obtendra un 70% de rentabilidad siguiendo las predicciones de la aplicacin. Se aprecia, en esta ocasin, que la inversin se centra en 9 compaas. En la que ms se confa es ahora FCC y supone unas prdidas cercanas a 3.000 . De la misma magnitud son las prdidas producidas por Iberia. En esta simulacin existen cuatro compaas cuyos beneficios superan los 2.000 , tres de ellas llegando casi a los 4.000 (Bankinter, Repsol y Telefnica). El porcentaje de aciertos se mantiene con respecto al del mes anterior.
87
88
16
89
En este periodo se obtiene una rentabilidad cercana al 50%. Nuevamente la compaa en la que ms veces se invierte, casi 800 veces, genera unas prdidas que superan los 2.000 . La empresa que destaca en este periodo es nuevamente Repsol ya que invirtiendo algo ms de 400 veces en dicha compaa se obtiene un beneficio superior a 1.000 . Recordar al lector la aparicin de la crisis financiera a principios de 2008, debido al colapso de la burbuja inmobiliaria en Estados Unidos en el ao 2006, que provoc, aproximadamente en octubre de 2007, la llamada crisis de las hipotecas subprime (Ver [WEB005]).
90
91
8.3.4. Comparativa En esta ocasin, la comparativa se realiza con una inversin inicial de 50.000 en ambos casos. El periodo simulado se trata de enero de 2008, ms concretamente para la aplicacin anterior el periodo est comprendido entre el 3 y el 31 de enero, mientras que para la presente aplicacin el periodo esta acotado entre el 7 y el 25 del mismo mes. Como se dijo anteriormente, los resultados son los conseguidos con la actual aplicacin y con su predecesora.
92
Las diferencias son considerables a todos los niveles. En el primer caso, se observa como la aplicacin invierte en 19 de las 20 compaas debido a que no realiza ningn tipo de descarte previo en funcin de los errores cometidos por el modelo. El beneficio total con este supuesto asciende a algo menos de 16.000 lo que supone un nada despreciable 30%. La empresa que acumula mayores prdidas es aquella en la que ms veces se confa, invirtiendo casi 1.500 veces a lo largo del periodo. Las prdidas no alcanzan los 2.000 . El beneficio mximo reportado por una sola empresa alcanza escasamente los 1.000 . Sobre la grfica de subidas acertadas y bajadas acertadas, en ciertas compaas el modelo no es capaz de acertar ninguna.
93
Con el modelo actual, el sistema decide invertir tan solo en 8 de las 20 compaas. A pesar de todo, Ferrovial vuelve a ser la opcin ms elegida a la hora de invertir y causa unas prdidas superiores, en este caso, a 25.000 . La rentabilidad a final de mes asciende al 160% consiguiendo unos beneficios superiores a 80.000 . Gas Natural contribuye a estas cifras con un aporte cercano a 40.000 del beneficio final. La evolucin de los beneficios, respectivamente, es la siguiente:
94
95
96
A continuacin se detallan los diferentes paquetes de trabajo: WP-01 Gestin del proyecto Este paquete se descompone en el seguimiento y la realizacin de la documentacin del proyecto. WP-01.01 Lanzamiento del proyecto: esta actividad consta de las primeras reuniones para dar comienzo al proyecto.
97
WP-01.02 Seguimiento del proyecto: esta actividad consta de la realizacin de todos los informes de seguimiento y procedimientos de control estipulados para realizar el control del proyecto. El seguimiento ser peridico y se realizar con el director de proyecto. WP-01.03 Documentacin del proyecto: la documentacin se intentar realizar de forma constante a lo largo del periodo de duraci n del proyecto.
WP-02 Extreme Programming La planificacin, el diseo, el desarrollo y las pruebas son partes del actual paquete. WP-02.01 Planificacin: durante esta fase se planificarn las diferentes tareas a la hora de llevar a cabo el proyecto. WP-02.02 Diseo: en este paquete de trabajo se estudiarn las necesidades del proyecto, diseando la aplicacin en funcin de dichas necesidades de rendimiento, seguridad y velocidad. WP-02.03 Desarrollo: en este paquete de trabajo se desarrollarn todos los algoritmos y necesidades estipuladas en el diseo mediante la tecnologa elegida. WP-02.04 Pruebas: durante esta fase se aplicarn test de pruebas que el sistema deber superar. Una vez realizadas las pruebas, se documentarn y se estudiarn los resultados obtenidos.
WP-03 Cierre del proyecto Se realizarn las tareas necesarias para dar por terminado el proyecto.
98
Gracias al margen que se calcula en los ltimos pasos del mtodo, se puede detectar cual es el camino crtico del proyecto. El camino crtico no puede sufrir ningn tipo de variacin temporal, ya que arrastrara esa diferencia a la entrega final de proyecto.
99
Como se puede observar, la realizacin del proyecto dura aproximadamente 11 meses, el comienzo del proyecto se estipula en la aceptacin por parte del director del proyecto y la puesta al da con la informacin de proyectos anteriores. No existen grandes paquetes de trabajo en paralelo, ya que el WP-01.02 trata de las reuniones que se han mantenido con los directores a lo largo del trabajo y el WP-01.02 es la realizacin de la memoria. Debido a la metodologa XP, se debe pasar los paquetes de trabajo 02.01 , 02.02 , 02.03 y 02.04 , referentes a la planificacin, el diseo, el desarrollo y las
100
pruebas, las veces que sean necesarias para finalizar el proyecto. La estimacin final de tiempo que se empea en cada una de estas tareas es la que se indica en la figura anterior. Por lo tanto el camino crtico est compuesto por las tareas cuyo margen es 0 y se remarcan en rojo: Lanzamiento del proyecto ( WP-01.01) , Planificacin (WP-02.01) , Diseo ( WP-02.02) , Desarrollo ( WP-02.03) , Pruebas ( WP-02.04) y Cierre del proyecto ( WP-03) . A continuacin se muestra el reparto de meses estimado a cada paquete de trabajo durante el periodo de 11 meses que dura el proyecto.
Por ltimo para dar por terminado este captulo falta complementar la informacin anterior con una tabla de responsabilidades de las diversas tareas.
101
TAREAS / INTEGRANTES WP-01.01 Lanzamiento WP-01.02 Seguimiento WP-01.03 Documentacin WP-02.01 Planificacin WP-02.02 Diseo WP-02.03 Desarrollo WP-02.04 Pruebas WP-03 Cierre
ANA
DIS
PRO
E E I I E E I E E E
La notacin de la matriz de responsabilidades es la siguiente: E: C: I: A: La persona o grupo ejecuta la actividad. La persona o grupo debe ser consultado durante la actividad. Se debe informar a la persona o grupo de que decisiones se toman. La persona que tiene la ltima palabra en la aprobacin del resultado.
102
103
DP1 WP-01.01 Lanzamiento WP-01.02 Seguimiento WP-01.03 Documentacin WP-02.01 Planificacin WP-02.02 Diseo WP-02.03 Desarrollo WP-02.04 Pruebas WP-03 Cierre Total 5 15 15 10 10 10 5
70
DP2 5 15 15 10 10 10 5
70
JPR 25 15 80 50 40 30 30 5
275
ANA
DIS
PRO
Total
35 45 110 110 165 290 120 15 890
40 40 20 20
120
40 100 20
160
25 120 50
195
A modo de resumen de la tabla se puede destacar que el proyecto requiere un esfuerzo de horas/hombre de 890, siendo los paquetes ms importantes los referentes al desarrollo y el diseo.
104
Las pruebas tambin son de vital importancia en los resultados de este proyecto.
Tarifa ( /hora) 60 60 45 35 30 25
Tabla 6. Tarifas
105
El coste en recursos humanos del proyecto se calcula multiplicando las horas de cada uno de los participantes en las diferentes tareas por su tarifa. El resultado de esta operacin se representa en la siguiente tabla en la que la unidad es el euro: DP1 WP-01.01 Lanzamiento WP-01.02 Seguimiento WP-01.03 Documentacin WP-02.01 Planificacin WP-02.02 Diseo WP-02.03 Desarrollo WP-02.04 Pruebas WP-03 Cierre Total 300 900 900 600 600 600 300 DP2 300 900 900 600 600 600 300 JPR 1.125 675 3.600 2.250 1.800 1.350 1.350 225 ANA DIS PRO Total 1.725 2.475 5.400 4.850 6.225 9.250 3.900 825 34.650
Los costes de personal del proyecto ascienden a 34.650 Como se dijo anteriormente, el coste total del proyecto se consigue aadiendo la cantidad del coste de la bolsa en tiempo real, por lo tanto, el presupuesto final es:
10.4. Conclusin
En definitiva el presupuesto necesario para realizar el proyecto es de 34.830 . El montante principal del presupuesto se imputa a los recursos humanos.
106
11. CONCLUSIONES
En este apartado se expondrn las conclusiones alcanzadas tras finalizar el trabajo.
107
11. Conclusiones
A falta de probar el sistema con el simulador de Visual Chart , que determinar la rentabilidad real, los resultados obtenidos se consideran excepcionales. Estudios posteriores confirmarn la veracidad de los resultados nuevamente, ya que, pese a los esfuerzos realizados a lo largo del proyecto, no se ha encontrado ningn tipo de error en los mismos. A lo largo del proyecto se ha observado la capacidad de ajuste que proveen las redes neuronales en estos tipos de problemas. Durante el trascurso del trabajo se ha podido aprender el lenguaje de programacin matemtico Matlab , aplicando este principalmente a interfaces de usuario y a redes neuronales. Con los que se considera haber realizado un buen trabajo, tanto con la apariencia final de la aplicacin como con la optimizacin del modelo anterior. Se ha profundizado en el inquietante mundo de la bolsa, descubriendo herramientas y sistemas totalmente desconocidos en principio y que ahora son de gran ayuda a la hora de realizar inversiones. A pesar de todo, an queda trabajo por realizar ya que se considera que el proyecto puede mejorar. En el siguiente captulo se recomiendan algunos puntos que tratar en futuros trabajos sobre la materia.
108
109
110
111
112
113
114
Se debe prestar atencin en todo momento al Resumen de Variables que aparece en la parte derecha del interfaz, ya que aportar al usuario informacin sobre el transcurso de la sesin. El botn LOG que aparece a la izquierda del botn Establecer permite al usuario acceder con ms profundidad a toda esa informacin. Una vez establecido el nombre del espacio de trabajo los mens se activan. Se componen de los siguientes puntos: Datos o Cargar o Ver Modelo o Entrenar/Cargar o G de Modelos Simular o Simular/Cargar o Ver Resultados Tiempo Real
13.1. Datos
En esta pestaa el usuario encontrar todo lo necesario para la carga y la visualizacin de los histricos. 13.1.1. Cargar El usuario encuentra la opcin de cargar los datos desde la carpeta dnde los haya descargado (al tratarse de datos en bruto la carga tardar ms) o si ya los ha cargado en alguna ocasin, realizar la carga de los datos homogeneizados.
115
13.1.2. Ver17 Existen diferentes opciones de visualizar los histricos, el usuario podr elegir entre ver todas las empresas o elegir las que desee. Tambin podr comparar todas las empresas en un solo grfico o visualizarlas en grficos individuales. Sobre las fechas, se puede ver el mximo periodo existente en los histricos o elegir de un calendario el periodo que se quiera observar. Y por ltimo, el usuario escoger si ver los precios de aperturas de los periodos, los de cierre, los mximos diarios o los mnimos diarios.
17
116
Los resultados a la hora de ver los histricos sern semejantes a los siguientes:
117
13.2. Modelo
En esta pestaa el usuario encontrar todo lo necesario para entrenar o cargar un modelo y gestionar los modelos viendo como predicen los mismos datos con los que se ha entrenado.
13.2.1. Entrenar/Cargar El usuario encuentra la opcin de entrenar un modelo en el panel situado a la izquierda o cargar un modelo previamente entrenado en la parte derecha. 13.2.1.1. Entrenar 18 Al entrenar un modelo, el usuario debe introducir los siguientes datos: Fecha final de entrenamiento. Nmero de periodos: nmero de periodos anteriores a la fecha introducida con los que se aplicar el entrenamiento. Conjuntos Entrenamiento: porcentaje de los datos que se emplearn para tal fin. Validacin: porcentaje de los datos que se emplearn para tal fin. Test: porcentaje de los datos que se emplearn para tal fin. Estructura Capa. Nmero de Neuronas. Funcin.
Ser necesaria la carga de histricos para poder acceder a este men, salvo que se desee cargar un modelo previamente entrenado.
18
118
119
13.2.2. G de Modelos 19 Ayuda al usuario a visualizar el tipo de ajuste que realiza un modelo. El men es similar al empleado a la hora de ver los histricos. Existen algunas diferencias, la primera es que no se necesita escoger un periodo de tiempo, ya que se calcula con el total de los datos empleados para el entrenamiento de la red neuronal. La segunda diferencia es, que al visualizar una compaa en funcin de si se desea ver un grfico nico por empresa o una comparativa, los resultados sern distintos. En el primero se podr apreciar una primera grfica con los valores reales y la prediccin y otro grfico con el error cometido, en la comparativa en cambio slo se ver la grfica en la que se enfrentan los valores reales con los predichos.
19
Ser necesario el entrenamiento o la carga de un modelo para poder acceder a este men.
120
Los resultados a la hora de ver los modelos sern semejantes a los siguientes:
121
13.3. Simular
En esta pestaa el usuario encontrar todo lo necesario para realizar o cargar una simulacin y poder ver los resultados de la misma. 13.3.1. Simular/Cargar El usuario encuentra la opcin de realizar una simulacin en el panel situado a la izquierda o cargar una simulacin previamente realizada en la parte derecha. 13.3.1.1. Simular 20 Al simular, el usuario debe introducir los siguientes datos: Fecha inicio de la simulacin. Fecha final de la simulacin. Comisiones e Impuestos Comisin Broker : porcentaje que gana el broker al realizar cada operacin. IRPF. Situacin de Partida: es posible comenzar la simulacin sin tener ningn capital invertido o empezar disponiendo de acciones de dos compaas. Sin Empresas o Dinero a invertir: dinero que se pretende invertir.
Ser necesaria la carga de histricos y un modelo para poder realizar una simulacin, salvo si se desea cargar una simulacin guardada previamente.
20
122
Con Empresas o Empresa: se indica que dos empresas se tienen compradas. o Dinero Invertido: dinero que se ha invertido en cada compaa. o Precio de compra: precio al que se compr cada compaa.
123
13.4.2. Elegir Empresa Se presenta al usuario informacin detallada de la simulacin sobre la compaa escogida. En concreto dicha informacin hace referencia a: Dinero invertido en cada instante. Beneficio logrado en cada instante. Errores ( MAPE , MAE, MSE) . Subidas acertadas. Bajadas acertadas. Nmero total de inversiones en dicha compaa.
21
Ser necesaria la carga de una simulacin para poder acceder a este men.
124
125
126
La apariencia del resumen de variables, al final de una sesin con todas las variables, tendr la siguiente apariencia:
127
SISTEMA DE INVERSIN EN BOLSA A CORTO PLAZO. ANEXO B-Variaciones de los indicadores respecto al precio.
128
SISTEMA DE INVERSIN EN BOLSA A CORTO PLAZO. ANEXO B-Variaciones de los indicadores respecto al precio.
(Fuente: [CAVA07])
129
SISTEMA DE INVERSIN EN BOLSA A CORTO PLAZO. ANEXO B-Variaciones de los indicadores respecto al precio.
TR ( True Range ): segn Wilder el rango verdadero es la mayor de las siguientes distancias: Mximo de hoy y mnimo de hoy. Mximo de hoy y cierre de ayer. Cierre de ayer y mnimo de hoy. DI ( Directional Indicator ): se calcula un DI para cada DM, y el resultado aparece de dividir el movimiento direccional entre el rango verdadero. Resultado de estos clculos se obtiene +DI y -DI .
130
SISTEMA DE INVERSIN EN BOLSA A CORTO PLAZO. ANEXO B-Variaciones de los indicadores respecto al precio.
Y la curva lenta (llamada Signal y representada por una lnea discontinua) venga dada por la expresin: Signal = MediaExponencial(MACD(9))
(Fuente: [CAVA07])
negociado precede al precio, luego si se estudia los movimientos del volumen negociado se podr predecir variaciones de tendencia en el precio. Este indicador fue introducido por Joe Granville en 1963.
Ilustracin 72. Especulando con el volumen
(Fuente: [CAVA07])
131
SISTEMA DE INVERSIN EN BOLSA A CORTO PLAZO. ANEXO B-Variaciones de los indicadores respecto al precio.
132
SISTEMA DE INVERSIN EN BOLSA A CORTO PLAZO. ANEXO B-Variaciones de los indicadores respecto al precio.
Lambert recomienda usar un tercio de un ciclo completo (de mnimo a mnimo o de mximo a mximo) como longitud de los intervalos con los que se va a trabajar (ntese que la determinacin de la longitud del ciclo es subjetiva e independiente al clculo del CCI). Si un ciclo completo se da en 60 das (se tiene un mximo o un mnimo cada 60 das), entonces los intervalos de trabajo sern de 20 das.
(Fuente: [CAVA07])
14.6. Estocstico
Este indicador fue desarrollado por George C. Lane en el ao 1948. El estocstico ( stochastic ) es un indicador que muestra la localizacin del actual cierre con respecto al mximo/mnimo alcanzado en una serie de periodos anteriores. Los niveles de cierre que estn cerca del mximo indican de
acumulacin
(presin
compradores) y los niveles de cierre que estn prximos al mnimo indican distribucin
(presin de vendedores).
133
15. BIBLIOGRAFA
134
15. Bibliografa
15.1. Publicaciones
[BAEZ06] Bez Lpez, David; Matlab con Aplicaciones a la Ingeniera, Fsica y Finanzas , Alfaomega, 2006.
[BARR01]
Barranco de Areba, Jess; "Metodologa del anlisis estructurado de sistemas , Publicaciones de la Universidad Pontifica
Comillas, 2001.
[BECK02]
Beck,
Kent;
"Extreme
Programming
Explicado",
Addison
[CAVA07]
[CRUZ04]
Cruz Torres, Ivn; "Pronsticos en el mercado de derivados utilizando redes neuronales y modelos ARIMA: una aplicacin al Cete de 91 das en el MexDer", 2004
[CYBE89]
Cybenko,
George; "Approximation by
superposition of a
sigmoidal function ", 1989 Fernndez Hdar, Jos Antonio; Manual del Buen Bolsista , Pearson Prentice Hall, 2007. Garca Estvez, Pablo; Aplicaciones de las redes neuronales a las finanzas , 2002.
[FERN07]
[GARC02]
135
[GRAH07]
Graham, Benjamin; El Inversor Inteligente , Ediciones Deusto, 2007. Hornedo Lpez-Ibor, Juan; Proyecto Fin de Carrera: Sistema de Inversin en Bolsa a Corto Plazo , ETSI ICAI, 2008. Lambert, Donald; Commodities Channel Index: Tools for Trading Cyclical Trends , 1980. Maraver Baselga, Toms; Proyecto Fin de Carrera: Aplicaci n del Perceptrn Multicapa a la Compra-Venta de Acciones de Bolsa a Corto Plazo , ETSI ICAI, 2007.
[HORN08]
[LAMB80]
[MARA07]
[OLME04]
Olmedo, Elena; Valderas, Juan Manuel; Mateos, Ruth; Gimeno, Ricardo; "Utilizacin de redes neuronales en la caracterizacin, modelizacin y prediccin de series temporales econmicas en un entorno complejo", 2004. Rodrigo, Nuo; La Bolsa Contada con Sencillez , Maeva, 2004.
[RODR04]
[ROSE03]
Rosenberg, Doug; Stephens, Matt; "Extreme Programming Refactored: The Case Against XP", APRESS, 2003. Russel, Stuart; Norving, Peter; Inteligencia Artificial, Un Enfoque Moderno , Pearson Prentice Hall, 2004.
[RUSS04]
136
15.2. Apuntes
[A_MUO] Muoz Garca, Manuel; Apuntes de la asignatura Gestin de Proyectos Informticos de Ingeniera Informtica en ICAI en el curso acadmico 2008/2009.
[A_SANZ]
Sanz Bobi, Miguel ngel; Apuntes de la asignatura Inteligencia Artificial de Ingeniera Informtica en ICAI en el curso acadmico 2008/2009.
[WEB002] www.info-ab.uclm.es/asignaturas/42551/trabajosAnteriores/Presentacion-XP.pdf
[WEB003] http://www.slideshare.net/joaquin_win/extreme-programming-456979
[WEB004] http://es.wikipedia.org/wiki/Programacin_extrema
[WEB005] http://es.wikipedia.org/wiki/Crisis_financiera_de_2008
[WEB006] http://www.abcbolsa.com/
137
[WEB007] http://inversornovel.blogspot.com/2009/04/sistema-de-inversion-en-bolsa-derobert.html
[WEB008] http://www.pro.softonic.com/windows/bolsa
138