PARTE 2: CONSTRUCCIÓN DE UNA APLICACIÓN PARA EXPERIMENTACIÓN
5. ANÁLISIS Y ESPECIFICACIÓN
En este capítulo se describirán las etapas de análisis de requisitos y la especificación del siste-ma software construido para este proyecto. También se detallará la metodología seguida du-rante la creación del software, que se incluirá dentro de la etapa de análisis.
En la etapa de análisis se concretarán las funcionalidades que deberá tener el sistema (requisi-tos funcionales) y los factores que se deberán tener en cuenta en la implementación de dichas funcionalidades (requisitos no funcionales). También se determinará el proceso de trabajo que se utilizará en la construcción del software, junto con las herramientas empleadas para gene-rar los diagramas surgidos en dicho proceso. Los apartados dedicados a la etapa de análisis son: 5.1 y 5.2.
En la etapa de especificación se detallarán qué bloques componen la lógica del sistema y cómo se comportará externamente, es decir, cómo interactuará con los actores y las entradas y sali-das de datos que producirá. En esta etapa no se tienen en cuenta las tecnologías empleasali-das en la implementación del sistema. Los apartados dedicados a la especificación son: 5.3, 5.4 y 5.5.
5.1 Metodología de trabajo
La metodología utilizada para diseñar el software es el modelo propuesto por Craig Larman. Este es un proceso de trabajo que establece que en cada etapa del flujo de trabajo (análisis, especificación, diseño e implementación) deben existir unos diagramas y documentos concre-tos que muestren claramente lo que ocurre en cada una. Sin embargo, en esta memoria no se mostrarán todos los documentos que propone el proceso de Larman, a causa de su gran nú-mero. Este proceso está orientado a documentar sistemas software muy grandes, e incluso en estos casos, algunos de los documentos de la metodología no son necesarios para comprender y poder modificar el sistema. Por este motivo, se mostrarán únicamente los documentos más importantes que permitan la comprensión del sistema software. Es importante no documentar en exceso, ya que en este caso existirán diferentes diagramas redundantes e innecesarios que añaden complejidad innecesaria y provocan confusión en la persona que intenta comprender el sistema.
El programa utilizado para construir los diagramas es Umbrello. Este es un programa de código abierto y licencia GLP para Linux, y tiene una gran cantidad de funcionalidades relacionadas con la ingeniería del software, entre ellas la realización de los diagramas mostrados en esta parte de la documentación.
51
5.2 Requisitos del sistema
Para determinar las funcionalidades que debe ofrecer el sistema software y qué factores tener en cuenta al implementarlas, se han llevado a cabo reuniones con el director de este proyecto, Argimiro Arratia, que ha desarrollado el papel de cliente final de la aplicación.
5.2.1 Funcionales
El programa implementado en este proyecto grosso modo debe de proporcionar una interfaz que permita ejecutar el algoritmo de programación genética (también implementado en el proyecto), gestionar los datos de los históricos de precios de los índices y acciones guardados en la base de datos, gestionar las reglas guardadas en la base de datos y realizar experimentos con las reglas generadas por el algoritmo. Estos experimentos deben permitir realizar el con-junto de experimentos descritos en la última parte de este proyecto, así como llevar cabo en un futuro otro tipo de experimentos con las reglas generadas, especialmente orientados al estudio de la influencia de los costes de transacción en las reglas. Por este motivo, la interfaz del programa debe proporcionar la mayor libertad posible al usuario para manejar reglas de inversión y observar sus características.
Del listado de requisitos funcionales se derivan los casos de uso, ya que ambos tratan las fun-cionalidades que debe tener el sistema. A continuación se concretan estas funfun-cionalidades, agrupadas según los cuatro criterios generales citados en el párrafo anterior:
Programación genética:
o Generar un conjunto de reglas con unos determinados parámetros. Tal y como se ha explicado en el capítulo 4, una ejecución del algoritmo genera tantas re-glas de inversión como iteraciones realice. Todas las rere-glas generadas en una ejecución del algoritmo se agruparán en un conjunto indivisible que las con-tendrá, al cual se llamará de ahora en adelante conjunto de reglas de élite. o Cambiar los parámetros usados para generar los conjuntos de reglas de élite.
Gestión de datos de los históricos:
o Consultar el histórico de precios de los índices y valores guardados. o Eliminar el histórico de precios de algún índice o valor.
o Añadir o actualizar los datos del histórico de precios de los índices y valores guardados, automáticamente y manualmente:
Automático: Los datos se descargan de Internet para todos los valores e índices presentes en la base de datos.
Manual: El usuario elige un valor o índice presente en la base de datos y un fichero con todos los datos que deberá contener el histórico. o Introducir un nuevo índice en la base de datos, y dar la opción a introducir
también valores pertenecientes a él.
o Introducir un nuevo valor perteneciente a un índice existente en la base de da-tos.
52
o Cambiar el nombre de un conjunto de reglas. o Quitar de la interfaz un conjunto de reglas
o Guardar un conjunto de reglas en la base de datos. o Cargar un conjunto de reglas de la base de datos. o Eliminar un conjunto de reglas de la base de datos.
o Crear un conjunto de reglas personalizado, en el que se pueden agregar indivi-dualmente reglas pertenecientes a conjuntos de élite. El propósito de tener estos conjuntos personalizados es dar libertad al usuario para que pueda mez-clar diferentes reglas de inversión provenientes de distintos conjuntos de élite y poder observar el resultado que da su aplicación conjunta (los experimentos muestran información de cada regla de forma individual y del conjunto, tal y como se comentará en el siguiente punto).
o Añadir una regla a un conjunto personalizado. o Eliminar una regla de un conjunto personalizado.
Experimentación:
o Obtener información sobre la generación de un conjunto de reglas. Para los conjuntos de reglas de élite, la información mostrada es la siguiente: índice, valor, fechas entre las que está comprendido el periodo de entrenamiento y el de validación, beneficio máximo, mínimo y medio de los periodos de entrena-miento y validación, número de iteraciones, número de individuos en la pobla-ción, número máximo de generaciones, número de generaciones sin mejora, número máximo de nodos por individuo, probabilidad de cruce y mutación, costes por transacción. Aparte de estos parámetros, también se muestra cómo ha evolucionado el fitness medio de la población y del mejor individuo en los periodos de entrenamiento y validación durante la generación. En el caso de los conjuntos de reglas personalizados, la información mostrada es la misma, aunque los datos pertenecen a la población de élite con la que ha sido genera-da cagenera-da regla, a excepción del beneficio máximo, mínimo y medio, que son sustituidos por el beneficio dado por la regla en cuestión en los periodos de entrenamiento y validación. Todos los datos de beneficios son mostrados con respecto a los obtenidos mediante la estrategia buy and hold.
o Mostrar los beneficios y las estadísticas generales3
de un conjunto de reglas durante un determinado periodo según diversos costes de transacción.
o Mostrar los beneficios y las estadísticas generales de un conjunto de reglas du-rante un periodo y con un coste de transacción determinados.
o Mostrar qué porcentaje de reglas de un conjunto se encuentran dentro del mercado para cada día de mercado de un periodo dado.
3 Media, desviación estándar, mediana, máximo y mínimo de los beneficios dados por el conjunto de reglas. También se incluyen los resultados de operar mediante el voto mayoritario del conjunto de re-glas, es decir, estar dentro del mercado cuando más del 50% de ellas así lo indican y estar fuera del mer-cado en caso contrario.