Friday 10 November 2017

Diseño Del Sistema De Trading


Algorithmic Trading System Architecture Anteriormente en este blog he escrito sobre la arquitectura conceptual de un sistema de negociación algorítmica inteligente, así como los requisitos funcionales y no funcionales de un sistema de trading algorítmico de producción. Desde entonces he diseñado una arquitectura de sistema que creo que podría satisfacer los requisitos arquitectónicos. En este post describiré la arquitectura siguiendo las directrices de los estándares ISO / IEC / IEEE 42010 y el estándar de descripción de arquitectura de ingeniería de software. De acuerdo con esta norma, una descripción de la arquitectura debe: • Contener múltiples vistas estandarizadas de arquitectura (por ejemplo, en UML) y • Mantener la trazabilidad entre las decisiones de diseño y los requisitos arquitectónicos Definición de la arquitectura de software Todavía no hay consenso sobre lo que es una arquitectura de sistemas. En el contexto de este artículo, se define como la infraestructura dentro de la cual se pueden especificar, desplegar y ejecutar componentes de aplicación que satisfacen requisitos funcionales. Los requisitos funcionales son las funciones esperadas del sistema y sus componentes. Los requisitos no funcionales son medidas a través de las cuales se puede medir la calidad del sistema. Un sistema que satisface plenamente sus requisitos funcionales puede todavía no satisfacer las expectativas si los requisitos no funcionales se dejan insatisfechos. Para ilustrar este concepto, considere el siguiente escenario: un sistema de negociación algorítmico que acaba de adquirir / construye hace excelentes decisiones comerciales, pero es completamente inoperable con las organizaciones de gestión de riesgos y sistemas de contabilidad. Este sistema satisface sus expectativas Arquitectura Conceptual Una visión conceptual describe conceptos y mecanismos de alto nivel que existen en el sistema en el nivel más alto de granularidad. A este nivel, el sistema de comercio algorítmico sigue una arquitectura impulsada por eventos (EDA) dividida en cuatro capas, y dos aspectos arquitectónicos. Para cada capa y aspecto se utilizan arquitecturas y patrones de referencia. Los patrones arquitectónicos son estructuras probadas y genéricas para lograr requisitos específicos. Los aspectos arquitectónicos son preocupaciones transversales que abarcan múltiples componentes. Arquitectura impulsada por eventos: una arquitectura que produce, detecta, consume y reacciona ante eventos. Los eventos incluyen movimientos del mercado en tiempo real, eventos o tendencias complejas y eventos comerciales, p. Presentar una orden. Este diagrama ilustra la arquitectura conceptual del sistema de comercio algorítmico. Arquitectura de referencia Para utilizar una analogía, una arquitectura de referencia es similar a los planos para una pared portante. Esta impresión azul puede ser reutilizada para diseños de edificios múltiples, independientemente de qué edificio se está construyendo, ya que satisface un conjunto de requisitos comunes. De manera similar, una arquitectura de referencia define una plantilla que contiene estructuras genéricas y mecanismos que pueden usarse para construir una arquitectura de software concreta que satisface requisitos específicos. La arquitectura para el sistema de comercio algorítmico utiliza una arquitectura basada en el espacio (SBA) y un controlador de vista de modelo (MVC) como referencias. También se utilizan buenas prácticas, como el almacén de datos operativos (ODS), el patrón de transformación y carga de extracciones (ETL) y un almacén de datos (DW). Controlador de vista de modelo: un patrón que separa la representación de la información de la interacción del usuario con ella. Arquitectura basada en el espacio: especifica una infraestructura en la que las unidades de procesamiento ligeramente acopladas interactúan entre sí a través de una memoria asociativa compartida llamada espacio (se muestra a continuación). Vista estructural La vista estructural de una arquitectura muestra los componentes y subcomponentes del sistema de negociación algorítmica. También muestra cómo se implementan estos componentes en la infraestructura física. Los diagramas UML utilizados en esta vista incluyen diagramas de componentes y diagramas de implementación. A continuación se muestra la galería de los diagramas de despliegue del sistema de negociación algorítmica global y las unidades de procesamiento en la arquitectura de referencia SBA, así como diagramas de componentes relacionados para cada una de las capas. Tácticas arquitectónicas Según el instituto de ingeniería de software una táctica arquitectónica es un medio de satisfacer un requisito de calidad mediante la manipulación de algunos aspectos de un modelo de atributos de calidad a través de decisiones de diseño arquitectónico. Un ejemplo sencillo utilizado en la arquitectura del sistema de negociación algorítmica es la manipulación de un almacén de datos operativos (ODS) con un componente de consulta continua. Este componente analizaría continuamente las ODS para identificar y extraer eventos complejos. Las siguientes tácticas se utilizan en la arquitectura: El patrón disruptor en el evento y las colas de orden Memoria compartida para el evento y las colas de orden Lenguaje de consulta continua (CQL) en el ODS Filtrado de datos con el patrón de diseño del filtro en los datos entrantes Algoritmos de evitación de congestión en todos (AQM) y notificación de congestión explícita Recursos de computación de productos básicos con capacidad de actualización (escalable) Redundancia activa para todos los puntos de falla individuales Indexación y estructuras de persistencia optimizadas en el ODS Programar scripts regulares de copia de seguridad y limpieza de datos ODS Historial de transacciones en todas las bases de datos Checksums para todos los pedidos para detectar fallos Anotar eventos con marcas de tiempo para omitir eventos antiguos Reglas de validación de orden, por ejemplo Cantidades máximas de comercio Componentes automatizados de comerciantes utilizan una base de datos en memoria para el análisis Autenticación de dos etapas para interfaces de usuario que se conectan a los ATs Cifrado en interfaces de usuario y conexiones a los ATs Patrón de diseño de observador para MVC para gestionar vistas La lista anterior son sólo unos pocos diseño Decisiones que identifiqué durante el diseño de la arquitectura. No es una lista completa de tácticas. A medida que se está desarrollando el sistema, se deben emplear tácticas adicionales a través de múltiples niveles de granularidad para satisfacer requisitos funcionales y no funcionales. A continuación se muestran tres diagramas que describen el patrón de diseño del disruptor, el patrón de diseño del filtro y el componente de consulta continua. Vista de Comportamiento Esta vista de una arquitectura muestra cómo los componentes y las capas deben interactuar entre sí. Esto es útil cuando se crean escenarios para probar diseños de arquitectura y para entender el sistema de extremo a extremo. Esta vista consiste en diagramas de secuencia y diagramas de actividad. Los diagramas de actividad que muestran el proceso interno de los sistemas de negociación algorítmica y cómo se supone que los comerciantes interactúan con el sistema de comercio algorítmico se muestran a continuación. Tecnologías y marcos El paso final en el diseño de una arquitectura de software es identificar posibles tecnologías y marcos que podrían ser utilizados para realizar la arquitectura. Como principio general es mejor aprovechar las tecnologías existentes, siempre que satisfagan adecuadamente los requisitos tanto funcionales como no funcionales. Un marco es una arquitectura de referencia realizada, p. JBoss es un framework que realiza la arquitectura de referencia JEE. Las siguientes tecnologías y marcos son interesantes y deben ser considerados al implementar un sistema de trading algorítmico: CUDA - NVidia tiene una serie de productos que soportan el modelado de finanzas computacionales de alto rendimiento. Uno puede lograr hasta 50x mejoras de rendimiento en la ejecución de simulaciones de Monte Carlo en la GPU en lugar de la CPU. Apache River - River es un kit de herramientas usado para desarrollar sistemas distribuidos. Se ha utilizado como un marco para la construcción de aplicaciones basadas en el patrón SBA Apache Hadoop - en el caso de que el registro generalizado es un requisito, entonces el uso de Hadoop ofrece una solución interesante para el problema de los grandes datos. Hadoop se puede implementar en un entorno de clúster que admita tecnologías CUDA. AlgoTrader - una plataforma de trading algorítmica de código abierto. AlgoTrader podría potencialmente ser desplegado en el lugar de los componentes automatizados del comerciante. FIX Engine - una aplicación independiente que admite los protocolos de intercambio de información financiera (FIX) incluyendo FIX, FAST y FIXatdl. Aunque no es una tecnología o un marco, los componentes deben ser construidos con una interfaz de programación de aplicaciones (API) para mejorar la interoperabilidad del sistema y sus componentes. Conclusión La arquitectura propuesta ha sido diseñada para satisfacer requisitos muy genéricos identificados para los sistemas de negociación algorítmica. En general, los sistemas de negociación algorítmica se complican por tres factores que varían con cada implementación: Dependencias de la empresa externa y sistemas de intercambio Desafiar los requisitos no funcionales y Evolucionar restricciones arquitectónicas Por lo tanto, la arquitectura de software propuesta debe adaptarse caso por caso para Para satisfacer requisitos organizativos y normativos específicos, así como para superar las limitaciones regionales. La arquitectura del sistema de trading algorítmico debe ser visto como un punto de referencia para individuos y organizaciones que desean diseñar sus propios sistemas de trading algorítmicos. Para obtener una copia completa y las fuentes utilizadas, descargue una copia de mi informe. Gracias. TagsHigh frecuencia sistema de comercio de diseño y gestión de procesos Alta frecuencia de diseño de sistemas de comercio y gestión de procesos Asesor: Roy E. Welsch. Departamento: Programa de Diseño y Gestión de Sistemas. Las empresas comerciales hoy en día son muy dependientes de la minería de datos, modelado por computadora y desarrollo de software. Los analistas financieros realizan muchas tareas similares a las del software y las industrias manufactureras. Sin embargo, la industria financiera aún no ha adoptado completamente los sistemas de ingeniería de sistemas de alto estándar y los enfoques de gestión de procesos que han tenido éxito en las industrias de software y manufactura. Muchas de las metodologías tradicionales de diseño de productos, control de calidad, innovación sistemática y mejora continua que se encuentran en las disciplinas de ingeniería pueden aplicarse al campo de las finanzas. Esta tesis muestra cómo los conocimientos adquiridos en las disciplinas de ingeniería pueden mejorar el diseño y la gestión de procesos de los sistemas de negociación de alta frecuencia. Los sistemas de negociación de alta frecuencia se basan en el cálculo. Estos sistemas son sistemas de software automáticos o semiautomáticos que son inherentemente complejos y requieren un alto grado de precisión de diseño. El diseño de un sistema de comercio de alta frecuencia vincula múltiples campos, incluyendo finanzas cuantitativas, diseño de sistemas e ingeniería de software. En el sector financiero, donde las teorías matemáticas y los modelos comerciales son relativamente bien investigados, la capacidad de implementar estos diseños en las prácticas comerciales reales es uno de los elementos clave de la competitividad de las empresas de inversión. La capacidad de convertir ideas de inversión en sistemas de negociación de alto rendimiento de manera eficaz y eficiente puede dar a una empresa de inversión una gran ventaja competitiva (cont.) Esta tesis proporciona un estudio detallado compuesto de alta frecuencia sistema de comercio de diseño, Para el desarrollo del sistema. Se hace especial hincapié en el backtesting y la optimización, que se consideran las partes más importantes en la construcción de un sistema comercial. Esta investigación construye modelos de ingeniería de sistemas que guían el proceso de desarrollo. También utiliza sistemas de comercio experimental para verificar y validar los principios tratados en esta tesis. Finalmente, esta tesis concluye que los principios y marcos de ingeniería de sistemas pueden ser la clave del éxito para la implementación de sistemas de negociación de alta frecuencia o de inversión cuantitativa. Tesis (S. M.) - Instituto de Tecnología de Massachusetts, Diseño de Sistemas y Programa de Gestión, 2009. Catalogado a partir de la versión en PDF de la tesis. Incluye referencias bibliográficas (páginas 78-79). Palabras clave: Programa de Diseño y Gestión de Sistemas. Navegar Mi Cuenta Sistemas de Navegación Codificación: Diseño del Sistema El primer paso al codificar cualquier aplicación es la fase de diseño. Si la codificación de una aplicación de software o un sistema de comercio, el diseño cuidadoso y la planificación le ayudará a terminar en un corto período de tiempo con menos errores. Estaremos usando un proceso simple de tres pasos para diseñar nuestro sistema comercial. Paso 1: Crear sus reglas del sistema de comercio El primer paso al diseñar un sistema de comercio es simplemente llegar con las reglas por las que su sistema funcionará. Debe haber cuatro reglas básicas para cada sistema de comercio: Comprar - Identificar cuándo desea comprar una posición. 13 Vender - Identifique cuándo desea vender una posición. 13 Detener - Identifique cuándo desea reducir sus pérdidas. 13 Objetivo: identifique cuándo desea registrar una ganancia. Así, por ejemplo: Comprar - Cuando el promedio móvil de 30 días (MA) cruza por encima de los 60 días MA 13 Sell - Cuando el MA de 30 días cruza por debajo de los 60 días MA 13 Stop - Pérdida máxima de 10 unidades 13 Target - Objetivo de 10 unidades Este sistema de ejemplo comprará y venderá basado en los promedios móviles de 30 y 60 días y automáticamente registrará ganancias después de un beneficio de 10 unidades o vendrá a pérdida después de un movimiento de 10 unidades en la dirección opuesta. Paso 2: Identifique los componentes de cada regla Ahora que tenemos nuestras reglas abajo, necesitamos identificar los componentes implicados en cada regla. Cada componente debe contener dos elementos: El indicador o estudio utilizado 13 Los ajustes para el indicador o estudio Estos componentes deben ser construidos escribiendo el nombre abreviado para el estudio, seguido de los ajustes entre paréntesis. Estos ajustes entre paréntesis se denominan parámetros del indicador o del estudio. De vez en cuando, un estudio puede tener múltiples parámetros, en cuyo caso simplemente los separa con comas. Veamos algunos ejemplos: MA (25) - Promedio móvil de 25 días 13 RSI (25) - Índice de fuerza relativa de 25 días 13 MACD (Close (0), 5,5) - Conjunto de divergencia de convergencia media móvil basado en el cierre de hoy, con una duración rápida de cinco días y una duración lenta de cinco días. Si no está seguro de cuántos parámetros requiere un determinado componente, Usted puede simplemente consultar su documentación de los programas comerciales, que enumera estos componentes junto con los valores que necesitan ser rellenados. Por ejemplo, podemos ver que Tradecision nos dice que necesitamos tres parámetros con MACD: Por lo tanto, para el ejemplo mencionado en el paso Una, usaríamos: MA (30) - Significado media móvil de 30 días 13 MA (60) - Significado Promedio móvil de 60 días Paso 3: Añadiendo acción Ahora agregaremos acciones a nuestras reglas. Cada acción se adhiere al siguiente formato básico: IF Condición WHILE Condición THEN Acción Normalmente, la condición consistirá en los componentes y parámetros creados anteriormente, mientras que la acción consistirá en comprar o vender. Las condiciones también pueden consistir en inglés simple si no hay ningún componente presente. Tenga en cuenta que el componente while es opcional. Estos son algunos ejemplos para ayudar a ilustrar este punto: IF MA (30) Cruces por encima de MA (60) THEN Comprar 13 IF MA (30) Cruces por debajo de MA (60) WHILE Volumen (20.000) THEN Vender 13 IF EMA (25) Por lo tanto, para el ejemplo que hemos estado usando, simplemente clasifique: IF MA (30) Cruces por encima de MA (60) THEN Buy 13 IF MA (20) 30) Cruces por debajo de MA (60) ENTONCES Vender 13 SI nuestro comercio tiene 10 unidades de ganancia A continuación Vender 13 Si nuestro comercio tiene 10 unidades de pérdida A continuación Vender lo siguiente Siguiente, así echar un vistazo a la conversión de estas reglas en un código que su computadora Puede entender la codificación de los sistemas de comercio: la etapa de codificación Suscríbase a las noticias para utilizar para obtener las últimas ideas y análisis

No comments:

Post a Comment