Saturday 9 September 2017

High Frequency Trading Systems Architecture


Design de sistema de negociação de alta freqüência e gerenciamento de processo Design de sistema de negociação de alta freqüência e gerenciamento de processo Conselheiro: 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 o conhecimento adquirido de disciplinas de engenharia pode melhorar a gestão de projetos e processos de sistemas de negociação de alta freqüê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 as teorias matemáticas e os modelos comerciais 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 por 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.) - Instituto de Tecnologia de Massachusetts, projeto do sistema e programa da gerência, 2009. Catalogado da versão do pdf da tese. Inclui referências bibliográficas (p.78-79). Palavras-chave: Projeto de Sistema e Programa de Gestão. A minha conta Existem apenas 3 blocos principais num sistema de negociação Algo. 2. Gerenciador de dados de mercado (por exemplo, manipulador FAST) 2. Módulo de Estratégia (por exemplo, estratégia crossOver) 3. Roteador de Pedidos (por exemplo, roteador FIX), você pode adicionar verificações de risco no Módulo de Estratégia ou no Módulo Router de Pedidos ou ambos. Assim seu fluxo de dados está correto, você deve ser bom para ir. Lembre-se que você está projetando um ATS para latência mínima, e adicionando mais camadas ou complexidade virá ao custo de latência. Arquitetura mínima ATS E se você adicionar os sinos e assobios, seria parecido com o seguinte: Se você também está interessado no nitty-gritty de 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 com estruturas sem lockless usando atomics. Existem algumas bibliotecas disponíveis para estruturas de dados sem lock (por exemplo, libcds, kit de concorrência, etc). C-11 suporta std :: atômico. E você deve se esforçar para usá-los também. Evite o que é feito no QuickFIX. Sua escrita para safetyflexibilityreusability como objeto (lock) criação e destruição é feito para cada invocação de qualquer mensagem para o roteador. Certamente não há maneira de escrever um código de latência sensível. Sem alocação de memória de tempo de execução. Runtime pathway 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 Threading, o modelo IO eo gerenciamento de memória devem ser projetados para colaborar entre si para obter o melhor desempenho geral. Isso vai contra o conceito OOP de acoplamento frouxo, mas é necessário evitar o custo de tempo de execução do polimorfismo dinâmico. Use Modelos. Na mesma linha, gostaria também de sugerir que você olhar para C templatization para obter flexibilidade de código. OSHardware otimização: Finalmente, você deve olhar para trabalhar com Linux RT Kernel e Solarflare placa de rede com driver OpenOnLoad para alcançar latência mínima. Você ainda pode olhar para isolar o processador central e executar seu programa nesse núcleo particular. E, finalmente, a API pública que você precisaria expor aos desenvolvedores de estratégia. Gostaria que este fosse o conjunto mínimo que encapsulasse toda a complexidade daquela troca particular. Class OrderRouter public: bool virtual sendNewOrd (OrderInfo) 0 virtual bool sendRplOrd (OrderInfo) 0 virtual bool sendCxlOrd (OrderInfo) 0 virtualMas isso significa que a classe OrderInfo precisa ter TODOS os detalhes exigidos pelo destinationexchange. Em geral, as trocas requerem o mesmo tipo de informação, mas à medida que avançamos e apoiamos mais destinações de intercâmbio, você se veria adicionando mais variáveis ​​nesta classe. A seguir estão os questionamentos importantes que você precisaria se perguntar: 1. Arquitetura multi-processo ou arquitetura Multi-Threaded. Seja para construir um processo monolítico com vários segmentos, ou escrever vários processos. O custo do processo múltiplo é a latência de passagem de mensagem, enquanto o custo para o processo único de vários threads é que qualquer falha pode derrubar todo o sistema. 2. Passagem de mensagens: enquanto você pode escolher entre uma infinidade de opções, você está restrito por consideração de latência. O IPC mais rápido seria memória compartilhada, mas então como você faria a sincronização gastar algum tempo com essas duas perguntas, porque eles seriam o bloco de construção em que sua arquitetura está. Edit: FIX e FAST Em relação ao protocolo popularstandard, FIX é para enviar ordens e FAST é para dados de mercado. Dito isto, a maioria das trocas tem seu próprio protocolo nativo que é mais rápido do que FIX, porque FIX é geralmente implementado em cima de seu protocolo nativo. Mas eles ainda suportam FIX acrescenta à velocidade de implantação. Por outro lado, enquanto o FIX é adotado pela maioria das trocas, o FAST não goza de tão ampla aceitação. Se houvesse alguma coisa, haveria apenas um punhado de câmbio adotando-a. A maioria deles ou enviar mais FIX-se (latência baixa), ou usar seu próprio protocolo binário nativo. por exemplo. Na Índia, NSE, BSE e MCXMCXSX, todas as três trocas dá-lhe protocolo FIX, além de protocolo nativo, mas só BSE dá-lhe FAST para dados de mercado. E isso também está mudando de FAST para nativo com a introdução de EOBI. Você pode extrapolar a mesma coisa para outras trocas. 3.9k Vistas middot Ver Upvotes middot Não é para reprodução Como John mencionado, OMS é o ponto crucial de qualquer plataforma de negociação e você deve começar a pesquisar sobre ele. Você teria que gastar tempo para determinar o ciclo de vida do comércio, eventos e recursos que deseja incorporar ao OMS e aqueles que você deseja que o Algo Engine manipule. A Metcetera oferece uma OMS de código aberto, mas não a usei pessoalmente, mas é uma das poucas no mercado. A próxima coisa que você deve olhar é fornecer uma interface para os dados de origem e empurrá-lo para fora. Isto é para um sistema de entrada de ordem de cliente para lançar os detalhes de ordem e motor de Algo para fonte dele. Um monte de Sell Side OMS039s usar uma combinação de programas proprietários escritos em JavaC usando FIX. O protocolo FIX permite que você se comunique em tempo real entre sistemas em um formato de mensagem pré-definida de amplificador simplificado estabelecido pela comunidade de protocolo FIX. Vá para a página inicial do FIX Protocol Organization gt para ler mais sobre o assunto. Também olha para Open Source FIX Engine. Uma implementação de código aberto do mecanismo FIX. Em seguida, vem uma interface de dados de mercado para fornecer informações de mercado de segurança em tempo real, dados que vão desde HighLowOpenClose até Melhor BidBest Ask, Volume total negociado, Último preço, Último volume, Cotações de lance, Pergunte cotações, etc. As informações que você procura realmente dependem do tipo de Estratégia que você deseja implementar. 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 uma ordem e rotas para um Exchange ou ECN. Desenvolvê-lo em casa poderia ser difícil, como você precisaria para trabalhar a adesão Exchange, certificar a sua plataforma e pagar uma taxa de adesão regular. Uma maneira mais barata é usar um corretor API (como IB) e encaminhar a ordem através deles. 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 propagação média, perfis VWAP, volume médio diário etc podem ser necessários para influenciar a tomada de decisão. Você pode tê-lo no banco de dados (preferido), mas se a velocidade da essência, em seguida, baixá-lo no cache do servidor quando você inicia o seu programa. Uma vez que seus sistemas periféricos são configurados, você pode começar a desenvolver seu programa algo da maneira que você quer que ele funcione. Esta infra-estrutura básica permite que você insira uma ordem de algo pai, ler dados de mercado, reagir aos sinais, mas gerar ordens filho e colocá-lo no livro de ordens de câmbio e dados históricos para influenciar a tomada de decisão. O OMS mantém a ligação entre a ordem de filho amper pai, seus status em tempo real e atualizações pelo algo ou plataforma de conectividade de troca. O que você quer implementar dentro do Algo é completamente até você. 2.3k Vistas middot Ver Upvotes middot Não para ReproduçãoHigh Frequency Trading HPC HFT como um serviço BSI tem estado na vanguarda dos sistemas High-Frequency High-Performance por muitos anos. É uma corrida armamentista e não é bom se armar com máquinas sub-par. O BSI implanta a arquitetura de maior latência e freqüência mais alta em todos os quatro cantos do globo. Se você está processando seus próprios algoritmos, simulando ou apenas exigindo a infra-estrutura de maior desempenho que existe - fale com a BSI hoje e use sua experiência para dar a sua empresa a vantagem. Se você precisa de servidor acelerado e over-clocked ou estações de trabalho, ou ter um requisito para redes de baixa latência, BSI tem o hardware certo para o seu dilema. Nós fornecemos a infra-estrutura de maior desempenho Sistemas de negociação de alta freqüência Rede de baixa latência Armazenamento em flash NICs de alta velocidade Comutação de largura de banda alta Serviços de co-localização Computação de alta frequência hospedada Estações de trabalho de negociação GPGPU computação paralelaInfoReach HiFREQ High Frequency Trading Software (HFT) Algorítmico que dá aos comerciantes a capacidade de implementar estratégias de HFT para ações, futuros, opções e negociação de divisas sem ter que investir tempo e recursos na construção e manutenção de sua própria infra-estrutura tecnológica. Ele fornece todos os componentes essenciais para facilitar o processamento de dezenas de milhares de ordens por segundo em latência sub-milésima de segundo. O HiFREQ pode ser usado independentemente como uma solução de negociação de caixa preta autônoma, ou como parte da plataforma de negociação InfoReach TMS para um sistema de negociação completo e de ponta a ponta. Sua arquitetura aberta e neutra permite que os usuários criem e implementem estratégias de negociação proprietárias e complexas, bem como algoritmos de acesso de corretores e outros provedores terceirizados. As encomendas podem ser encaminhadas para qualquer destino de mercado global através do mecanismo interno FIX Engine de baixa latência da InfoReachs. Multi-asset Ações globais, futuros, opções e controle de riscos de FX O HiFREQ fornece avaliação de risco de cada solicitação de pedido e garante conformidade com restrições de negociação específicas de empresa pré-configuradas. O corretor neutro HiFREQ conecta você aos vários corretores, trocas e ECNs. Monitoramento e controle centralizados Embora os componentes do HiFREQ possam ser distribuídos em vários locais geográficos, todas as funções de monitoramento e controle de desempenho da estratégia podem ser executadas a partir de um local remoto centralizado. O HiFREQ pode executar 20.000 ordens por segundo por conexão FIX única. Usando duas ou mais conexões FIX pode aumentar consideravelmente o throughput. Latência baixa Latência de ida e volta de sub-milissegundos medida a partir do ponto HiFREQ obtém um relatório de execução FIX até o ponto em que o HiFREQ conclui o envio de uma mensagem de ordem FIX. Distribuído e escalável Para aumentar a eficiência e o desempenho das estratégias de negociação, seus componentes podem ser projetados para serem executados simultaneamente. Os componentes de estratégia também podem ser implementados em vários servidores que podem ser colocados em vários locais de execução. Guia de programadores Java

No comments:

Post a Comment