Thursday 28 December 2017

High frequency trading systems architecture


Negociação de alta freqüência - HFT O que é negociação de alta freqüência - HFT A negociação de alta freqüência (HFT) é uma plataforma de negociação de programa que usa computadores poderosos para transacionar um grande número de ordens em velocidades muito rápidas. Utiliza algoritmos complexos para analisar múltiplos mercados e executar pedidos com base nas condições do mercado. Normalmente, os comerciantes com as velocidades de execução mais rápidas são mais rentáveis ​​do que os comerciantes com velocidades de execução mais lentas. BREAKING DOWN Negociação de alta freqüência - HFT O comércio de alta freqüência tornou-se popular quando os intercâmbios começaram a oferecer incentivos para que as empresas adicionassem liquidez ao mercado. Por exemplo, a Bolsa de Valores de Nova York (NYSE) tem um grupo de provedores de liquidez chamado Provedores de Liquidez Suplementar (SLPs) que tentam adicionar concorrência e liquidez às cotações existentes na bolsa. Como incentivo para as empresas, a NYSE paga uma taxa ou desconto por fornecer essa liquidez. Em julho de 2017, o desconto médio do SLP foi de 0,0019 para os títulos cotados na NYSE e na NYSE MKT na NYSE. Com milhões de transações por dia, isso resulta em uma grande quantidade de lucros. O SLP foi introduzido após o colapso do Lehman Brothers em 2008, quando a liquidez era uma grande preocupação para os investidores. Benefícios do HFT O principal benefício do HFT é que ele melhorou a liquidez do mercado e removeu spreads bid-ask que anteriormente teria sido muito pequeno. Isso foi testado adicionando taxas sobre HFT, e como resultado, spreads bid-ask aumentou. Um estudo avaliou como os spreads canadenses bid-ask mudaram quando o governo introduziu taxas sobre HFT, e verificou-se que os spreads de oferta e demanda aumentaram em 9. Críticas de HFT HFT é controversa e tem recebido algumas duras críticas. Ele substituiu uma grande quantidade de corretores e usa modelos matemáticos e algoritmos para tomar decisões, tomando a decisão humana e interação fora da equação. Decisões acontecem em milissegundos, e isso poderia resultar em grandes movimentos do mercado sem razão. Como exemplo, em 6 de maio de 2018, a Dow Jones Industrial Average (DJIA) sofreu sua maior queda intraday ponto nunca, declinando 1.000 pontos e caindo 10 em apenas 20 minutos antes de subir novamente. Uma investigação do governo culpou uma ordem maciça que desencadeou um sell-off para o acidente. Uma crítica adicional da HFT é que permite que as grandes empresas lucrem às custas dos pequenos, ou dos investidores institucionais e de varejo. Outra queixa importante sobre HFT é a liquidez fornecida pela HFT é a liquidez fantasma, o que significa que fornece liquidez que está disponível para o mercado um segundo e passou o próximo, impedindo os comerciantes de realmente ser capaz de negociar esta liquidez. Gestão Alta freqüência sistema de comércio design e gestão de processos Consultor: Roy E. Welsch. Departamento: Programa de Design e Gestão de Sistemas. As empresas comerciais hoje em dia são altamente dependentes de mineração de dados, modelagem de computador e desenvolvimento de software. Os analistas financeiros executam muitas tarefas semelhantes às do software e das indústrias transformadoras. No entanto, o setor financeiro ainda não adotou completamente padrões de engenharia de sistemas de alto padrão e abordagens de gerenciamento de processos que tiveram êxito nas indústrias de software e manufatura. Muitas das metodologias tradicionais para o projeto do produto, o controle de qualidade, a inovação sistemática, ea melhoria contínua encontrada nas disciplinas da engenharia podem ser aplicadas ao campo das finanças. Esta tese mostra como os conhecimentos adquiridos a partir de disciplinas de engenharia podem melhorar a concepção e gestão de processos de sistemas de negociação de alta frequência. Sistemas de negociação de alta freqüência são baseados em computação. Estes sistemas são sistemas de software automáticos ou semi-automáticos que são inerentemente complexos e requerem um alto grau de precisão de projeto. O design de um sistema de negociação de alta freqüência vincula vários campos, incluindo finanças quantitativas, design de sistemas e engenharia de software. No setor financeiro, onde teorias matemáticas e modelos de negociação são relativamente bem pesquisados, a capacidade de implementar esses projetos em práticas comerciais reais é um dos elementos-chave da competitividade das empresas de investimento. A capacidade de converter idéias de investimento em sistemas de negociação de alto desempenho de forma eficaz e eficiente pode dar uma empresa de investimento uma vantagem competitiva enorme. (Cont.) Esta tese fornece um estudo detalhado composto de alta freqüência sistema de comércio design, modelagem de sistemas e princípios e gestão de processos Para o desenvolvimento do sistema. É dada especial ênfase ao backtesting e otimização, que são considerados as partes mais importantes na construção de um sistema de comércio. Esta pesquisa constrói modelos de engenharia de sistemas que orientam o processo de desenvolvimento. Também utiliza sistemas de negociação experimental para verificar e validar os princípios abordados nesta tese. Finalmente, esta tese conclui que os princípios e estruturas de engenharia de sistemas podem ser a chave para o sucesso na implementação de sistemas de negociação de alta freqüência ou de investimento quantitativo. Tese (S. M.) - Massachusetts Institute of Technology, Programa de Design e Gestão de Sistemas, 2009. Catalogado a partir da versão em PDF da tese. Inclui referências bibliográficas (p.78-79). Palavras-chave: Projeto de Sistema e Programa de Gestão. Minha ContaAlgorithmic Trading System Architecture Anteriormente neste blog eu escrevi sobre a arquitetura conceitual de um sistema de negociação algorítmica inteligente, bem como os requisitos funcionais e não funcionais de um sistema de negociação algorítmica de produção. Desde então, eu tenho projetado uma arquitetura de sistema que eu acredito que poderia satisfazer esses requisitos arquitetônicos. Neste post vou descrever a arquitetura seguindo as diretrizes da ISOIECIEEE 42018 sistemas e arquitetura de engenharia de software descrição padrão. De acordo com este padrão, uma descrição de arquitetura deve: Conter várias visualizações arquitetônicas padronizadas (por exemplo, em UML) e Manter a rastreabilidade entre decisões de projeto e requisitos arquitetônicos Definição de arquitetura de software Ainda não há consenso sobre o que é uma arquitetura de sistemas. No contexto deste artigo, ele é definido como a infra-estrutura dentro da qual componentes de aplicativo que satisfazem requisitos funcionais podem ser especificados, implantados e executados. Os requisitos funcionais são as funções esperadas do sistema e seus componentes. Os requisitos não funcionais são medidas através das quais a qualidade do sistema pode ser medida. Um sistema que satisfaça plenamente os seus requisitos funcionais pode ainda não satisfazer as expectativas se os requisitos não funcionais forem deixados insatisfeitos. Para ilustrar este conceito, considere o seguinte cenário: um sistema de negociação algorítmica que você acabou de comprar construído faz excelentes decisões comerciais, mas é completamente inoperável com as organizações de gestão de risco e sistemas de contabilidade. Este sistema atenderia às suas expectativas Arquitetura Conceitual Uma visão conceitual descreve conceitos e mecanismos de alto nível que existem no sistema no nível mais alto de granularidade. Nesse nível, o sistema de negociação algorítmica segue uma arquitetura orientada a eventos (EDA) dividida em quatro camadas e dois aspectos arquitetônicos. Para cada camada e aspecto, são usadas arquiteturas e padrões de referência. Os padrões arquitetônicos são estruturas comprovadas e genéricas para a obtenção de requisitos específicos. Os aspectos arquitetônicos são preocupações transversais que abrangem múltiplos componentes. Arquitetura de eventos - uma arquitetura que produz, detecta, consome e reage a eventos. Os eventos incluem movimentos de mercado em tempo real, eventos ou tendências complexas e eventos comerciais, por ex. Submeter um pedido. Este diagrama ilustra a arquitetura conceitual do sistema de negociação algorítmica Arquiteturas de Referência Para usar uma analogia, uma arquitetura de referência é semelhante aos planos para uma parede de suporte de carga. Este blue-print pode ser reutilizado para vários projetos de construção, independentemente de qual edifício está sendo construído, pois satisfaz um conjunto de requisitos comuns. Da mesma forma, uma arquitetura de referência define um modelo contendo estruturas genéricas e mecanismos que podem ser usados ​​para construir uma arquitetura de software concreta que satisfaça requisitos específicos. A arquitetura do sistema de negociação algorítmica utiliza uma arquitetura baseada em espaço (SBA) e um controlador de exibição de modelo (MVC) como referências. Também são usadas boas práticas, como o armazenamento de dados operacionais (ODS), o padrão de transformação e carga de extrato (ETL) e um data warehouse (DW). Model view controller - um padrão que separa a representação da informação da interação do usuário com ela. Arquitetura baseada em espaço - especifica uma infra-estrutura onde unidades de processamento ligeiramente acopladas interagem uns com os outros através de uma memória associativa compartilhada chamada espaço (mostrado abaixo). Visão Estrutural A visão estrutural de uma arquitetura mostra os componentes e sub-componentes do sistema de negociação algorítmica. Ele também mostra como esses componentes são implantados em infra-estrutura física. Os diagramas UML usados ​​nesta visão incluem diagramas de componentes e diagramas de implantação. Abaixo está uma galeria dos diagramas de implantação do sistema de negociação algorítmica global e as unidades de processamento na arquitetura de referência SBA, bem como diagramas de componentes relacionados para cada uma das camadas. Táticas arquitetônicas De acordo com o instituto de engenharia de software uma tática arquitetônica é um meio de satisfazer uma exigência de qualidade, manipulando algum aspecto de um modelo de atributo de qualidade através de decisões de design arquitetônico. Um exemplo simples usado na arquitetura do sistema de negociação algorítmica é a manipulação de um armazenamento de dados operacional (ODS) com um componente de consulta contínua. Este componente analisaria continuamente o ODS para identificar e extrair eventos complexos. As seguintes táticas são usadas na arquitetura: O padrão de disruptor nas filas de evento e ordem Memória compartilhada para filas de evento e ordem Linguagem de consulta contínua (CQL) no ODS Filtragem de dados com o padrão de design de filtro em dados de entrada Algoritmos de evitação de congestionamento em todos (AQM) e notificação de congestionamento explícita Recursos de computação de commodities com capacidade de atualização (escalável) Redundância ativa para todos os pontos de falha únicos Indexação e estruturas de persistência otimizadas no ODS Programar scripts regulares de backup e limpeza de dados para ODS Histórico de transações em todos os bancos de dados Checksums para todas as ordens para detectar falhas Anotar eventos com timestamps para ignorar eventos viciados Regras de validação de ordem, por exemplo Quantidades máximas de comércio Componentes automatizados de comerciantes usam um banco de dados na memória para análise Autenticação em dois estágios para interfaces de usuário conectando aos ATs Criptografia em interfaces de usuário e conexões com os ATs Padrão de design de observador para MVC para gerenciar visualizações A lista acima é apenas alguns design Decisões que identifiquei durante o projeto da arquitetura. Não é uma lista completa de táticas. À medida que o sistema está sendo desenvolvido, táticas adicionais devem ser empregadas em vários níveis de granularidade para atender aos requisitos funcionais e não funcionais. Abaixo estão três diagramas que descrevem o padrão de design do disruptor, o padrão de design do filtro e o componente de consulta contínua. Visão Comportamental Esta visão de uma arquitetura mostra como os componentes e as camadas devem interagir uns com os outros. Isso é útil ao criar cenários para testar projetos de arquitetura e para entender o sistema de ponta a ponta. Essa visão consiste em diagramas de seqüência e diagramas de atividades. Os diagramas de atividade que mostram o processo interno dos sistemas de negociação algorítmica e como os comerciantes devem interagir com o sistema de negociação algorítmico são mostrados abaixo. Tecnologias e frameworks O passo final na concepção de uma arquitetura de software é identificar tecnologias e frameworks potenciais que poderiam ser usados ​​para realizar a arquitetura. Como princípio geral, é melhor aproveitar as tecnologias existentes, desde que satisfaçam adequadamente os requisitos funcionais e não funcionais. Uma estrutura é uma arquitectura de referência realizada, e. O JBoss é um framework que realiza a arquitetura de referência do JEE. As tecnologias e estruturas a seguir são interessantes e devem ser consideradas quando se implementa um sistema de negociação algorítmica: CUDA - NVidia tem uma série de produtos que suportam alta performance computação financeira modelagem. Pode-se conseguir até 50x melhorias de desempenho na execução de simulações Monte Carlo na GPU em vez da CPU. Apache River - River é um kit de ferramentas usado para desenvolver sistemas distribuídos. Ele tem sido usado como um framework para a construção de aplicativos baseados no padrão SBA Apache Hadoop - no caso de que o log penetrante é um requisito, então o uso de Hadoop oferece uma solução interessante para o problema de grandes dados. O Hadoop pode ser implantado em um ambiente em cluster que suporta tecnologias CUDA. AlgoTrader - uma plataforma de negociação algorítmica de código aberto. AlgoTrader poderia potencialmente ser implantado no lugar dos componentes automatizados do comerciante. FIX Engine - um aplicativo autônomo que suporta os protocolos Financial Information Exchange (FIX) incluindo FIX, FAST e FIXatdl. Embora não seja uma tecnologia ou um framework, componentes devem ser construídos com uma interface de programação de aplicativo (API) para melhorar a interoperabilidade do sistema e seus componentes. Conclusão A arquitetura proposta foi projetada para satisfazer requisitos muito genéricos identificados para sistemas de negociação algorítmicos. Em geral, os sistemas de negociação algorítmicos são complicados por três fatores que variam de acordo com cada implementação: Dependências de sistemas externos de empresa e de troca Desafiando requisitos não funcionais e Evoluindo constrangimentos arquitetônicos A arquitetura de software proposta precisaria ser adaptada caso a caso para Para satisfazer requisitos organizacionais e regulamentares específicos, bem como para superar restrições regionais. A arquitetura do sistema de negociação algorítmica deve ser vista como apenas um ponto de referência para indivíduos e organizações que desejam projetar seus próprios sistemas de negociação algorítmicos. Para obter uma cópia completa e as fontes usadas, faça o download de uma cópia do meu relatório. Obrigado.

No comments:

Post a Comment