Sunday 16 December 2018

Arquitetura de algo trading system


Arquitetura do sistema A arquitetura do AlgoTrader é composta pelos seguintes componentes. O AlgoTrader Server fornece a infra-estrutura para todas as estratégias que estão sendo executadas em cima dela. O servidor AlgoTrader possui o principal mecanismo de Processamento de Evento Complexo Esper (CEP). É responsável por todos os objetos do modelo de domínio e sua persistência no banco de dados. Diferentes adaptadores de dados de mercado estão disponíveis para processar dados de mercado atuais e históricos. Na outra extremidade estão disponíveis adaptadores para diferentes corretores de execução e trocas, que são responsáveis ​​por fazer pedidos e receber execuções. O AlgoTrader Server também fornece componentes de negócios para gerenciamento de portfólio, medição de desempenho, gerenciamento de riscos, gerenciamento de dinheiro, preço de opções, reconciliação, hedge Forex e otimização de parâmetros. Em cima do AlgoTrader Server, qualquer número de estratégias pode ser implantado. O AlgoTrader possui uma arquitetura baseada em eventos, utilizando um motor dedicado Esper CEP por estratégia. Uma estratégia pode implantar qualquer número de declarações Esper-like do SQL para análise de dados de mercado baseada em tempo e geração de sinais. Declarações Esper podem invocar qualquer número de ações processuais, como fazer um pedido ou fechar uma posição, que são codificadas em Java. A combinação de declarações Esper e Java Code fornece uma abordagem do melhor dos dois mundos. Para gerenciamento e monitoramento do sistema, existem quatro clientes GUI diferentes. O novo AlgoTrader HTML5 Frontend fornece funcionalidades relacionadas à negociação, como gráficos, pedidos, posições de dados de mercado de amplificadores. O cliente AlgoTrader Eclipse é o ambiente de desenvolvimento de estratégia padrão. O cliente EsperHQ gerencia o motor esper CEP. O cliente Grails é um cliente genérico para gerenciamento de dados de referência. Para instalações produtivas e implantação, o AlgoTrader usa o Docker. Apresentando o AlgoTrader 3.0 8211 O AlgoTrader mais poderoso ainda Apr-07-2017 O AlgoTrader 3.0 foi lançado. Esta versão inclui o novo HTML5 Frontend, implantação de um clique com o Docker, três novos algoritmos de execução e um relatório de teste de retorno baseado no Excel. Introduzindo o AlgoTrader One-Click Installation pelo Docker Mar-15-2017 O AlgoTrader 3.0 apresenta instalações de estratégia de negociação com um clique alimentadas por Docker BILANZ Artikel zum Thema Hochfrequenzhandel Feb-02-2017 AlgoTrader GmbH CEO Andy Flury im Entrevista com o BILANZ zum Thema Hochfrequenzhandel Termo de Licença da AlgoTrader TERMOS E CONDIÇÕES DO CONTRATO DE LICENÇA DO USUÁRIO FINAL (8220AGREIMENTO8221) GOVERNECE O USO DO SOFTWARE A MENOS QUE VOCÊ E O O LICENCIANTE EXECUTOU UM ACORDO DE LICENÇA ESCRITO SEPARADO QUE REGULA O USO DO SOFTWARE. O Licenciador está disposto a conceder a licença do Software apenas sob a condição de você aceitar todos os termos contidos neste Contrato. Ao assinar este Contrato ou ao fazer o download, instalar ou usar o Software, você indicou que entendeu este Contrato e aceita todos os seus termos. Se você não aceitar todos os termos deste Contrato, então o Licenciador não está disposto a licenciar o Software para você, e você não pode baixar, instalar ou usar o Software. 1. CONCESSÃO DE LICENÇA a. Licença de Uso de Avaliação e Uso de Avaliação. Sujeito à sua conformidade com os termos e condições deste Contrato, o Licenciante concede a você uma licença pessoal, não exclusiva e intransferível, sem o direito de sublicenciar, durante o termo deste Contrato, usar internamente o Software exclusivamente para Uso de avaliação e uso de desenvolvimento. Os produtos ou módulos de software de terceiros fornecidos pelo Licenciador, se houver, podem ser usados ​​exclusivamente com o Software e podem estar sujeitos à aceitação dos termos e condições fornecidos por esses terceiros. Quando a licença terminar, você deve parar de usar o Software e desinstalar todas as instâncias. Todos os direitos não especificamente concedidos aqui são conservados pelo Licenciador. O desenvolvedor não deve fazer nenhum uso comercial do Software, ou qualquer trabalho derivado dele (incluindo os próprios fins de negócios internos do Developer8217s). Copiando e redistribuindo, de qualquer forma, o Software ou o Aplicativo de desenvolvedor para seus clientes diretos ou indiretos é proibido. B. Licença de uso de produção. Sujeito à sua conformidade com os termos e condições deste Contrato, incluindo o pagamento da taxa de licença aplicável, o Licenciante concede a você uma licença não exclusiva e não transferível, sem o direito de sublicenciar, para o termo deste Contrato, : (A) usar e reproduzir o Software exclusivamente para seus próprios fins de negócios internos (8220Produção Use8221) e (b) fazer um número razoável de cópias do Software apenas para fins de backup. Essa licença é limitada ao número específico de CPUs (se licenciado pela CPU) ou instâncias de Java Virtual Machines (se licenças por máquina virtual) para as quais você pagou uma taxa de licença. O uso do Software em uma maior quantidade de CPUs ou instâncias de Java Virtual Machines exigirá o pagamento de uma taxa de licença adicional. Os produtos ou módulos de software de terceiros fornecidos pelo Licenciador, se houver, podem ser usados ​​exclusivamente com o Software. C. Não existem outros direitos. Os seus direitos e o uso do Software são limitados aos expressamente concedidos nesta Seção 1. Você não fará nenhum outro uso do Software. Exceto quando expressamente licenciado nesta Seção, o Licenciante não lhe concede outros direitos ou licenças, por implicação, impedimento ou de outra forma. TODOS OS DIREITOS NÃO CONCEDIDOS EXPRESSAMENTE AQUI SÃO RESERVADOS PELO LICENCIANTE OU SEUS FORNECEDORES. 2. RESTRIÇÕES Salvo o disposto expressamente na Seção 1, você não: (a) modificará, traduzirá, desmontará, criará obras derivadas do Software ou copiará o Software (b) alugará, emprestará, transferirá, distribuirá ou concederá quaisquer direitos no Software de qualquer forma para qualquer pessoa (c) fornecer, divulgar, divulgar ou disponibilizar, ou permitir o uso do Software, por qualquer terceiro (d) publicar qualquer benchmark ou teste de desempenho executado no Software ou qualquer parte dele ou ( E) remover quaisquer avisos de propriedade, rótulos ou marcações no Software. Você não distribuirá o Software a qualquer pessoa em uma base autônoma ou em um fabricante de equipamento original (OEM). 3. PROPRIEDADE Entre as partes, o Software é e permanecerá propriedade única e exclusiva do Licenciador, incluindo todos os direitos de propriedade intelectual nele contidos. uma. No caso de você usar o Software sob a licença estabelecida na Seção 1 (a), este Contrato permanecerá em vigor durante o período de avaliação ou desenvolvimento. B. No caso de você usar o Software sob a licença estabelecida na Seção 1 (b), este Contrato permanecerá em vigor, seja (a) por um período de um ano, se adquirido como uma licença de assinatura anual ou (b) perpétuamente se comprado como um licença perpétua. Uma licença de assinatura anual será renovada automaticamente por um ano, a menos que seja encerrado com aviso prévio de um mês. Este Contrato encerrará automaticamente sem aviso prévio se você violar qualquer termo deste Contrato. Após a rescisão, você deve imediatamente deixar de usar o Software e destruir todas as cópias do Software em sua posse ou controle. 5. SERVIÇOS DE APOIO Se você comprou esta licença, incluindo serviços de suporte, incluem lançamentos de manutenção (atualizações e atualizações), suporte por telefone e suporte por e-mail ou baseados na web. uma. O Licenciador fará esforços comercialmente razoáveis ​​para fornecer uma atualização projetada para resolver ou ignorar um erro relatado. Se tal erro tiver sido corrigido em uma versão de manutenção, o Licenciado deve instalar e implementar a versão de manutenção aplicável de outra forma, a Atualização pode ser fornecida sob a forma de uma correção, procedimento ou rotina temporária, a ser usada até uma versão de manutenção contendo a Atualização permanente está disponível. B. Durante o Termo do Contrato de Licença, o Licenciador deverá disponibilizar os Lançamentos de Manutenção para o Licenciado se, à medida que o Licenciador disponibilizar as Lançamentos de Manutenção, geralmente disponíveis para seus clientes. Se surgir uma questão sobre se uma oferta de produto é uma Atualização ou um novo produto ou recurso, a opinião do Licensor8217s prevalecerá, desde que o Licenciador considere a oferta do produto como um novo produto ou recurso para seus clientes finais em geral. C. A obrigação do Licensor8217 de fornecer os Serviços de Suporte está condicionada ao seguinte: (a) O Licenciado faz esforços razoáveis ​​para corrigir o Erro depois de consultar o Licenciador (b) O Licenciado fornece ao Licenciante informações e recursos suficientes para corrigir o erro no site do Licensor8217s Ou via acesso remoto ao site do Licenciado do Licenciado, bem como acesso ao pessoal, hardware e qualquer software adicional envolvido na descoberta do erro (c) O Licenciado instala prontamente todas as versões de manutenção e (d) O Licenciado procura, instala e mantém todo o equipamento, comunicação Interfaces e outros equipamentos necessários para operar o Produto. D. O Licenciador não é obrigado a fornecer serviços de suporte nas seguintes situações: (a) o Produto foi alterado, modificado ou danificado (exceto se sob supervisão direta do Licenciador) (b) o erro é causado pela negligência do Licenciado8217s, mau funcionamento do hardware Ou outras causas além do controle razoável do Licenciador (c) o erro é causado por software de terceiros não licenciado através do Licenciador (d) O Licenciado não instalou e implementou a (s) Versão (ões) de Manutenção para que o Produto seja uma versão suportada pelo Licenciador ou (e) O Licenciado não pagou as taxas de Licença ou de Serviços de Atendimento quando vencidos. Além disso, o Licenciador não é obrigado a fornecer serviços de suporte para código de software escrito pelo próprio cliente com base no Produto. E. O Licenciador reserva-se o direito de interromper os Serviços de Suporte se o Licenciante, a seu exclusivo critério, determinar que o suporte contínuo para qualquer Produto não é mais economicamente praticável. O Licenciador dará ao Licenciado, pelo menos, três (3) meses de antecedência prévia por escrito de qualquer descontinuação de Serviços de Apoio e reembolsará quaisquer taxas de Serviços de Suporte não acumuladas que o Licenciado pode ter pago antecipadamente em relação ao Produto afetado. O Licenciador não tem obrigação de suportar ou manter qualquer versão do Produto ou plataformas de terceiros subjacentes (incluindo, mas não limitado a, software, JVM, sistema operacional ou hardware) para o qual o Produto é suportado, exceto (i) a versão atual do Produto e plataforma de terceiros subjacente, e (ii) as duas versões imediatamente anteriores do Produto e sistema operacional por um período de seis (6) meses após a sua primeira substituição. O Licenciador reserva-se o direito de suspender o desempenho dos Serviços de Suporte se o Licenciado não pagar qualquer montante que seja pagável ao Licenciador sob o Contrato no prazo de trinta (30) dias após esse valor ser devido. 6. GARANTIA a. O Licenciador garante que o Software será capaz de realizar em todos os aspectos relevantes de acordo com as especificações funcionais estabelecidas na documentação aplicável por um período de 90 dias após a data em que você instalou o Software. Em caso de incumprimento de tal garantia, o Licenciante deverá, a seu critério, corrigir o Software ou substituir esse Software gratuitamente. O que precede são os seus únicos e exclusivos remédios e a responsabilidade exclusiva do Licensor8217 por violação dessas garantias. As garantias estabelecidas acima são feitas e para o benefício de você apenas. As garantias serão aplicadas somente se (a) o Software tiver sido devidamente instalado e usado em todos os momentos e de acordo com as instruções de uso (c) as atualizações mais recentes foram aplicadas ao software e (c) nenhuma modificação, alteração ou adição Foi feito ao Software por pessoas que não sejam o Licenciador ou o representante autorizado do Licensor8217s. 7. RENÚNCIA, EXCETO, COMO SEJA FORNECIDO NA ARTIGO 6 (a), O LICENCIANTE EXCLUIRÁ EXPRESSAMENTE TODAS AS GARANTIAS, EXPRESSAS OU IMPLÍCITAS, INCLUINDO QUALQUER GARANTIA IMPLÍCITA DE COMERCIALIZAÇÃO, APTIDÃO PARA UM PROPÓSITO ESPECÍFICO E NÃO INFRACÇÃO, E QUAISQUER GARANTIAS DECORRENTES DO CURSO DE NEGOCIAÇÃO OU USO DO COMÉRCIO. NENHUM AVISO OU INFORMAÇÃO, SEJA ORAL OU ESCRITO, OBTIDO DO LICENCIANTE OU DE OUTRA VEZ CRIÁ QUALQUER GARANTIA NÃO EXPRESSAMENTE INDICADA NESTE ACORDO. O Licenciante não garante que o Produto de Software atenda aos seus requisitos ou opere sob suas condições específicas de uso. O Licenciante não garante que a operação do Produto de Software seja segura, sem erros ou sem interrupção. VOCÊ DEVE DETERMINAR SE O PRODUTO DE SOFTWARE SUFICIENTEMENTE CARREGA SEUS REQUISITOS DE SEGURANÇA E ININTERRUPTABILIDADE. VOCÊ TENHA ÚNICA RESPONSABILIDADE E TODA A RESPONSABILIDADE POR QUALQUER PERDA INCURRIDA POR FALHA DO PRODUTO DO SOFTWARE PARA CUMPRIR OS SEUS REQUISITOS. O LICENCIANTE NÃO SERÁ RESPONSÁVEL PELA PERDA DE DADOS POR QUALQUER COMPUTADOR OU DISPOSITIVO DE ARMAZENAMENTO DE INFORMAÇÕES, SOB QUALQUER CIRCUNSTÂNCIA. 8. LIMITAÇÃO DE RESPONSABILIDADE A RESPONSABILIDADE TOTAL DE LICENCIADORA 8217S DE TODAS AS CAUSAS DE AÇÃO E SOB TODAS AS TEORIAS DE RESPONSABILIDADE SERÃO LIMITADAS E NÃO EXCEDERÃO A TAXA DE LICENÇA PAGADA POR VOCÊ PARA O LICENCIANTE PARA O SOFTWARE. EM NENHUM CASO, O LICENCIANTE SERÁ RESPONSÁVEL POR QUAISQUER DANOS ESPECIAIS, INCIDENTAIS, EXEMPLARES, PUNITIVOS OU CONSEQÜENCIAIS (INCLUINDO PERDA DE USO, DADOS, NEGÓCIOS OU LUCROS) OU PARA O CUSTO DOS PRODUTOS DE SUBSTITUIÇÃO DE PROCURAR QUE SÃO FORA DE OU EM CONEXÃO CONTRATO OU O USO OU O DESEMPENHO DO SOFTWARE, SEJA TAL RESPONSABILIDADE SENDO DE QUALQUER RECLAMAÇÃO COM BASE NO CONTRATO, GARANTIA, DELITO (INCLUINDO NEGLIGÊNCIA), RESPONSABILIDADE ESTRITA OU DE OUTRA FORMA, E SEJA O LICENCIANTE SIDO AVISADO DA POSSIBILIDADE DE TAL PERDA OU DANIFICAR. AS LIMITAÇÕES ANTERIORES SOBREVIVARÃO E APLICAREM MESMO SE QUALQUER REMÉDIO LIMITADO ESPECIFICADO NESTE ACORDO ENCONTRAR-SE QUE FALOU DE SEU PROPÓSITO ESSÊNICO. NA EXTENSÃO DE QUE A LEGISLAÇÃO APLICÁVEL LIMITA A CAPACITAÇÃO DO LICENCIANTE8217 NENHUMA RESPONSABILIDADE DE QUALQUER GARANTIA IMPLÍCITA, ESTA ISENÇÃO DE RESPONSABILIDADE SERÁ EFICAZ NA MÁXIMA EXTENSÃO PERMITIDA. 9. GERAL Se qualquer disposição deste Contrato for considerada inválida ou inexequível, o restante deste Contrato permanecerá em pleno vigor e efeito. Na medida em que quaisquer restrições expressas ou implícitas não sejam permitidas pelas leis aplicáveis, essas restrições expressas ou implícitas permanecerão em vigor e aplicadas na extensão máxima permitida por tais leis aplicáveis. Este Contrato é o acordo completo e exclusivo entre as partes em relação ao assunto em questão, substituindo e substituindo todos e quaisquer acordos anteriores, comunicações e entendimentos (tanto escritos quanto orais) em relação a esse assunto. As partes neste Contrato são empreiteiras independentes, e tampouco tem o poder de vincular a outra ou incorrer em obrigações no outro. Nenhuma falha de qualquer das partes para exercer ou fazer valer qualquer dos seus direitos ao abrigo do presente acordo constituirá uma renúncia a tais direitos. Quaisquer termos ou condições contidos em qualquer pedido de compra ou outro documento de pedido que sejam inconsistentes ou adicionais aos termos e condições deste Contrato são rejeitados pelo Licenciador e serão considerados nulos e sem efeito. Este Acordo será interpretado e interpretado de acordo com as leis da Suíça, sem levar em conta os princípios do conflito de leis. As partes concordam com a jurisdição exclusiva e o local dos tribunais localizados em Zurique, Suíça, para resolução de eventuais litígios decorrentes ou relacionados a este Contrato. 10. DEFINIÇÕES 8220 O uso de avaliação8221 significa o uso do software exclusivamente para avaliação e avaliação para novas aplicações destinadas ao seu uso de produção. 8220Produção Use8221 significa usar o Software apenas para fins comerciais internos. O Uso da Produção não inclui o direito de reproduzir o Software para sublicenciar, revender ou distribuir, incluindo, sem limitação, operação em um compartilhamento de tempo ou distribuição do Software como parte de um arranjo ASP, VAR, OEM, distribuidor ou revendedor. 8220Software8221 significa o software Licensor8217s e todos os seus componentes, documentação e exemplos incluídos pelo Licenciador. 8220Error8221 significa (a) uma falha no Produto de acordo com as especificações estabelecidas na documentação, resultando na incapacidade de usar ou restrição no uso do Produto, ou (b) um problema que requer novos procedimentos, esclarecimentos , Informações adicionais e pedidos de melhorias de produtos. 8220Maintenance Release8221 significa atualizações e atualizações para o Produto que estão disponíveis para os licenciados de acordo com os Serviços de Suporte padrão definidos na seção 5. 8220Update8221 significa uma modificação ou adição de software que, quando feita ou adicionada ao Produto, corrige o erro ou um Procedimento ou rotina que, quando observado na operação regular do Produto, elimina o efeito adverso prático do Erro no Licenciado. 8220Upgrade8221 significa uma revisão do Produto lançado pelo Licenciador para seus clientes finais em geral, durante o Termo de Serviços de Suporte, para adicionar funções novas e diferentes ou para aumentar a capacidade do Produto. A atualização não inclui a liberação de um novo produto ou recursos adicionais para os quais pode haver uma cobrança separada. Como funciona uma arquitetura de sistema de comércio algorítmico Existem, na verdade, apenas 3 blocos principais em um sistema de comércio Algo. 1. Manipulador de dados de mercado (por exemplo, manipulador FAST) 2. Módulo de estratégia (por exemplo, estratégia crossOver) 3. Ordem roteador (por exemplo, roteador FIX) você pode adicionar verificações de risco no módulo de estratégia ou no módulo de roteador de pedidos ou ambos. Por enquanto, seu fluxo de dados está correto, você deve estar pronto para ir. Lembre-se de que você está projetando um ATS para uma latência mínima, e adicionar mais camadas ou complexidade virão ao custo da latência. Arquitetura mínima de ATS E se você adicionar os sinos e os assobios, pareceria o seguinte: se você também está interessado no meio da implementação da arquitetura acima, você deve manter as seguintes coisas em mente. Evite locksmutexes. No caso de você ter que usá-lo, tente substituí-los por estruturas sem trava usando atomics. Existem algumas bibliotecas disponíveis para estruturas de dados sem bloqueio (por exemplo, libcds, kit de concorrência etc.). C-11 suporta std :: atomic. E você deve se esforçar para usá-los também. Evite o que é feito no QuickFIX. É escrito para segurança de flexibilidade, pois a criação e destruição do objeto (bloqueio) é feita para cada invocação de qualquer mensagem para o roteador. Certamente, não há como escrever um código sensível à latência. Nenhuma alocação de memória em tempo de execução. O caminho de tempo de execução deve usar gerenciamento de memória personalizado e sem bloqueio com pool de memória pré-alocada. Toda a inicialização pode ser feita em construtores. Acoplamento apertado. O modelo de Threading, o modelo de IO e o gerenciamento de memória devem ser projetados para colaborar uns com os outros para alcançar o melhor desempenho geral. Isso vai contra o conceito OOP de acoplamento solto, mas é necessário evitar o custo de tempo de execução do polimorfismo dinâmico. Use modelos. Na mesma linha, eu também sugeriria que você olhasse para a C templatização para conseguir flexibilidade de código. Otimização do OSHardware: Finalmente, você deve procurar trabalhar com a placa de rede Linux RT Kernel e Solarflare com o driver OpenOnLoad para alcançar a latência mínima. Você pode olhar para isolar a CPU e executar seu programa nesse núcleo específico. E, finalmente, a API pública que você precisaria expor aos desenvolvedores de estratégias. Gostaria que este fosse o conjunto mínimo que encapsularia toda a complexidade desse intercâmbio particular. Class OrderRouter public: virtual bool sendNewOrd (OrderInfo) 0 virtual bool sendRplOrd (OrderInfo) 0 virtual bool sendCxlOrd (OrderInfo) 0 virtualBut isso significa que a Classe OrderInfo precisa ter TODOS os detalhes exigidos pelo destinoexchange. Em geral, os intercâmbios exigem o mesmo tipo de informação, mas, à medida que você acompanha e apoia mais experiências de intercâmbio, você se encontrará adicionando mais variáveis ​​nesta classe. Os seguintes são os principais desafios que você precisa se perguntar: 1. arquitetura multiprocesso ou arquitetura Multi-Threaded. Seja para construir um processo monolítico com vários tópicos, ou escrever vários processos. O custo do processo múltiplo é a latência de passagem de mensagem, enquanto o custo do processo único de thread múltiplo é que qualquer falha pode reduzir o sistema inteiro. 2. Mensagem que passa: enquanto você pode escolher uma infinidade de opções, você está restrito por consideração de latência. O IPC mais rápido seria a memória compartilhada, mas então, como você faria a sincronização passar algum tempo com essas duas perguntas, porque elas seriam o bloco de construção em que sua arquitetura se encontra. Editar: FIX e FAST Em relação ao protocolo popularstandard, o FIX é para enviar ordens e o FAST é para dados de mercado. Dito isto, a maioria das trocas tem seu próprio protocolo nativo, que é mais rápido que o FIX, porque o FIX geralmente é implementado em cima do seu protocolo nativo. Mas eles ainda suportam o FIX para aumentar a velocidade de implantação. Por outro lado, enquanto o FIX é adotado pela maior parte das trocas, o FAST não possui uma ampla aceitação. Se alguma coisa, haveria apenas um punhado de troca adotando-o. A maioria deles envia o próprio FIX (baixa latência) ou usa seu próprio protocolo binário nativo. por exemplo. Na Índia, NSE, BSE e MCXMCXSX, todas as três trocas fornecem o protocolo FIX, além do protocolo nativo, mas apenas a BSE oferece FAST para dados de mercado. E isso também está passando de FAST para nativo com a introdução do EOBI. Você pode extrapolar o mesmo para outras trocas. Como John mencionou, a OMS é o cerne de qualquer plataforma de negociação e você deve começar a pesquisar sobre isso. Você precisaria gastar tempo para determinar seu ciclo de vida comercial, eventos e recursos que deseja inserir no OMS e aqueles que você deseja que seu Algo Engine lide. A Metcetera oferece uma OMS de código aberto, eu não usei isso pessoalmente, mas é uma das poucas no mercado. A próxima coisa que você deve observar é fornecer uma interface para a fonte de dados e empurrá-la. Isto é para um sistema de entrada de pedido de cliente para lançar os detalhes da ordem e o mecanismo da Algo para gerá-lo. Muitas Sales Side OMS039s usam uma combinação de programas proprietários escritos em JavaC usando o FIX. O protocolo FIX permite que você comunique em tempo real em todos os sistemas em um formato de mensagem pré-definido de amplificador simplificado estabelecido pela comunidade de protocolo FIX. Vá para a página inicial do Organismo de Protocolo FIX para obter mais informações sobre isso. Também olha para o Open Source FIX Engine. Uma implementação de fonte aberta do mecanismo FIX. Em seguida, vem uma interface de dados de mercado para obter informações sobre o mercado de segurança do tempo em tempo real, os dados que variam de HighLowOpenClose ao Best BidBest Ask, Volume negociado total, Último preço, Último volume, Citações de lances, Pedir orçamentos, etc. As informações que você procura realmente dependem do tipo de Estratégia que deseja implementar. Eu acredito que o Interactive Broker fornece um feed de dados em tempo real via FIX. A conectividade do Exchange é a próxima onde o Algo interpreta os sinais, cria um pedido e roteia para um Exchange ou ECN. Desenvolvê-lo em casa pode ser difícil, pois você precisaria trabalhar com a associação do Exchange, certificar sua plataforma e pagar uma taxa de associação regular. Uma maneira mais barata é usar uma API de corretor (como IB) e rotear a ordem através delas. Os dados históricos também são essenciais, pois você pode querer comparar o comportamento atual do mercado com seus valores históricos. Parámetros como spread médio, perfis VWAP, volume diário médio etc. podem ser necessários para influenciar a tomada de decisões. Você pode tê-lo no banco de dados (preferido), mas se a velocidade da essência, então baixe-o no cache do servidor quando você inicia seu programa. Uma vez que seus sistemas periféricos estão configurados, você pode começar a desenvolver seu programa de algo da maneira que você deseja que ele funcione. Esta infra-estrutura básica permitiria que você insira uma ordem de algo pai, lesse dados de mercado, reaja aos sinais, mas gerando ordens para crianças e colocando no livro de pedidos de câmbio e dados históricos para influenciar a tomada de decisões. O OMS mantém a ligação entre a ordem do filho amador principal, seus status em tempo real e atualizações pela plataforma de conectividade de troca ou algo. O que você deseja implementar dentro do Algo é completamente para você. Requisitos do sistema de negociação Algorithmic Atualmente estou levando uma aula sobre arquiteturas de software. Para esta classe, cada aluno escolhe um sistema, define seus requisitos arquitetônicos e projeta uma solução capaz de satisfazer esses requisitos. Eu escolhi um sistema de comércio algorítmico por causa do desafio tecnológico e porque adoro os mercados financeiros. Os sistemas de negociação algorítmica (ATs) usam algoritmos computacionais para tomar decisões comerciais, enviar ordens e gerenciar pedidos após a submissão. Nos últimos anos, os ATs ganharam popularidade e agora representam a maioria das negociações realizadas através de trocas internacionais. Distinção é feita entre negociação programada e negociação algorítmica. A negociação programada envolve a quebra de pedidos de grandes mercados em pacotes de ações menores. Neste artigo, o comércio programado é considerado um requisito de segurança de um ATs. Introdução aos sistemas de negociação algorítmica Falando em geral, existem cinco tipos de participantes do mercado: investidores de varejo, comerciantes proprietários, criadores de mercado, instituições de compra e instituições de venda. ATs são mais utilizados por instituições proprietárias de buy-side, mas essa dinâmica está mudando. O comércio algorítmico como serviço (ATAAS) torna o comércio algorítmico acessível ao investidor varejista (ver apêndice). Este artigo descreve os requisitos de arquitetura para um ATs usado por uma instituição proprietária de compra exclusiva. Na maior parte do nível, um ATs tem três funções: tomar decisões comerciais, criar ordens de negociação e gerenciar essas ordens após a submissão. Abaixo disso, há uma série de requisitos funcionais mais detalhados, alguns dos quais podem ser satisfeitos pela arquitetura. Introdução à arquitetura de software Um grande debate ainda envolve a definição do que é uma arquitetura de software. No contexto deste artigo, a arquitetura do software é definida como a infra-estrutura dentro da qual os componentes do aplicativo que fornecem a funcionalidade do usuário podem ser especificados, implantados e executados. Um sistema de software deve satisfazer seus requisitos funcionais e não funcionais. Os requisitos funcionais especificam as funções dos componentes dos sistemas. Os requisitos não funcionais especificam medidas através das quais o desempenho do sistema é medido. Um sistema de software que satisfaça seus requisitos funcionais, ainda não atende às expectativas dos usuários, e. Um ATs que pode enviar negócios, mas não em tempo hábil, causaria perdas financeiras. A arquitetura do software basicamente fornece uma infra-estrutura que satisfaça os requisitos não funcionais e dentro do qual os componentes que satisfazem os requisitos funcionais podem ser implantados e executados. Os requisitos do sistema de comércio algorítmico podem, portanto, ser amplamente divididos em requisitos funcionais e não funcionais. Requisitos funcionais Sob o requisito de nível superior de negociação de negociação, existem três requisitos de alto nível: Obter dados de mercado - baixar, filtrar e armazenar dados estruturados e não estruturados. Os dados estruturados incluem dados de mercado em tempo real da Reuters ou Bloomberg transmitidos usando um protocolo, e. CONSERTAR. Os dados não estruturados incluem notícias e dados de redes sociais. Definir estratégia de negociação - especifique novas regras e estratégias de negociação. A regra de negociação consiste em um indicador, uma desigualdade e um valor numérico, e. Proporção de PE lt 10. As regras de negociação são estruturadas em uma árvore de decisão para definir uma estratégia de negociação (ilustrada abaixo). Analise os títulos em relação à estratégia de negociação - para cada segurança, obtenha dados e filtre-o através da estratégia de negociação para determinar qual segurança para comprar. Além disso: para cada posição aberta, determine qual segurança vender. Nota: este requisito pode variar. Sob o requisito de alto nível de pedidos de negociação, existem dois requisitos de alto nível: Obter informações de comércio - para cada decisão, obter o símbolo de segurança, preço, quantidade, etc. Criar ordem comercial - para cada decisão, especifique um tipo de ordem e adicione informações comerciais . Existem seis tipos de pedidos: longo, curto, mercado, limite, parada e condicional. Sob o requisito de nível superior de ordens de gerenciamento, existem três requisitos de alto nível: Gerenciar ordens pendentes - para cada pedido, validar e confirmar essa ordem Realizar encomendas de rota - rootear cada ordem para uma troca, pool escuro ou corretagem Gerenciar ordens enviadas - acompanhar o status de Cada ordem enviada, se a ordem for correspondida, então crie uma posição aberta. Se a ordem não for correspondida, pare a ordem. Este diagrama mostra como uma estratégia de negociação pode ser definida como uma árvore de decisão das regras de negociação. Requisitos não funcionais Existem muitos requisitos não funcionais que são negociados entre os outros; O aumento do desempenho geralmente ocorre com um custo total de propriedade total. Os requisitos do sistema de negociação algorítmico não funcional incluem, Escalabilidade - é a capacidade de um sistema para lidar e executar sob uma carga de trabalho aumentada ou em expansão. Um ATs deve ser escalável em relação ao número de feeds de dados em processos, número de trocas comerciais e títulos que podem negociar. Desempenho - é a quantidade de trabalho realizado por um sistema em comparação com o tempo e os recursos necessários para fazer esse trabalho. Um ATs deve ter tempos de resposta rápidos (de volta ao mercado) e alto processamento e transferência de rede. Modificabilidade - é a facilidade com que o sistema pode ser alterado. Um ATs deve ter estratégias de negociação e processamento de dados facilmente modificáveis. Confiabilidade - é a precisão e confiabilidade de um sistema para produzir saídas corretas para as entradas que recebe. Como erros e erros em um ATs podem resultar em enormes perdas e multas, a confiabilidade é crucial. Veja a debacle do capital do Cavaleiro para obter provas disso. Auditabilidade - é a facilidade com que o sistema pode ser auditado. Casos recentes de alto perfil de ATs que estão faltando colocaram a ATs em destaque para as empresas de auditoria. Eles devem, portanto, ser auditáveis ​​tanto do ponto de vista financeiro, como da conformidade e da TI. Segurança - é a segurança de uma organização contra atividades criminosas, como terrorismo, roubo ou espionagem. Como as estratégias de negociação são proprietárias e representam uma propriedade intelectual valiosa, elas devem ser garantidas. Além disso, para proteger os ATs de caçados, as ordens devem ser ofuscadas usando estratégias de negociação programadas. Tolerância a falhas - é a capacidade de um sistema continuar a funcionar corretamente após uma falha ou falha. Isso é semelhante à confiabilidade, exceto que os ATs devem continuar sendo confiáveis ​​mesmo após uma falha para evitar perdas financeiras. Interoperabilidade - é a facilidade com que o sistema é capaz de operar com uma ampla gama de sistemas relacionados. Isso é importante para um ATs que pode ser necessário para interagir com sistemas de gerenciamento de pedidos, sistemas de gerenciamento de portfólio, sistemas de gerenciamento de riscos, sistemas de contabilidade e até sistemas bancários. Visão geral do alcance arquitetônico O escopo arquitetônico é o conjunto de serviços suportados pela arquitetura que são consumidos por componentes para atender aos requisitos funcionais e não funcionais. Uma discriminação mais detalhada deste escopo arquitetônico está disponível no documento de requisitos detalhados. Em um nível alto, os seguintes serviços deveriam ser fornecidos pela arquitetura: um ambiente de pré-processamento de dados modificável - que suporta vários fluxos de dados, filtros para dados irrelevantes e particionamento de dados temporários Um ambiente de processamento distribuído - que suporta múltiplas unidades de processamento (Clusters), monitoramento de desempenho em tempo real, uma estrutura de comunicação orientada a mensagens, agendamento de conjuntos de dados temporais, balanceamento de carga e replicação de dados Unidades de processamento individuais - que suportam filas na memória e processamento de eventos complexos (em dados temporais) Um armazenamento Rede de área (SAN) - que suporta agregação de dados temporais, consultas contínuas e logging (para trilhas de auditoria) Um ambiente de recuperação de dados (DR) - replica o SAN e o sistema de gerenciamento de pedidos Um ambiente de integração - que expõe uma API padrão para componentes e conexões Componentes internos e externos entre si. Um sistema de gerenciamento de pedidos - que suporta fluxos de entrada simultâneos, passiv E redundância e balanceamento de carga, critérios ACID nas ordens, uma trilha de auditoria e é replicado Um ambiente de uso do sistema - que suporta vários perfis de usuários e expõe um front-end totalmente gerenciado ao sistema de negociação algorítmica. Requisitos de acesso e integração Os requisitos de acesso descrevem formas Em que os usuários podem acessar os componentes dos sistemas. Um sistema de comércio algorítmico deve expor três interfaces: uma interface para definir novas regras de negociação, estratégias de negociação e fontes de dados, uma interface de back-end para administradores de sistema para adicionar clusters e configurar a arquitetura e uma interface de auditoria somente leitura para verificar controles de TI e Direitos de acesso ao usuário. Os pré-requisitos para integração entre componentes e sistemas externos são chamados de requisitos de integração. O sistema de negociação algorítmica deve apoiar integração baseada em arquivos, integração baseada em mensagens e integração de banco de dados. Como tal, os seguintes requisitos devem ser satisfeitos pela arquitetura: integração de banco de dados - suporte ODBC, JDBC, ADO e XQC Integração baseada em arquivos - suporte a arquivos CSV, XML e JSON Integração baseada em mensagens - suporte FIX. VELOZES. E FIXatdl Restrições arquitetônicas Os pontos azuis mostram os locais físicos onde a latência da rede é minimizada e os pontos vermelhos mostram os locais físicos das grandes trocas financeiras. A fim de maximizar o desempenho do sistema de negociação algorítmica, deve-se hospedar o sistema em locais que minimizem a latência da rede. Fonte: MIT open press: dspace. mit. eduhandle1721.16285 As restrições arquitetônicas são fatores que restringem o desempenho da arquitetura que está sendo construída. As duas restrições que vou mencionar aqui são restrições de rede física e restrições regulatórias. Restrições de rede física são colocadas em um sistema como resultado de redes de telecomunicações de baixo custo. Para mitigar essa restrição, o sistema deve ser construído onde a latência da rede é minimizada. Outra maneira de mitigar as restrições de rede é co-localizar o sistema de negociação algorítmica com a troca de mercado. Uma vez que foi dito, a decisão de co-localizar apresenta restrições de processamento e espaço adicionais. Restrições regulatórias são introduzidas através de leis e regulamentos, que são principalmente países e câmbio específicos. Este é um fator cada vez mais importante na concepção e implementação de um sistema de negociação algorítmica porque a negociação algorítmica está se tornando mais regulada após o crash do Flash de 2018. Falando em geral, os ATs devem, pelo menos, cumprir as regras da SEC sobre a conformidade e integridade do sistema (SCI), as diretrizes da EMEA para sistemas de negociação algorítmica, os padrões de negociação algorítmica ISO 9000 (AT9000) e os padrões internacionais de relatório financeiro (IFRS) . Conclusão As arquiteturas de sistemas de negociação algorítmica são complicadas pelos rigorosos requisitos não funcionais esperados do sistema e pela ampla gama de requisitos regulatórios e de conformidade que regem a negociação automatizada. Devido a essas complexidades, deve-se considerar cuidadosamente o projeto e a implementação da arquitetura do sistema. Ao projetar uma arquitetura de negociação algorítmica de código aberto, espero apontar os requisitos arquitetônicos que muitas vezes são negligenciados no início do projeto de tais sistemas. Os requisitos identificados neste documento provavelmente não serão concluídos e inevitavelmente evoluirão ao longo do tempo. A segunda parcela deste artigo incluirá meu projeto para uma arquitetura de software que atenda os requisitos acima mencionados. Para mais informações sobre negociação algorítmica, sinta-se à vontade para me contatar. Para baixar uma cópia do meu relatório, clique aqui. Para obter uma lista completa de fontes, consulte o relatório. Os provedores de serviços da ATAAS incluem, mas não estão limitados a: Quantopian - os usuários definem estratégias de negociação quantitativas em Python e podem testá-las novamente. Os usuários também podem executar essas estratégias em mercados ativos. Quantopian recentemente recebeu um investimento de 6,7 milhões de dólares para ampliar seus serviços. EquaMetrics - usando os usuários do RIZM, criam visualmente novas estratégias de negociação algorítmicas, testam essas estratégias e executam essas estratégias em mercados ativos. A EquaMetrics anunciou recentemente um novo financiamento para a RIZM avaliado em 4,5 milhões de USD. Corretoras - algumas corretoras permitem que os comerciantes criem bots de negociação que executam automaticamente suas estratégias de negociação.

No comments:

Post a Comment