Friday, December 23, 2016

Desarrollo Del Sistema Comercial


Guía para el desarrollo de sistemas comerciales La evolución continua del software de análisis técnico ha simplificado la creación de sistemas de negociación automatizados por ordenador. Algunos sistemas apenas generan las señales para que el comerciante siga, mientras que otros colocan las operaciones en el mercado en nombre del comerciante. Sin embargo, ser capaz de programar su plataforma de comercio favorita es sólo el comienzo. Debe tener un marco para probar sus teorías de negociación para asegurarse de que los backtests rentables no son meramente por suerte, sino que son los resultados del modelado robusto de un comportamiento marketrsquos. Esta serie de artículos presentará un enfoque simplificado para desarrollar un sistema de comercio para el mercado de divisas al por menor. La herramienta de desarrollo del sistema wersquoll será MetaTrader 4 (MT4), aunque las ideas y el proceso presentado se aplican a una amplia gama de plataformas de software. La metodología abarcará los conceptos generales dirigidos al comerciante del sistema inicial. Cuando tomamos atajos para la conveniencia, wersquoll remite al lector a recursos adicionales para obtener información más detallada. Hay cinco fases distintas en el desarrollo del sistema comercial: Fase 1: Desarrollando el modelo de mercado y el sistema automatizado básico mdash el sistema automatizado básico implementa este modelo, pero no incorpora stop loss o objetivos de ganancias. El sistema básico tiene el único propósito de recolectar datos para el análisis estadístico utilizado en las fases de desarrollo posteriores. Fase 2: La gestión de riesgos implica la pérdida inicial de stop (ISL). Utilizando los datos recogidos en la Fase 1 y basándonos en el análisis estadístico de esos datos, añadimos un ISL a la estrategia de negociación. Utilizamos la optimización para encontrar un parámetro stop loss que se adapte a nuestras necesidades. Utilizaremos análisis de avance para probar esta versión del sistema. Fase 3: Gestión de beneficios mdash la meta de beneficio (PT). Al igual que en la Fase 2, utilizaremos el análisis estadístico de nuestros datos para incorporar un objetivo de beneficio en el sistema. Una vez más, utilizaremos la optimización para encontrar un objetivo de beneficio adecuado y luego usaremos el análisis de avance para probar esta versión del sistema. Fase 4: Gestión del dinero mdash el algoritmo de tamaño comercial (TSA). Esta fase no depende de los datos recogidos en la Fase 1. En lugar de ello, incorporaremos el popular método de tamaño de comercio de fracciones fijas para determinar cuántos lotes se asignan a cada comercio. La literatura comercial popular está repleta de consejos para restringir el riesgo por comercio dentro de un rango de 1 a 3 de la equidad de la cuenta. Ejecutaremos nuestra optimización usando esos porcentajes, y luego usaremos de nuevo análisis de avance para probar esta versión del sistema. En conjunto, las fases 2 a 4 comprenden la gestión comercial, pero hay un paso más crítico: Fase 5: Análisis de Monte Carlo Muchos comerciantes se detienen después de la Fase 4. Sin embargo, nuestras pruebas no están completas en esa coyuntura y el sistema no está listo para Despliegue (suponiendo que sea rentable). A pesar de nuestro análisis prospectivo, no podemos estar seguros de que nuestros resultados no son por suerte. En otras palabras, nuestro modelo puede no describir el comportamiento del mercado con exactitud los resultados favorables pueden haberse beneficiado de un entorno de mercado cuya acción precio acaba de coincidir con nuestra lógica. El análisis de Monte Carlo ayudará a determinar si nuestro modelo fue exitoso debido a la suerte (aleatoriedad) oa su capacidad de identificar y explotar un patrón de mercado real. Este artículo cubrirá la fase 1 los artículos subsecuentes cubrirán las fases 2 a 5. Sobre el autor Neil Rosenthal es un dentista jubilado que negocia su propia cuenta. También es un experimentado programador de computadoras. El desarrollo de los sistemas de negociación mediante la programación genética con un estudio de caso Extracto Contenido 1 Introducción 1.1 Motivación 1.2 Objetivo y estructura 2 Principios básicos y estado de la técnica 2.1 Programación genética 2.1.1 Estructura del programa 2.1.2 Inicialización de la GP 2.1.3 Los Operadores Genéticos 2.1.4 Función Fitness 2.1.5 Selección 2.1.6 Proceso del algoritmo 2.1.7 Crossover, bloques de construcción y esquemas 2.1.8 Enfoques contra la macromutación 2.1.9 Modularización 2.1.10 Otros enfoques para la mejora 2.2 Redes neuronales artificiales 2.2.1 Componentes de redes neuronales 2.2.2 Topologías de redes 2.2.3 Métodos de aprendizaje 2.3 Sistemas de negociación 2.3.1 Lector de cintas 2.3.2 Calendario de mercado 2.3.3 Clasificación de posiciones 2.3.4 Comparación de sistemas de negociación 2.3.5 Fundamental Frente al análisis técnico. 2.3.6 El mercado de divisas 2.3.7 Enfoques para el desarrollo de sistemas de negociación. 3 Proyecto 3.1 Resumen 3.2 Requisitos en el software 3.3 Concepción de software 3.3.1 El algoritmo evolutivo 3.3.2 La función de aptitud física 4 Implementación 4.1 Componentes del software desarrollado 4.2 Clases del servidor de datos de tipo de cambio. 4.3 Clases del Algoritmo Evolutivo 4.4 Visión general sobre el marco ECJ 4.5 Problemas durante los experimentos 5 Resultados del experimento 5.1 Resultados con pesos de nodos 5.1.1 Resultados del período de entrenamiento. 5.1.2 Resultados del período de validación. 5.1.3 Resultados del período de tiempo de prueba 5.1.4 Resultados como volúmenes mensuales 5.1.5 Reglas comerciales creadas 5.2 Resultados sin pesos de nodo 5.2.1 Resultados del período de entrenamiento 5.2.2 Resultados de los períodos de tiempo de validación 5.2.3 Resultados de la prueba Período de prueba 5.2.4 Resultados como rendimientos mensuales 5.2.5 Reglas de comercio creadas 5.3 Identificación y aplicación de f 6 óptimo Discusión y evaluación 6.1 Perspectiva Lista de figuras Capítulo 1 Introducción 1.1 Motivación La evolución natural ha resultado ser un mecanismo exitoso para la Engendramiento y adaptación de las criaturas al medio ambiente. Sin recibir instrucciones particulares ni definiciones objetivas, ha logrado encontrar soluciones sofisticadas para los problemas existentes en el mundo real. La Programación Genética (GP) es un enfoque para usar el poder creativo dentro de la evolución natural para el desarrollo automático de programas informáticos (ver Koz92, Capítulo 1-6). Se utiliza para tratar de simular mecanismos de la evolución natural con el fin de generar programas automáticos que resuelvan un problema dado. En una serie de aplicaciones, GP se ha utilizado para resolver problemas matemáticos, así como para resolver con éxito problemas del mundo real. Entre ellos se cuentan problemas como la regresión simbólica, la clasificación (véase Koz92, capítulo 17), la síntesis de redes neuronales artificiales (véase Gru94, Capítulo 2), el reconocimiento de patrones (Tac93, páginas 2 a 10), el control del robot (véase (BNO97, páginas 2 a 10)) y la generación de imágenes (véase GH97, páginas 2 a 7) ) Se cuentan entre estos problemas. El aprendizaje automatizado por medio del GP puede ser interpretado como algoritmo de búsqueda heurística descubriendo en el conjunto de todos los programas posibles aquellos que ofrecen la mejor solución para el problema dado. Dependiendo del problema dado, el rango de búsqueda es muy grande y muchas veces ni continuo ni diferenciable y por lo tanto el rango de búsqueda de todos los programas posibles es mal ajustado para algoritmos clásicos de búsqueda (véase LP02, página 2). En esta tesis, el GP se aplica en el ámbito de la generación de sistemas de negociación para el mercado financiero, especialmente para el mercado de divisas. En los mercados financieros, los comerciantes especulativos exitosos utilizan para actuar sobre la base de un determinado conjunto de normas. Sin embargo, estas reglas están sujetas a una interpretación relativamente amplia. Después de una cuidadosa revisión se hace evidente que, en situaciones decisivas, los concesionarios se desvían de las regulaciones que creen para determinar su acción y actuar según su instinto. Es posible que esta parte de la acción intuitiva distinga a un comerciante experimentado y rentable de un comerciante poco experimentado y no rentable, incluso si ambos creen que están trabajando sobre la base del mismo conjunto de reglamentos. La definición de un sistema de comercio por un ser humano está sujeta a algunas dificultades, ya que no puede reproducir todas las reglas de manera inequívoca. Esta es la razón por la que la transferencia de acciones que define conjuntos de reglas a la computadora ha resultado ser infructuosa. Hay otro método para que el ordenador aprenda automáticamente las reglas de acción. Para ello, p. Las redes neuronales artificiales (NN) se aplican con éxito (véase Ska01, páginas 2 a 5), ​​(MK, páginas 2 a 7)). Sin embargo, no es posible extraer las diversas reglas de la red de una manera que permita una interpretación fácil sin dificultades. Los usuarios critican esta propiedad de caja negra de NN. GP se propone como alternativa a NN, ya que puede generar reglas directamente y pueden ser interpretadas de una mejor manera a pesar de cierta complejidad (véase (YCK05, página 23)). En cuanto a la solución de problemas difíciles, ambos enfoques son comparables (véase (BB98, página 13)). 1.2 Objetivo y estructura El objetivo de esta tesis es aplicar GP, con el fin de generar sistemas de negociación y analizar su rentabilidad en el marco de una simulación histórica. Se diseña un sistema de software, que resuelve esta tarea, y se presentan aspectos interesantes de implementación. Para poder desarrollar sistemas de negociación con GP, ​​el software, que se va a desarrollar, tiene que cumplir con una serie de requisitos. El desarrollo de los sistemas de negociación se hará sobre la base de series temporales históricas de tipos de cambio y precios. Se supone que el mercado cambiará con el transcurso del tiempo, por lo que los sistemas de negociación, que han sido rentables antes, van a perder su rentabilidad. Por esta razón, el sistema de desarrollo del sistema de comercio debe concebirse de manera que permita la generación de nuevos sistemas de negociación adaptados a las cambiantes condiciones del mercado. Para garantizar la provisión de datos de precios actuales, los datos pertinentes del mercado deben ser recopilados continuamente y proporcionados al sistema de desarrollo. El desarrollo de sistemas comerciales rentables está respaldado por datos preprocesados ​​de los datos de precios, que son los distribuidores de valores conocidos y utilizados, se proporcionan al sistema. Para permitir una verificación visual, los datos preprocesados, así como las transacciones de los sistemas de negociación, deben representarse gráficamente. Una sobre-optimización en el desarrollo de los sistemas de comercio debe evitarse subdividiendo el historial de precios disponibles en un período de formación, validación y prueba. Con el fin de obtener un sistema de comercio para el período de prueba, los mejores sistemas de comercio del período de formación se aplican al período de validación. El mejor sistema de comercio durante la validación se elige para el comercio en el período de prueba. Debería ser posible reproducir el proceso de desarrollo y debería ser transparente mediante ficheros log de los resultados intermedios. Los sistemas de negociación de una complejidad demasiado alta hacen que los usuarios sean escépticos, ya que es difícil volver sobre las decisiones del sistema. Incluso si los sistemas de negociación más complejos proporcionaran una mayor rentabilidad, se debería orientar un cierto grado de trazabilidad de los sistemas de negociación. Además de la limitación del tamaño de los sistemas de negociación, el GP estándar se amplía mediante pesos de nodos. Así se intenta, por una parte, reducir la macromutación mediante el operador de crossover y, por otra parte, simplificar la capacidad de interpretación de los sistemas de negociación generados (véase 3.3.1 en la página 41). Estructura de esta tesis En primer lugar, los principios básicos y el estado de la técnica de la Programación Genética y las Redes Neuronales Artificiales se presentarán en el Capítulo 2.1 en la página 5. Se analizará el diseño y la función de NN, para este enfoque Se difunde ampliamente en el contexto del desarrollo de los sistemas de comercio. Después de eso, los principios básicos de los sistemas técnicos de comercio se presentarán a partir del capítulo 2.3 en la página 18 en adelante. Por un lado, el análisis técnico se presenta como un instrumento para encontrar mo - vimientos favorables para el comercio, por otro lado, se muestra un enfoque para definir el tamaño óptimo de la posición comercial. Acerca de estos dos enfoques presentados para el aprendizaje automatizado, diferentes autores han reportado aplicaciones exitosas. Algunas de estas aplicaciones exitosas se describen en el Capítulo 2.3.7 en la página 33. A partir del Capítulo 3 en la página 37 en adelante, se encontrará el diseño de un sistema para generar, optimizar y probar sistemas de negociación por medio del GP sobre la base del precio histórico Y los datos de tipo de cambio. Después de una visión general del sistema, se presentarán los requisitos y se desarrollará un concepto para el software. Se definirán las propiedades del algoritmo evolutivo relevante para la Programación Genética. Los detalles de implementación se describen a partir del capítulo 4 en la página 47 en adelante. Los resultados de los experimentos realizados con el sistema se muestran en el capítulo 5 en la página 55 en adelante. Después de esto, se discute y evalúa los resultados, así como una explicación de posibles desarrollos futuros del sistema en el Capítulo 6 en la página 73. Capítulo 2 Principios básicos y estado de la técnica En este capítulo, los principios básicos de la Evolución Se presentan algoritmos y redes neuronales artificiales y se describe el estado actual de la técnica. A continuación se discuten los principios relevantes del área de aplicación, los sistemas técnicos de negociación. 2.1 Programación Genética La Programación Genética (GP) es un algoritmo fuera de la familia de los algoritmos evolutivos. En la naturaleza, la evolución ha resultado ser un sistema muy exitoso para el desarrollo ulterior y la optimización de todas las criaturas. Los algoritmos evolutivos están simulando las características esenciales y exitosas del proceso evolutivo natural por medio de modelos simples. De esta forma, permiten encontrar buenas soluciones con poco esfuerzo, incluso si hay problemas con un gran rango de búsqueda. Las estructuras y algoritmos de datos son generados y optimizados por los Algoritmos Evolutivos, con el fin de resolver problemas dados. Esta introducción sigue los estudios de Banzhaf et al. (BNKF98, capítulo 1-8), así como Koza, que ha descrito GP en (Koz92) por primera vez. En los siguientes pasajes hay una breve descripción de cómo se estructura un programa en el GP y cómo funciona la evolución. Después se discuten los problemas existentes del procedimiento así como los enfoques para una solución para ellos. 2.1.1 Estructura del Programa Los individuos desarrollados evolutivamente durante el GP son programas. Estos programas están formados por funciones y terminales (véase (BNKF98, páginas 109 a 118)). La selección de las funciones utilizadas dentro de un programa genético depende del área de aplicación específica. Un requisito esencial para la selección de las funciones, proporcionadas al programa genético, es que debe ser posible solucionar el problema de aplicación de ellas. Sin embargo, para evitar un aumento innecesario del rango de búsqueda, no se deben proporcionar demasiadas funciones. Según Banzhaf et al. In (BNKF98, página 111), tampoco tiene sentido desarrollar funciones especialmente adaptadas al problema dado desde el principio de una aplicación. Dado que GP es muy creativo en lo que respecta a la combinación de funciones, puede ser suficiente para proporcionar funciones simples como las funciones booleanas y aritméticas para lograr resultados sorprendentes. Los argumentos de las funciones aplicadas son terminales. Por un lado, se componen de los datos de entrada utilizados por el sistema de formación y, por otro lado, de constantes cambiadas en el transcurso de la evolución. Estas constantes se llaman constantes efímeras aleatorias (ERC) (véase (Koz92, página 242 a continuación)). El cierre de las funciones con respecto a los terminales es un requisito esencial para la función libre de errores de los programas generados. Las funciones aplicadas deben estar diseñadas de tal manera que puedan procesar todos los tipos de valores de entrada: por ejemplo, la división se ajusta a menudo para evitar que el programa aborte en caso de que haya divisiones por cero. Para determinar la secuencia de la evaluación de las funciones del programa, las funciones y terminales de un programa se almacenan en una estructura de datos correspondiente. Lo más a menudo, las estructuras del árbol se utilizan para hacer tan. Sin embargo, también se utilizan estructuras lineales, así como gráficos generales como formas de organización. En el caso de las estructuras de árbol, la secuencia habitual de la evaluación es de izquierda a derecha: se ejecuta el nodo izquierdo más lejano más adentro dentro de la estructura de árbol, para el cual todas las entradas están disponibles. El representante más prominente de una estructuración lineal de las funciones y terminales es la simulación de una máquina registradora. Dispone de varios registros, una memoria lineal para la asignación de terminales a los registros, así como funciones que utilizan los registros para la entrada / salida. Una variante relativamente nueva de la estructuración son gráficos direccionales que pueden incluir ciclos (véase (BNKF98, página 116 a continuación)). Lo que hace interesante esta estructura es el hecho de que los bucles y la recursividad están resultando en el curso de la evolución y no tienen que ser proporcionados por funciones especiales de antemano. Sin embargo, los ciclos superfluos podrían ser problemáticos, ya que están extendiendo el programa ejecutado innecesariamente. 2.1.2 Inicialización de la población GP Como la estructura arbórea es la estructura de datos más extensa para individuos y se usa también para el ejemplo de aplicación, solamente esta estructura de datos se considerará en lo siguiente. Los métodos, introducidos por Koza en (Koz92, páginas 91 a 94), para la inicialización de individuos específicos de la población se llaman Full, respectivamente Growth. Para toda la población, el tamaño máximo de un solo programa está determinado por la profundidad máxima de los árboles específicos. En el caso del método Full para la inicialización de un individuo, se crea un árbol con profundidad máxima, para que todos los nodos sean seleccionados del conjunto de funciones al azar, con la excepción de los nodos de profundidad máxima, que son Seleccionado del conjunto de los terminales al azar. En el método de Crecimiento, el árbol se construye a partir de la raíz, seleccionando para cada nodo un elemento de la función, respectivamente del terminal, al azar. Si se selecciona un terminal, se termina la estructuración de esta rama y el procedimiento continúa en el último nodo de la rama, es decir, no hay terminal. Para los nodos de la profundidad máxima del árbol, la selección estocástica se limita a los terminales. Para lograr la mayor variedad posible dentro de la población, ambos métodos de estructuración descritos aquí se aplican en combinación. Este método se llama Ramped Half-and-Half. A una profundidad máxima dada de N, la población se divide por partes iguales en árboles con profundidades máximas de 2,3. N. Cada uno de estos grupos se inicializa la mitad y la mitad de acuerdo con el crecimiento y el método completo. 2.1.3 Los Operadores Genéticos Los operadores genéticos son herramientas que están disponibles para el algoritmo para mejorar la aptitud de la población en el transcurso del tiempo. Los operadores más utilizados son crossover, mutación y reproducción. El operador más fácil es la reproducción, que es seleccionar un individuo con respecto a la aptitud y está transmitiendo una copia idéntica a la siguiente generación. El operador de crossover está combinando el material genético de dos individuos intercambiando subárboles, generando así dos nuevos individuos. Haciendo esto, hay una mayor probabilidad de que las funciones sean seleccionadas en lugar de terminales. Incluso la generación de un solo descendiente es bastante usual (véase (BNKF98, página 241)). La mutación se aplica a un solo individuo. Muy a menudo esto se hace después del operador de crossover. Existe sólo una pequeña probabilidad de que un nodo sea seleccionado al azar de un individuo y el subárbol sea reemplazado por nuevos nodos estocásticos, como se ha hecho en la inicialización. Además de eso, también hay una serie de otros operadores genéticos de amplio uso. Por ejemplo, Banzhaf et al. (BNKF98, página 241) enumeran los siguientes operadores para la mutación: - Mutación puntual: Un nodo único es intercambiado por un nodo estocástico de la misma clase. - Permutación: Die Positionen von Argumenten einer Funktion werden vertauscht. - Grúa: Se genera un nuevo individuo a partir de un subárbol. - Mutación de Expansión: Un terminal es intercambiado por un subárbol aleatorio. - Contraer Subtree Mutación: un subárbol es intercambiado por un terminal estocástico. - Subtree Mutación: Un subárbol es intercambiado por un subárbol estocástico. - Duplicación de genes: Un subárbol es intercambiado por una terminal estocástica. Como alternativa para el operador de crossover estándar, Banzhaf está listando los siguientes operadores: - Intercambio de Subtree Interconexión: Intercambio de dos subárboles entre individuos - Interconexión automática: Intercambio de subárboles dentro de un solo individuo - Módulo Crossover: Intercambio de módulos entre individuos - Preservar Crossover: Intercambio de dos subárboles de dos individuos, si sus coordenadas son correspondientes o si por lo menos son similares. 2.1.4 Función de Fitness Correspondiente a la selección que tiene lugar en la evolución natural, hay un proceso de selección en el GP sobre la base de un valor de aptitud que se asigna a cada individuo específico de la población. El valor físico de un individuo se determina mediante la evaluación del individuo por medio de la función de aptitud física. Para ello, en la mayoría de los casos el programa genético del individuo se ejecuta con entradas que resultan de un conjunto de datos de entrenamiento y se determina un valor de aptitud sobre la base de la salida del programa. Con el fin de establecer una presión de selección similar a la evolución natural para obtener mejores soluciones para el problema dado, se determina mediante un procedimiento de selección basado en la aptitud de los individuos que los individuos se reproducen en la siguiente generación. Un requisito esencial para resolver el problema y para el diseño de la función de aptitud es la continuidad de la función de aptitud (véase (BNKF98, página 127)). Esto significa que la mejora de un individuo con respecto al problema debe corresponder a una mejora del valor de la adaptabilidad. La continuidad de la función de fitness es un requisito esencial para la iteración de la mejora de los individuos. Una función de fitness muy frecuente es la función error-fitness. Se puede aplicar si se conoce un óptimo, que se ha de alcanzar, y se puede determinar el error aún existente de la solución lograda para este óptimo. Un ejemplo de esto es la regresión simbólica. Por lo tanto, se da un polinomio y el sistema GP debe aproximar esta función lo más exactamente posible combinando las funciones proporcionadas (véase Koz92, Capítulo 10). A medida que la desviación del polinomio dado disminuye, el valor de ajuste del individuo aumenta. 2.1.5 Selección La selección determina cuáles son los individuos de una población que permanecen, respectivamente, se reproducirán y así conservarán o incluso proliferarán su material genético. La presión de selección puede ser controlada con respecto al tipo y parametrización del algoritmo de selección. Una alta presión de selección está distribuyendo las propiedades de los individuos superiores dentro de la población rápidamente. Esto puede conducir al resultado de que el Algoritmo Evolutivo sólo encontrará una solución subóptima, porque la solución existente domina la población y mejores propiedades no podrán prevalecer. Una presión de selección que es demasiado pequeña es innecesariamente extender el funcionamiento del algoritmo. En este caso, puede ocurrir que las buenas propiedades no puedan propagarse dentro de la población y que sean destruidas de nuevo por los operadores genéticos. La selección proporcional a la aptitud Durante mucho tiempo, la selección proporcional a la aptitud ha sido el método más utilizado para la selección en el campo de los algoritmos genéticos, después de su introducción por Holanda (ver Hol75). Con este método, se selecciona al azar a un individuo de la población. La probabilidad está determinada por la relación de la aptitud del individuo con la suma de la aptitud de todos los individuos. Blickle et al. Concluyen que la selección proporcional a la aptitud es inapropiada por las siguientes razones (ver BT95, páginas 40 a 42): - La tasa de reproducción es proporcional a la aptitud de un individuo. Si los valores de fitness están muy cerca uno del otro, hay, por así decirlo, sólo una selección estocástica. - No hay invariancia de traducción: mientras que los valores de aptitud uno, respectivamente diez, todavía significan una gran diferencia en la probabilidad de selección, esta diferencia desaparece en su mayor parte, si ambos valores de aptitud se incrementan en un valor relativamente alto. - A pesar de una alta varianza al inicio de la optimización, la intensidad de selección es demasiado pequeña, a veces incluso negativa, hecho que puede conducir a un deterioro de la aptitud media de la población. Selección de truncamiento La selección de truncamiento, que también se conoce como (,) - selección (véase Sch95, página 158 siguiente), utiliza a los individuos como padres para generar nuevos individuos de los cuales los individuos sirven como padres en la siguiente generación. Los valores de aptitud absoluta no juegan un papel en esta selección, sino la secuencia de los individuos sobre la base de los valores de la aptitud. Selección por rango La selección por rango también se basa en la secuencia de los individuos que se define sobre la base de los valores de aptitud. Se hace una distinción entre el ranking lineal y el exponencial. En la clasificación lineal, la probabilidad de que un individuo sea seleccionado depende de su rango dentro de la población linealmente. En el ranking exponencial, la probabilidad de que un individuo sea seleccionado está aumentando exponencialmente. Selección del torneo En la selección del torneo, un grupo de individuos, seleccionados al azar fuera de la población, está compitiendo. El tamaño de este grupo se llama el tamaño del torneo. El individuo con el valor más grande de la aptitud del grupo elegido se selecciona y se utiliza para la reproducción. El descendiente está reemplazando a los individuos inferiores del grupo del torneo en la población. El tamaño del torneo determina la presión de selección, con un tamaño de torneo de dos correspondientes a una presión de selección menor. En el GP, un tamaño de torneo de siete se ha establecido como tamaño predeterminado. 2.1.6 Proceso del algoritmo Después de la presentación de los diversos componentes del algoritmo evolutivo, se sigue una descripción del progreso del algoritmo. Existe una distinción entre el GP generacional y el GP en estado estacionario. En el GP generacional, en un cierto momento una población está creando una población que se transmite a la población de la próxima generación por los operadores genéticos: 1. Inicialización de la población 2. Evaluación de las poblaciones de individuos y asignación de un valor de aptitud Para cada individuo 3. Aplicación de los operadores de selección y genéticos, hasta que la población de la siguiente generación esté completa 4. A menos que se cumpla el criterio de aborto del algoritmo, continúe con el ítem 2 En el algoritmo de estado estacionario no se hace distinción entre géneros - ciones. De un grupo seleccionado al azar de individuos de la población los mejores se eligen por medio de la selección del torneo. Los operadores genéticos son aplicados a ellos y los descendientes resultantes están reemplazando a los perdedores del torneo: 1. Inicialización de la población 2. Selección estocástica de un grupo de individuos de la población para la selección de torneo 3. Evaluación de la aptitud de la selección Individuos 4. Aplicación de los operadores genéticos a los ganadores del torneo 5. Reemplazo de los perdedores del torneo por los descendientes generados de los ganadores 6. A menos que se cumpla el criterio de aborto del algoritmo, continúe con el ítem 2 Con la comparación Generacional GP y estado estacionario GP sobre la base de un problema de clasificación, Kinnear concluye que el estado estacionario GP está logrando mejores resultados (véase (Kin93a, página 6 siguientes)). 2.1.7 Crossover, bloques de construcción y esquemas El crossover en sus diversas características es el operador genético más frecuentemente aplicado en el GP. La probabilidad de elección del operador de crossover para la generación de los descendientes de un individuo se encuentra generalmente en el intervalo de 90 (véase Koz92, páginas 114 a 116). La fuerte aplicación del crossover en el GP está apoyada por la evolución natural en el marco de la reproducción sexual biológica. Como consecuencia, la mutación ocurre en el curso de la reproducción biológica, pero sólo en un pequeño grado. Este hecho es reflejado por el GP por una pequeña probabilidad de mutación (véase BNKF98, capítulo 2.) El operador de crossover es considerado como la razón por la GP es más eficaz propagación que otros procedimientos que se basan en meros cambios aleatorios de la solución (Koz92, páginas 116 a 119), la población de un GP incluye bloques de construcción. Los buenos bloques de construcción mejorar la aptitud de los individuos que incluyen. Por esa razón hay una mayor probabilidad de que estos individuos son seleccionados Para la reproducción, así es como un buen bloque de construcción logra propagarse dentro de la población, Koza sigue la argumentación de Holanda, que presentó por primera vez la hipótesis del bloque de construcción de los algoritmos genéticos (cf. Debido a esta difusión de buenos bloques de construcción, es posible que el GP cree buenas soluciones de problemas con más rapidez de lo que sería posible para un procedimiento basado en mutación simple Koza demuestra en (Koz92, capítulo 9), que , Con la excepción de problemas muy simples, GP es superior a la búsqueda aleatoria. Goldberg intenta explicar la función de los algoritmos genéticos mediante la hipótesis del bloque de construcción. De acuerdo con esta hipótesis, el operador de cruce está combinando pequeños bloques de construcción buenos para formar bloques de construcción mayores y mejores, para finalmente crear individuos casi óptimos (véase Gol89, página 41). Grefenstette critica la hipótesis del bloque de construcción como engañosa, ya que describiría el proceso real durante el desarrollo evolutivo no suficientemente y podría suceder fácilmente que se hagan conclusiones equivocadas. Muchos autores dan la razón de la mejor función de GP en comparación con una mera búsqueda aleatoria mediante esquemas. Los esquemas son plantillas que representan un grupo completo de secciones de código similares. Un teorema de esquema describe los supuestos de cómo estos esquemas se desarrollan de generación en generación, mientras que el cruce, la mutación y la selección están influenciándolos. El teorema del esquema presumiblemente más conocido fue presentado por Holland para algoritmos genéticos (véase (Hol75, páginas 66 a 88)). En (Koz92, páginas 116 a 119), Koza hizo el primer intento de transferir este teorema del esquema a GP. Como Langdon describe en (LP02, pág. 27)), el teorema del esquema ha sido criticado por muchos autores mientras tanto y algunos incluso lo clasifican como completamente inútil. Sin embargo, Langdon supone que el problema es la sobre-interpretación del teorema del esquema y no el teorema mismo. Hay varios enfoques para la transferencia del teorema del esquema a GP. Por ejemplo, hay una visión general y una discusión detallada de los diferentes enfoques en (LP02, Capítulo 3-6). En (LP02, Capítulo 6), Langdon introduce el teorema del esquema de acción macroscópico y muestra que los esquemas de crossover estándar de rango superior están formados por esquemas de rango inferior. Sin embargo, él admite que la noción de bloque de construcción puede causar malentendidos para el GP en la medida en que sugiere que los bloques de construcción se montan paso a paso para formar bloques mejores y más grandes. Según Langdon, su teorema esquemático sugiere que el proceso de selección de los esquemas aplicados no puede ser reproducido y se produce aleatoriamente. Además, no hay necesariamente una selección de esquemas que sean particularmente cortos o ajustados por encima del promedio. 2.1.8 Enfoques contra la macromutación Un problema esencial del operador de crossover en comparación con su modelo en la reproducción biológica es el hecho de que, por un lado, está creando buenas combinaciones, pero, por otro lado, está funcionando como macromutación Y está destruyendo bloques de construcción creados. En la reproducción biológica, se utiliza mucha energía para proteger los buenos bloques de construcción ya creados contra las influencias dañinas del crossover. El crossover biológico es homólogo, i. mi. El crossover está sucediendo casi exclusivamente en el nivel del gen. Apenas ocurre que se intercambien dos genes con propósitos completamente diferentes (véase (BNKF98, página 156 siguiente)). Hay una serie de enfoques que tratan de introducir mecanismos de protección contra la macromutación en el GP. Un fenómeno que ocurre naturalmente es la unión del código libre de efectos a los bloques de construcción en el transcurso de la simulación. Por lo tanto existe una probabilidad decreciente de una destrucción de los bloques de construcción. Este proceso se puede observar también en el modelo natural. Más de 90 de un genoma de criaturas superiores se compone de los llamados intrones que no codifican genes ni contienen secuencias de control. Mientras la EA está en proceso, se puede observar que la cantidad de código sin efecto está aumentando exponencialmente (BNKF98, páginas 191 a 193). Este fenómeno se llama inflamación. Además de la función de protección de los intrones, el bloat tiene el problema de bloquear el desarrollo y el tiempo de ejecución del programa generado se extiende innecesariamente. Banzhaf identifica la macromutación del operador de crossover como una gran diferencia en comparación con el crossover natural en la reproducción sexual biológica. Casi todos los crossovers naturales son exitosos, mientras que en GP unos 75 de ellos tendrían que ser clasificados como mortales según las normas biológicas (véase (BNKF98, página 157)). Por esta razón, la reducción de la macromutation del operador de crossover en el GP es un importante campo de investigación. En los siguientes pasajes, se discuten algunos de los enfoques que se han examinado para la mejora del operador de crossover, respectivamente, para evitar sus efectos negativos. Recombinación de crías en (Tac94, Capítulo 5) por medio de la combinación de crías Tackett propone un método que en realidad no mejora el operador de crossover, pero reduce los efectos negativos. In nature, there are some species that have by large more descendants than the survival of the species would require. Some descendants die soon after the birth because of several mechanisms, for example, while fighting each other for nourishment. Hereby it is guaranteed that the parents invest the energy needed for the upbringing only in the fittest descendants. Tackett transfers this approach to GP. Instead of procreating only one or two descendants, a whole series of descendants is generated. The fitness values are calculated for this group called brood and the best one or two descen - dants are selected. The rest of the brood cancelled. In order to counteract to the increased calculation requirements of this method, Tackett proposes not to make the calculation for the brood on the basis of the complete training data, but only with a small part. He argues that it is legitimate to do so, because the goal is sorting out of the unfit individuals and not actually finding the best individual of the brood (cf. (Tac94, page 87)). Tackett reports that the expected improvement as compared to the GP without brood selection has actually occurred at the executed experiments. Apart from approaches for avoiding the harmful effects of crossover, there are numerous attempts to make the crossover operator more intelligent. Strong Context-Preserving Crossover In (Dh94), Dhaeseleer develops the strong context-preserving crossover (CPC) operator, that only allows crossover between nodes that are exactly at the same position of two par - ents. Dhaeseleer reports to have achieved improvements by mixing the nor - mal crossover and SCPC. The application of SCPC alone would cause prob - lems, because in that case the variety within the population would suffer. Dhaeseleer thinks that a certain degree of macromutation is required (cf. (Dh94, page 2)). Explicit Multiple Gene Systems In (Alt95), Altenberg presents a system where fitness components are influenced by a subset of available genes. Dur - ing the evolution it is tried periodically to add a new gene. However, this gene is integrated only if it leads to a fitness increase. During the evolution of the population, genes are exchanged between the individuals by means of crossover. The constructing selection with subsequent exchange of genes by crossover proposed by Altenberg (cf. (Alt95, page 39)) shows a strong sim - ilarity with the homologous biological crossover. Instead of permitting the destruction of the majority of the good building blocks by the macromutation of the crossover, in this model, the crossover is limited to genes consisting of one or several building blocks. Since there is no risk for the building blocks to be destroyed, it is supposed that bloat is no problem at this approach. Explicitly Defined Introns What belongs to the interesting measures against the macro-manipulation by the crossover operator is the approach explicitly defined introns (EDI). An integer value is stored between two nodes of a tree without any effect on calculation of the tree. The crossover operator is modi - fied so the probability of a crossover incident between two nodes is depending on the the value of the EDI between them. Just as the rest of the individual, the EDIs are developed evolutionarily In the course of the evolution. Hereby building blocks are forming, that are protected against a crossover by their linking EDIs. In (NFB95, page 16), Nordin et al. are making a series of tests concluding in the assumption that EDIs have an important role in finding indi - viduals of high fitness. As far as fitness, generalization and processing time are concerned, EDIs have achieved better results than individuals in tests without EDIs. GP 1-Point Crossover Operator In (PL98, page 19), Poli and Langdon pro - pose a 1-point crossover operator that considers structural similarities in the parent trees for the selection of an appropriate crossover point. Their experiments indicate point out that hereby the destructive influences of the crossover can be reduced in the course of the evolution. 2.1.9 Modularization In many program languages there is the possibility to combine parts of the program and to use these modules at another place. Modularization is used for the abstraction, the division of the problems into subordinate problems and the retrieval of the program code. But in the context of the problem with the macromutation by means of the crossover operator, modularization has an interesting role. Some approaches are using specific crossover operators that consider the modules and thus prevent the macromutation. Different authors have examined modularization in the GP. A choice of different techniques is presented in the following passages. Encapsulation The idea of encapsulation is described in (Koz92, pages 110 to 112). Hereby an asexual genetic operator is considered for selecting a function node of an individual and replacing it by a terminal node that includes the subtree of the selected function node. Now the generated terminal can also be applied in other individuals. The encapsulated subtree can no longer be improved or destroyed by the crossover operator. In case the replaced subtree contains a useful code, this could be an advantage. Module Acquisition Angeline and Pollack propose a technique called mod - ule acquisition (cf. (AP92, pages 2 to 4)) for generating reusable modules. To do so, a subtree for a determined depth is defined as module in a selected indi - vidual. The parts of the subtree under the module are considered as arguments of the module. Apart from the exclusive application within the individual, the module can be provided to the complete population by means of a function library. As long as one individual is using a module at least, it will remain in the library, otherwise it will be deleted. Exactly as being done at the encap - sulation, a defined module is not developed further at the module acquisition and it is protected against the macromutation. Automatically Defined Functions In (Koz92, page 534 following), Koza gives a description of automatically defined functions and a very detailed one in (Koz94, Chapter 4-16). In order to use ADFs in the GP, the program trees are divided into two parts: a branch selected for the calculation of the fitness and a branch containing the function definitions of the ADFs. Both branches take part in the evolution. Hereby the crossover operator has to con - sider specific characteristics of the branches and the relation between them. The definition of an ADF in the function definition branch of the program tree is made up of three parts: the function name, a list of arguments as well as a branch including the body of the function set. The function name of the ADF becomes a part of the function set of the branch, which is generating results. The variables defined in the argument list become a part of the terminal set of their ADF function body. The evolution exclusively is taking place in the func - tion body of the ADF and in the result-generating branch. Only this branch as well as the function body of the ADFs is generated randomly. Before the evolution can start, the number of the names of the ADF as well as the number and names of the function arguments has to be defined for every ADF. Abstraction In (Yu99a, Chapter 6,7), Yu presents an approach to use ab - stractions, based on the calculus, in the GP. Hereby every abstraction is considered as an independent module within the GP tree and protected as a unit in the course of the evolutionary process. These modules are develop - ing in a way similar to the rest of the GP tree. Crossover is only permitted between modules that have the same number and type of the input and out - put. Yu documents the success of this approach, e. gramo. in (Yu99b). One reason for this success could be found in the homologous crossover that conserves structure and function, in the context with the abstraction. 2.1.10 Further approaches for improvement Among others, further approaches for the extension of the standard GP are the following ones: Loops and Recursion Although loops and recursion have an enormous im - portance in the manual programming, their application is up against difficul - ties in the GP. Long loops, especially endless loops, can cause the abort of the evolution of a program. In (Kin93b, page 5), Kinnear describes a possible approach in the framework of the evolutionary development of a sorting al - gorithm: the applied loop can only receive the start and end index of a finitely great list as parameter. Strongly Typed Genetic Programming The extension of the traditional GP to the strongly typed GP (STGP) is introducing types for terminals and functions into the genetic programming (Mon93, page 7). This extension is particularly useful, because it reduces the search range of the evolutionary algorithm considerably. Functions are allocated to specific input and output types and can only combined with terminals of the appropriate type. Cultural GP The Cultural GP, described by Spector and Luke (SL96), is using an indexed memory with access for all individuals of the population over all generations. The memory is initialized at the start of the evolutionary devel - opment and is provided to the population as data storage and communication medium between the generations afterwards. The authors come to the con - clusion that the processing effort for the considered problems is reduced as compared to the standard GP by means of the shared memory. 2.2 Artificial Neural Networks In the context of the decision-making for financial transactions, there is a wide - spread use of artificial neural networks (NN). Their application ranges from trend prognostics systems, as described for example for the gold market in (MK, pages 2 to 7), over point prognostics systems, as proposed for example in (NM02, pages 501 to 511) for the currency market, to the development of automated trading systems, as described in (Ska01, pages 2 to 8). Because of the wide-spread use and the numerous successful applications, the principles of the NN are presented in the following passages in short. Artificial neural networks are motivated by the natural brains. Hereby it is not the biologically correct simulation of a brain that is in the foreground, but the simulation of the mathematically relevant elements on an abstract level. The neurons, the links between the neurons as well as the method that rules the training of the network are all essential parts that have to be defined for a simu - lation of a NN. These components and frequently applied network topologies are presented in the following. These explanations follow the description of Zell (Zel94, Chapter 5 to 8). 2.2.1 Components of neural networks Neurons The neurons are characterized by: - the activation status, that indicates the current degree of the activation of an neuron. - the threshold value, that is included in the activation function for the calculation of the next activation status. In many models it indicates the threshold of the strong activation of a neuron. In biological neurons this is the equivalent threshold that must be reached to make the neuron fire. - the activation function, that is calculating a new activation status on the basis of the current activation status, the input by other neurons as well as the threshold of the neuron. - the activation function, that is calculating an output value on the basis of the current activation of the neuron. Connection Network Due to the abstraction from the natural example, in the NN there is no simulation of the axons, dendrites and synapses found in the human brain, but the connection between pairs of neurons is reduced to one value, the connection weight. On the whole, the connection network often is represented by a matrix of connection weights. The strength of the connection between neurons is characterized by the value of the connection weight be - tween two neurons. Depending on the model, the weight may be in different value ranges. Apart from positive values of the weights, the value 0 stands for a not existing connection and negative values are used for retardant connec - tions that reduce the activation of the following neuron. 2.2. ARTIFICIAL NEURAL NETWORKS 17 During the simulation of a NN, the output values of all neurons that are con - nected to the considered neuron, is provided as input for it with the connec - tion weights. Most often, only the connection weights are changed during the learning phase. The acquired knowledge is distributed to the network of the connection weights and it is not possible without problems to deduce single statements. Some authors, like e. gramo. Gruau in (Gru94, page 8, page 22), state that even components of the neuron, such as the activation function or the threshold value, should be alterable. 2.2.2 Network topologies Very often NN are structured by in layers, with an input, and output and at least one intermediate layer. The communication with the environment is made by means of the input and output layer, whereas the information processing is taken place in the internal layers. At the topological organization of NN, the essential point is the distinction between networks with and without feedback. Feedback means that there are neurons having a path through the network that is leading back to the neuron. 2.2.3 Learning methods After having determined a specific network topology for a given problem, it is typical that the connection weights are initialized with random values. In this initial situation, the NN will find a satisfying solution only in rare cases. Thus it is necessary to change the connection weights for achieving a better solution of the problem. This operation is called training. There are different learning methods for performing the training. In the scientific literature, there are many different approaches for training an NN for the given task. The theoretically changeable components of a NN are the connection weights, threshold value, activation function, output function as well as the adding or deleting of neu - rons. Among the most comprehensive approaches including all these possible changes, there is e. gramo. the one of Gruau in (Gru94, Chapter 2-3). There geneti - cally developed programs are encoding the organization and the components of the NN. If such a program is applied to an initial neuron, the NN is created by the execution of the instructions of the program by and by. To the orders be - long instructions for the division of a neuron into two neurons, the deletion of neurons, creating and deleting of connections between neurons, the changing of connection weights and some more operations. Types of Learning Many applications are limited to exclusively training the connection weights of a given network topology. Hereby a distinction is made between different types of learning according to the provided training data: - During the supervised learning, input and output data are presented to the NN at the same time and the weights are changed by the learning method in a way to enable the network to make the association of these data sets automatically. The goal is the right classification of slightly changed input data, thus achieving a generalization by the NN. - At the reinforcement learning, only input data are provided to the NN and after the evaluation by the NN, the right or wrong classification by the network is announced. - The unsupervised learning is characterized by the fact that the learning is made by self-organization. The chosen learning method ensures the allo - cation to one class for similar input patterns that are represented by one or more neurons. At this type of learning, statistical properties of the in - put pattern are extracted and, on this basis, generalizing classes are built. Interesting works from this field are, among others, Learning-Vector - Quantisation (LVQ) or self-organized cards from Kohonen (cf. (Koh89, Chapter 5)) as well as the growing cell structures (Fri92), respectively the growing neural gas (Fri95) from Fritzke. Hebbs Learning Rule The principle of many learning rules was described in its first form by Donald O. Hebb in 1949 already and he gave his name to Hebbs learning rule: if a neuron receives an input by another neuron and if both of them are strongly activated at the same time, then the weight between the these neurons is increasing (cf. (Zel94, page 84)). The size of the weight change is called learning rate. It is either given as constant or is resulting from a function, which considers the fact that at the start of a learning operation a high learning rate is an advantage, however, the size of the changes should decrease, as the end of the training is reached. Hereby it is possible to bring about a convergence of the NN into an optimal status. Backpropagation Rule A wide-spread learning rule for supervised or sup - ported learning is the backpropagation rule (cf. (Zel94, pages 99 to 114)). It is a generalization of the so-called delta-learning rule that can only be applied to single-layer networks with linear activation functions. Networks with linear functions as activation function can only calculate linear functions. Multi-layer networks are more powerful than single-layer networks. Usually the back - propagation procedure, respectively one of its further developments, is ap - plied to them, for it is able to train networks with semi-linear activation func - tions and several layers. At the backpropagation procedure, after the alloca - tion of input and output data to the network, the prevailing error between the given output and the actual output is determined and sent backwards through the network with the connection weights, with changing the weights of the connections respectively depending on the learning rate in a way to reduce the error. 2.3 Trading Systems After the description of the principles of neural networks and evolutionary algorithms, the following passages will offer an introduction to the application area. At first there is a discussion of trading systems in general, then there is a view on how mechanical systems are structured in particular. After that, there is a discussion about the question concerning the determination of position sizes of a trading system, followed by a description of different measures for the comparison of trading systems. In the scientific literature, there are different opinions on the characteristics of a trading system. In the framework of this thesis, a trading system shall be defined as a set of rules that determines the circumstances that have a user of a trading system initiate specific actions on the capital market. If the user of the system has made a decision in favour of one trading system, the decision finding process is taken from him and he just has to execute the proposals of the trading system. If the user himself has to check the rules, then this is called a manual trading system, respectively he is called a discretionary trader. Apart from trading systems that offer more or less concrete proposals for trading, there can be found prognostics systems that try to predict, for example, the stock exchange rate at a certain moment in the future. Yet the user has to decide himself if and how he is going to act on the basis of this prognostic. The execution of the proposals of the trading system by the human being is subject to errors and takes a lot of time. For that reason, the emergence of computers with higher performance has led to a propagation of the trading by means of automated trading systems, the mechanical trading systems, that do not require any operations by the user. The user of an auto - mated trading system, the so-called systematic trader, just has to assume a superior supervising function. According to Vince, the application of a com - pletely automated trading system is even absolutely necessary, because other - wise it is difficult to determine whether the optimal position size is traded (cf. (Vin90, page 41, page 116)). In order to verify whether a mechanical trading system is functioning, a so-called back-testing is made. Thereby historical data are presented to the trading system and an evaluation is made on the basis of the decisions of the trading system to find out whether the real operation is possible. At the development of a trading system for a considered security, the ques - tion has to be answered, which size the position, that is held of this security, should have at any moment. In principle, the trading system is representing a function that offers, for example, positive values for a corresponding big posi - tion, negative values for a corresponding empty sold quantity of the security or zero for no position in this security. The problem is subdivided into sev - eral parts. Beside the selection of an appropriate security, there is the market timing, that indicates when a position shall be accepted or deleted and the position sizing, that indicates the size of the position to be accepted. Many authors merely try to optimize the market timing and leave the at least equally important position sizing almost completely aside (cf. (Tha99, page 6 follow - ing)). Doing so, as Vince is pointing out, it may easily happen that considerable losses are made, respectively hardly any returns are gained, because of a bad position sizing while having a good market timing. On the other hand, it is sufficient to have a market timing with a slightly positive expectation value, in order to enable considerable gains in the long run, if the position sizing is performed correctly. For that reason, the selection of the stock to be traded will not be considered in the following passages. 2.3.1 Tape Reader In his book (Wyc01, Chapter 4 to 12), published for the first time in 1919 and with a new edition in 2001, Wyckoff describes his method to make money as Tape Reader at the New York Stock Exchange. At that time, the actual ex - change rates and put/pull orders were transmitted to the dealers by means of so-called tickers and printed out on a tape. From this usage the designa - tion tick as expression for a single rate has remained until today. Tape readers made their trading decisions exclusively on the basis of the exchange rates that entered on their tape constantly and at times they have been very successful with it. As Lefevre reports in (LeF23, Chapter 2), the at that time very well - known speculator Livermore also belonged to the successful users of the tape reading. According to (Wyc01, page 9), messages that were relevant for the exchange rates, could be read on the tape of the ticker minutes, hours and days before appearing in the press. Wyckoff explanation for this is the action of better in - formed investors, before a message was given to the public. The necessary re - quirement was that the tape reader knew how to interpret the data of the tape correctly. On the basis of a series of quotations, the tape readers recognized a leading trend and followed it. To do so, some experience was necessary as well as the permanent observation of the market, i. mi. a multitude of different papers of stocks at the same time. It cannot be said clearly which processes exactly are going on in the brains of a tape reader and lead up to put or pull decisions. It is hard to extract rules from a neural network without simulating the whole system, for the information is distributed over the complete network. Even if the tape reader tried to repre - sent the guiding rules by himself with all integrity, it is easy to figure out that someone who makes his decisions by the rules alone may decide in a different way as the tape reader himself. Unlike the tape readers, who had to perform the complete information pro - cessing of the stock exchange rates by head, todays traders can dispose of computer-based preprocessing of the market data. There is a wide-spread use of different forms of rate/time diagrams, called charts, that allow the recogni - tion of trends or resistance and support ranges of a price movement. Very often one finds an integration of different time series that are deduced from the quo - tation data, so-called technical indicators, in these charts. Apart from these time series deduced from the rates investors are using a series of additional data, used for recognizing the current market opinion in any way whatsoever. In the following chapters, only the technical indicators shall be considered that are deduced from the technical indicators directly. The charts are a graphic tool and, as the tape readers have shown, the additional market data are not necessarily required, for the essential information is already included in the exchange rates. 2.3.2 Market timing Market timing stands for the finding a decision, whether a position in a stock or paper is accepted or deleted at a certain moment. In addition to that, it is possible to determine targeted quotations for taking profit (Take Profit) or for limiting losses (Stoploss) by means of different indicators. Take profit or stop loss are often given along with the order to open the position. The tape readers could only dispose of the mere information of the prices that were the basis of their decisions. However, traders have started very early with using charts as a simple illustration of the price development. Based on the resistances, supports, trends and different formations of the price develop - ment that could be recognized in the charts, Dow has developed the so-called Dow theory that is discussed, for example, in (Mur99, pages 23 to 33). This kind of the (chart) technical analysis of a stock or paper is still in use today. In addition to that, many technical indicators have been developed, that are meant to permit a support or even a direct deduction of trading signals. Technical Indicators Technical indicators are a preprocessing of the mere price information. Each indicator is based on a particular view and assump - tions about the market that were determined by the developer of the indicator. An overview of a multitude of various indicators can be found, for example, in (Mue93), respectively (Flo00). As for the technical indicators, Floret makes a distinction between trend followers, momentum oscillators, trend determina - tion indicators as well as volatility indicators and for these classes he describes the historical development and differences between the indicators. The com - mon point of all indicators is the fact that they are representing certain statisti - cal properties of the historical price data. The authors of the indicators allocate instructions to specific constellations of the indicator progress. The idea is that the participants behaviour on the market is similar in comparison to similar situations and that there is a collection of these patterns by means of the in - dicator constellation. Apart from profitable signals of an indicator, there are times when the indicator is generating default signals. For example, this could occur when a market passes from a trend to a lateral movement. This is why a permanent check of the applied indicators is indispensable. In the following passages, the function of a technical indicator is shown on the basis of the structure of moving averages and the trend follower MACD, built up of these averages, is described as example. Details Pages 96 Year 2007 ISBN (eBook) 9783638007801 ISBN (Book) 9783638913829 File size 1.5 MB Language English Catalog Number v81369 Institution / College University of Hamburg ndash Department Informatik Grade 1,7 Tags Development Trading Systems Genetic Programming Case StudyTrading Systems: Constructing A System 13 So far, we have discussed the basic components of trading systems, the criteria they have to meet, and some of the many empirical decisions that a system designer must make. En esta sección, examinaremos el proceso de construcción de un sistema de comercio, las consideraciones que deben hacerse y algunos puntos clave a recordar. La construcción del sistema de seis pasos 1. Configuración - Para comenzar a construir un sistema de comercio necesitará varias cosas: Datos - Debido a que el diseñador del sistema debe utilizar un extenso backtesting. Historia de precios pasado es esencial para la construcción de un sistema de comercio. Estos datos pueden integrarse en el software de desarrollo de sistemas comerciales o como un feed de datos independiente. Datos en vivo a menudo se proporciona por una cuota mensual, mientras que los datos de edad se puede obtener de forma gratuita. Software - Aunque es posible desarrollar un sistema comercial sin software, es muy poco práctico. Desde finales de los 90, el software se ha convertido en una parte integral de la construcción de sistemas comerciales. Algunas características comunes permiten que el comerciante haga lo siguiente: Coloque los oficios automáticamente - esto a menudo requiere permiso del administrador final porque una conexión constante debe estar en su lugar entre su software y la correduría. Los negocios deben ser ejecutados inmediatamente ya precios exactos para asegurar la conformidad. Para que el software haga operaciones para usted, todo lo que necesita hacer es introducir el número de cuenta y la contraseña, y todo lo demás se hace automáticamente. Tenga en cuenta que el uso de esta función es estrictamente opcional. Código de un sistema de comercio - Esta característica de software implementa un lenguaje de programación propietario que le permite crear reglas fácilmente. Por ejemplo, MetaTrader utiliza MQL (MetaQuotes Language). Heres un ejemplo de su código para vender si el margen libre es inferior a 5.000: Si FreeMargin lt 5000, a continuación, salir A menudo, sólo leer el manual y la experimentación debe permitirle a recoger en los conceptos básicos del idioma de su software utiliza. Backtest su estrategia - El desarrollo del sistema sin backtesting es como jugar tenis sin una raqueta. Software de desarrollo del sistema a menudo contiene una simple aplicación de backtesting que le permite definir un origen de datos, información de la cuenta de entrada, y backtest para cualquier cantidad de tiempo con el clic de un ratón. Aquí hay un ejemplo de MetaTrader: Después de ejecutar la prueba de retroceso, se genera un informe que describe los detalles de los resultados. Este informe normalmente incluye ganancias, número de transacciones sin éxito, días consecutivos abajo, número de operaciones y muchas otras cosas que pueden ser útiles cuando se trata de determinar cómo solucionar o mejorar el sistema. Por último, el software suele crear un gráfico que muestra el crecimiento de la inversión a lo largo del período de tiempo probado. 2. Diseño - El diseño es el concepto detrás de su sistema, la forma en que los parámetros se utilizan para generar una ganancia o pérdida. Estas reglas y parámetros se implementan programándolos. A veces, esta programación se puede hacer automáticamente a través de una interfaz gráfica de usuario. Esto le permite crear reglas sin aprender un lenguaje de programación. A continuación, se muestra un ejemplo de un sistema de cross-over de media móvil: Si SMA (20) CrossOver EMA (13), a continuación, introduzca Si SMA (20) CrossUnder EMA (13) Generar entradas y salidas en los puntos cuando las reglas son aplicables. Esto es lo que parece la interfaz de diseño en MetaTrader: El sistema se crea simplemente escribiendo las reglas en la ventana y guardándolas. Las referencias para las diferentes funciones disponibles (por ejemplo, osciladores y similares) se pueden encontrar haciendo clic en el icono del libro. La mayoría del software tendrá una referencia similar disponible ya sea dentro del propio programa o en su sitio web. Después de crear las reglas deseadas y codificar el sistema, simplemente guarde el archivo. A continuación, puede ponerlo en uso seleccionándolo en la pantalla principal. 3. Toma de decisiones - Hay muchas decisiones que se deben tomar en este momento: Qué mercado quiero cambiar en 13 Qué período de tiempo debo usar 13 Qué serie de precios debo utilizar 13 Qué subconjunto de acciones que debo utilizar para las pruebas Mantener en Mente que los sistemas de comercio debe obtener constantemente un beneficio en muchos mercados. Al personalizar el período de tiempo y la serie de precios demasiado, puede manchar los resultados y producir resultados inusuales. Práctica - Backtesting y el comercio de papel son esenciales para el desarrollo exitoso de un sistema de comercio: Ejecutar varios backtests en diferentes períodos de tiempo y asegúrese de que los resultados son coherentes y satisfactorios. El comercio de papel del sistema (el uso de dinero imaginario, pero registrar los oficios y los resultados), y de nuevo, buscar la rentabilidad consistente. Comprobar con cuidado para detectar errores en el programa, o oficios no deseados. Estos pueden ser el resultado de una programación defectuosa o la imposibilidad de prever ciertas circunstancias que tienen repercusiones no deseadas. 5. Repetir - Repetición es necesario. Sigue trabajando en el sistema hasta que puedas obtener un beneficio en la mayoría de los mercados y condiciones. Siempre hay eventos imprevistos que ocurren tan pronto como un sistema se pone en marcha. Estos son algunos factores que a menudo causan resultados sesgados: Costos de transacción - Asegúrese de que está utilizando la comisión real. Y algunos adicionales para contabilizar los rellenos inexactos (diferencia entre los precios de oferta y de venta). En otras palabras, evite el deslizamiento (Para revisar lo que es y cómo ocurre, consulte la sección anterior de este tutorial.) Vigilancia - No ignore la pérdida de operaciones mantener un ojo en todos los oficios. Optimización - No sobre-optimizar el sistema. En otras palabras, no adaptar el sistema a un entorno de mercado muy específico tratar de ser rentable en lo más amplio de un entorno como sea posible. Risco - Nunca ignorar o olvidar el riesgo. Es muy importante tener formas de limitar las pérdidas (también conocidas como stop-loss), y maneras de bloquear los beneficios (tomar ganancias). 6. Comercio - Pruébelo, pero espere resultados no deseados. Asegúrese de utilizar la negociación no automatizada hasta que esté seguro del rendimiento y la consistencia de los sistemas. Toma mucho tiempo desarrollar un sistema comercial exitoso, y antes de que lo perfeccione, puede que tenga que soportar algunas pérdidas comerciales en vivo para detectar fallas: la prueba de espalda no puede representar perfectamente las condiciones del mercado en vivo y el comercio de papel puede ser inexacto. Si su sistema pierde dinero, vuelva a la mesa de dibujo y vea dónde falló (consulte el paso 5). Conclusión Estos seis pasos le dan una visión general de todo el proceso de construcción de un sistema comercial. En la siguiente sección, vamos a aprovechar este conocimiento y tomar una mirada más profunda en la solución de problemas y modificaciones. Trading Systems: Troubleshooting And Optimization Subscribe to News To Use for the latest insights and analysis

No comments:

Post a Comment