Sunday 6 August 2017

Automated Trading System Architecture


Arquitetura do sistema de comércio algorítmico Anteriormente neste blog, escrevi sobre a arquitetura conceitual de um sistema de negociação algorítmico inteligente, bem como os requisitos funcionais e não funcionais de um sistema de comércio algorítmico de produção. Desde então, criei uma arquitetura de sistema que, acredito, poderia satisfazer esses requisitos arquitetônicos. Nesta publicação, descreverei a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42010 e padrão de descrição da arquitetura de engenharia de software. 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 design e requisitos arquitetônicos. Definição de arquitetura de software. Ainda não existe consenso sobre o que é uma arquitetura de sistemas. No contexto deste artigo, é definido como a infra-estrutura dentro da qual os componentes do aplicativo que satisfazem os 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 seus requisitos funcionais ainda pode não atender às expectativas se os requisitos não funcionais permanecerem insatisfeitos. Para ilustrar este conceito, considere o seguinte cenário: um sistema de negociação algorítmico que você acabou de comprar / construir faz excelentes decisões de negociação, mas é completamente inoperacional com os sistemas de gerenciamento de risco e de gestão das organizações. Esse sistema atenderá às suas expectativas Arquitetura conceitual Uma visão conceitual descreve conceitos e mecanismos de alto nível que existem no sistema no mais alto nível 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 referência de aspecto arquiteturas e padrões são usados. Os padrões arquitetônicos são estruturas comprovadas e genéricas para alcançar requisitos específicos. Os aspectos arquitetônicos são preocupações transversais que abrangem múltiplos componentes. Arquitetura orientada a eventos - uma arquitetura que produz, detecta, consome e reage a eventos. Os eventos incluem movimentos do mercado em tempo real, eventos ou tendências complexas e eventos comerciais, e. Enviando 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. Esta impressão em azul pode ser reutilizada para vários projetos de construção independentemente do edifício que 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 usa uma arquitetura baseada em espaço (SBA) e um controlador de exibição de modelo (MVC) como referências. São também utilizadas boas práticas como o armazenamento de dados operacionais (ODS), o padrão de transformação e carregamento de extratos (ETL) e um data warehouse (DW). Controlador de exibição de modelo - um padrão que separa a representação de informações da interação dos usuários com ela. Arquitetura baseada em espaço - especifica uma infra-estrutura onde as unidades de processamento acopladas vagamente interagem entre si 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 subcomponentes 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 utilizados nesta visão incluem diagramas de componentes e diagramas de implantação. Abaixo está a galeria dos diagramas de implantação do sistema de negociação algorítmico geral 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 um requisito 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 é manipular uma loja 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 as filas de eventos e pedidos Idioma de consulta contínuo (CQL) na filtragem de dados ODS com o padrão de design do filtro em dados recebidos Algoritmos de evitação de congestionamentos em todos Conexões de entrada e saída Gerenciamento de fila ativa (AQM) e notificação de congestionamento explícito Recursos de computação de mercadorias com capacidade de atualização (escalável) Redundância ativa para todos os pontos de falha únicos Indicação e estruturas de persistência otimizadas no backup regular de dados ODS e scripts de limpeza para ODS Histórico de transações em todos os bancos de dados Súmrios para todas as ordens para detectar falhas Anotar eventos com timestamps para ignorar eventos obsoletos Regras de validação de pedidos, por exemplo, Quantidades de comércio máximo Componentes de comerciante automatizado usam um banco de dados em memória para análise Autenticação em dois estágios para interfaces de usuário conectando-se à ATs Criptografia em interfaces de usuário e conexões ao padrão de design ATs Observer para o MVC para gerenciar vistas. A lista acima é apenas um projeto pequeno 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 camadas devem interagir um com o outro. 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. Diagramas de atividades 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ítmica são mostrados abaixo. Tecnologias e estruturas O passo final na concepção de uma arquitetura de software é identificar possíveis tecnologias e estruturas que possam ser utilizadas 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 arquitetura de referência realizada, e. JBoss é uma estrutura que realiza a arquitetura de referência JEE. As seguintes tecnologias e estruturas são interessantes e devem ser consideradas na implementação de um sistema de negociação algorítmica: a CUDA - NVidia tem uma série de produtos que suportam modelagem de finanças computacionais de alto desempenho. Pode-se alcançar até 50x melhorias de desempenho na execução de simulações de Monte Carlo na GPU em vez da CPU. Rio Apache - Rio é um kit de ferramentas usado para desenvolver sistemas distribuídos. Ele foi usado como uma estrutura para a construção de aplicativos com base no padrão SBA Apache Hadoop - no caso de registro invasivo ser um requisito, então o uso do Hadoop oferece uma solução interessante para o problema dos 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. O AlgoTrader poderia ser implantado no lugar dos componentes do comerciante automatizado. FIX Engine - um aplicativo autônomo que aceita os protocolos do Financial Information Exchange (FIX), incluindo FIX, FAST e FIXatdl. Embora não seja uma tecnologia ou uma estrutura, os componentes devem ser criados com uma interface de programação de aplicativos (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ítmica. De um modo geral, os sistemas de negociação algorítmica são complicados por três fatores que variam de acordo com cada implementação. Dependências em sistemas externos de negócios e de intercâmbio Desafio de requisitos não funcionais e restrições arquitetônicas em evolução. A arquitetura de software proposta deveria, portanto, ser adaptada caso a caso Para satisfazer requisitos organizacionais e regulamentares específicos, bem como para superar restrições regionais. A arquitetura do sistema de comércio algorítmico 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ítmica. Para uma cópia completa e fontes usadas, baixe uma cópia do meu relatório. Obrigado. Prós e contras de sistemas de negociação automatizados Os comerciantes e os investidores podem fazer uma entrada precisa. Saída e regras de gerenciamento de dinheiro em sistemas de negociação automatizados que permitem aos computadores executar e monitorar os negócios. Uma das maiores atrações da automação de estratégia é que pode tirar parte da emoção da negociação, uma vez que os negócios são automaticamente colocados assim que determinados critérios forem atendidos. Este artigo irá apresentar os leitores e explicar algumas das vantagens e desvantagens, bem como as realidades, dos sistemas de negociação automatizados. (Para leitura relacionada, veja The Power Of Program Trades.) O que é um sistema de negociação automatizado Sistemas de negociação automatizados, também denominados sistemas de negociação mecânica, negociação algorítmica. Negociação automatizada ou negociação de sistema, permitem que os comerciantes estabeleçam regras específicas para ambas as entradas comerciais e as saídas que, uma vez programadas, podem ser executadas automaticamente através de um computador. As regras de entrada e saída comercial podem basear-se em condições simples, como um crossover médio móvel. Ou podem ser estratégias complicadas que requerem uma compreensão abrangente da linguagem de programação específica para a plataforma de negociação de usuários, ou a experiência de um programador qualificado. Os sistemas de negociação automatizados geralmente exigem o uso de software que esteja vinculado a um intermediário de acesso direto. E quaisquer regras específicas devem ser escritas na linguagem proprietária das plataformas. A plataforma TradeStation, por exemplo, usa a linguagem de programação EasyLanguage, a plataforma NinjaTrader, por outro lado, utiliza a linguagem de programação NinjaScript. A Figura 1 mostra um exemplo de uma estratégia automatizada que desencadeou três negociações durante uma sessão de negociação. (Para leitura relacionada, veja Comércio Global e Mercado Monetário.) Figura 1: Um gráfico de cinco minutos do contrato ES com uma estratégia automatizada aplicada. Algumas plataformas de negociação possuem assistentes de construção de estratégia que permitem aos usuários fazer seleções a partir de uma lista de indicadores técnicos comumente disponíveis para construir um conjunto de regras que podem ser negociadas automaticamente. O usuário poderia estabelecer, por exemplo, que um longo comércio será inserido uma vez que a média móvel de 50 dias cruza acima da média móvel de 200 dias em um gráfico de cinco minutos de um instrumento comercial específico. Os usuários também podem inserir o tipo de ordem (mercado ou limite, por exemplo) e quando o comércio será ativado (por exemplo, no final da barra ou aberto da próxima barra), ou use as entradas padrão das plataformas. Muitos comerciantes, no entanto, optam por programar seus próprios indicadores e estratégias personalizados ou trabalham em estreita colaboração com um programador para desenvolver o sistema. Embora isso normalmente requer mais esforço do que o uso do assistente de plataformas, ele permite um grau de flexibilidade muito maior e os resultados podem ser mais gratificantes. (Infelizmente, não existe uma estratégia de investimento perfeita que garanta o sucesso. Para mais informações, consulte Como usar os Indicadores Técnicos para Desenvolver Estratégias de Negociação.) Uma vez que as regras foram estabelecidas, o computador pode monitorar os mercados para encontrar oportunidades de compra ou venda com base na negociação Especificações de estratégia. Dependendo das regras específicas, assim que uma negociação for inserida, quaisquer pedidos de perdas de proteção de paradas. Paradas de trânsito e metas de lucro serão geradas automaticamente. Em mercados em movimento rápido, esta entrada de ordem instantânea pode significar a diferença entre uma pequena perda e uma perda catastrófica no caso de o comércio se mover contra o comerciante. Vantagens de Sistemas de Negociação Automatizados Há uma longa lista de vantagens em ter um computador monitorando os mercados para oportunidades de negociação e executar os negócios, incluindo: Minimizar Emoções. Os sistemas de negociação automatizados minimizam as emoções ao longo do processo comercial. Ao manter as emoções sob controle, os comerciantes tipicamente têm um tempo mais fácil de aderir ao plano. Uma vez que as ordens comerciais são executadas automaticamente uma vez que as regras comerciais foram cumpridas, os comerciantes não poderão hesitar ou questionar o comércio. Além de ajudar os comerciantes que têm medo de puxar o gatilho, o comércio automatizado pode conter aqueles que estão aptos a sobrecarregar a compra e venda em todas as oportunidades percebidas. Capacidade de Backtest. Backtesting aplica as regras de negociação aos dados históricos do mercado para determinar a viabilidade da idéia. Ao projetar um sistema de negociação automatizada, todas as regras precisam ser absolutas, sem espaço para interpretação (o computador não pode fazer suposições, precisa contar exatamente o que fazer). Os comerciantes podem tomar esses conjuntos precisos de regras e testá-los em dados históricos antes de arriscar dinheiro na negociação ao vivo. O backtesting cuidadoso permite que os comerciantes avaliem e aperfeiçoem uma idéia de negociação e determinem a expectativa de sistemas pelo valor médio que um comerciante pode esperar para ganhar (ou perder) por unidade de risco. (Oferecemos algumas dicas sobre este processo que podem ajudar a refindar suas estratégias comerciais atuais. Para mais informações, consulte Backtesting: Interpreting the Past.) Preserve Discipline. Como as regras comerciais são estabelecidas e a execução comercial é realizada automaticamente, a disciplina é preservada mesmo em mercados voláteis. A disciplina é muitas vezes perdida devido a fatores emocionais, como o medo de sofrer uma perda, ou o desejo de obter um pouco mais de lucro de um comércio. O comércio automatizado ajuda a garantir que a disciplina seja mantida porque o plano de negociação será seguido exatamente. Além disso, o erro piloto é minimizado e uma ordem para comprar 100 ações não será inserida incorretamente como uma ordem para vender 1.000 ações. Alcançar Consistência. Um dos maiores desafios na negociação é planejar o comércio e negociar o plano. Mesmo que um plano de negociação tenha o potencial de ser rentável, os comerciantes que ignoram as regras estão alterando qualquer expectativa que o sistema tenha tido. Não há como um plano de negociação que ganhe 100 das perdas de tempo são parte do jogo. Mas as perdas podem ser psicologicamente traumatizantes, então um comerciante que tem duas ou três negociações perdidas seguidas pode decidir ignorar o próximo comércio. Se este próximo comércio tivesse sido um vencedor, o comerciante já havia destruído qualquer expectativa que o sistema tivesse. Os sistemas de negociação automatizados permitem aos comerciantes obter consistência ao negociar o plano. (É impossível evitar desastres sem regras de negociação. Para mais informações, veja 10 Passos para Construir um Plano de Negociação de Vencimento). Velocidade de Entrada de Pedido Melhorada. Uma vez que os computadores respondem imediatamente às mudanças nas condições do mercado, os sistemas automatizados são capazes de gerar ordens assim que os critérios comerciais forem atendidos. Entrar ou sair de um comércio alguns segundos antes pode fazer uma grande diferença no resultado dos negócios. Assim que uma posição for inserida, todos os outros pedidos são gerados automaticamente, incluindo perdas protetoras de parada e metas de lucro. Os mercados podem se mover rapidamente, e é desmoralizante ter um comércio atingindo o objetivo de lucro ou superar um nível de parada de perdas antes que os pedidos possam ser inseridos. Um sistema de negociação automatizado evita que isso aconteça. Diversificar a negociação. Os sistemas de negociação automatizados permitem ao usuário trocar várias contas ou várias estratégias ao mesmo tempo. Isso tem o potencial de espalhar o risco em vários instrumentos ao criar um hedge contra posições perdidas. O que seria incrivelmente desafiador para um humano realizar é eficientemente executado por um computador em questão de milissegundos. O computador é capaz de procurar oportunidades de negociação em uma variedade de mercados, gerar ordens e monitorar negócios. Desvantagens e Realidades dos Sistemas Automatizados de Negociação Os sistemas de negociação automatizados possuem muitas vantagens, mas há algumas quedas e realidades a que os comerciantes devem estar cientes. Falhas mecânicas. A teoria do comércio automatizado faz com que pareça simples: configurar o software, programar as regras e assisti-lo comercializar. Na realidade, no entanto, a negociação automatizada é um método sofisticado de negociação, mas não infalível. Dependendo da plataforma de negociação, uma ordem comercial pode residir em um computador e não em um servidor. O que isso significa é que, se uma conexão com a Internet for perdida, um pedido pode não ser enviado ao mercado. Também pode haver uma discrepância entre os negócios teóricos gerados pela estratégia eo componente da plataforma de entrada de pedidos que os transforma em trades reais. A maioria dos comerciantes deve esperar uma curva de aprendizado ao usar sistemas de negociação automatizados, e geralmente é uma boa idéia começar com pequenos tamanhos comerciais enquanto o processo é refinado. Monitoramento. Embora seja ótimo ligar o computador e sair para o dia, os sistemas de negociação automatizados exigem monitoramento. Isso é devido ao potencial de falhas mecânicas, como problemas de conectividade, perdas de energia ou falhas no computador, e às peculiaridades do sistema. É possível que um sistema de negociação automatizado experimente anomalias que possam resultar em ordens erradas, ordens faltantes ou pedidos duplicados. Se o sistema for monitorado, esses eventos podem ser identificados e resolvidos rapidamente. Sobre otimização. Embora não sejam específicos dos sistemas de negociação automatizados, os comerciantes que empregam técnicas de teste de resposta podem criar sistemas que ficam ótimos no papel e que realizam terrivelmente em um mercado ao vivo. O excesso de otimização refere-se a ajuste de curva excessivo que produz um plano de negociação que não é confiável na negociação ao vivo. É possível, por exemplo, ajustar uma estratégia para alcançar resultados excepcionais nos dados históricos sobre os quais foi testado. Os comerciantes às vezes incorretamente assumem que um plano de negociação deve ter cerca de 100 negócios lucrativos ou nunca deve ter uma redução para ser um plano viável. Como tal, os parâmetros podem ser ajustados para criar um plano quase perfeito que falha completamente assim que é aplicado a um mercado ao vivo. (Esta otimização excessiva cria sistemas que ficam bons apenas no papel. Para mais informações, consulte Testes de Backtesting e Forward: A Importância da Correlação.) Os comerciantes de automação baseados no servidor têm a opção de executar seus sistemas de negociação automatizados através de uma negociação baseada no servidor Plataforma como Strategy Runner. Essas plataformas freqüentemente oferecem estratégias comerciais para venda, um assistente para que os comerciantes possam projetar seus próprios sistemas ou a capacidade de hospedar sistemas existentes na plataforma baseada no servidor. Por uma taxa, o sistema de negociação automatizado pode pesquisar, executar e monitorar negócios com todas as ordens que residem em seu servidor, resultando em entradas de pedidos potencialmente mais rápidas e confiáveis. Conclusão Apesar de ser um ppealing para uma variedade de fatores, os sistemas de negociação automáticos não devem ser considerados um substituto para negociação cuidadosamente executada. Falhas mecânicas podem acontecer e, como tal, esses sistemas requerem monitoramento. As plataformas baseadas em servidor podem fornecer uma solução para comerciantes que desejam minimizar os riscos de falhas mecânicas. (Para leitura relacionada, veja Day Trading Strategies For Beginners.)

No comments:

Post a Comment