Trading System Software Design


Algorithmic 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, tenho projetado uma arquitetura de sistema que eu acredito que poderia satisfazer os requisitos arquitetônicos. Neste post descreverei a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42010 e do 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 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 de negociação, mas é completamente inoperante com as organizações de gerenciamento de riscos e sistemas de contabilidade. Este sistema atenderá às suas expectativas Arquitetura Conceitual Uma visão conceitual descreve conceitos de alto nível e mecanismos 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 utilizadas 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 vários 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 blueprint 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 para o 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. Também são usadas boas práticas, como o armazenamento de dados operacionais (ODS), o padrão de transformação e carga de extratos (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 acopladas de forma frouxa 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 vista incluem diagramas de componentes e diagramas de implementação. Abaixo está a 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 projeto 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 carimbos de data / hora para ignorar eventos viciados 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 As 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 a 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 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 atividade. Os 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í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 ao implementar um sistema de negociação algorítmica: CUDA - A NVidia possui uma série de produtos que suportam a modelagem de finanças computacionais de alto desempenho. Pode-se conseguir até 50x melhorias de desempenho na execução de simulações de Monte Carlo na GPU em vez da CPU. Apache River - River é um kit de ferramentas usado para desenvolver sistemas distribuídos. Ele foi usado como uma estrutura 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 empresas e sistemas 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 exigências organizacionais e regulamentares específicas, 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. Projeto de sistema de comércio 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 totalmente padrões de engenharia de sistemas de alto padrão e abordagens de gerenciamento de processos que foram bem sucedidos no software e nas indústrias de manufatura. Muitas das metodologias tradicionais de design de produtos, controle de qualidade, inovação sistemática e melhoria contínua encontrada em disciplinas de engenharia podem ser aplicadas ao campo financeiro. 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. Particular ênfase é dada ao backtesting e otimização, que são considerados as partes mais importantes na construção de um sistema de comércio. Esta pesquisa cria 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. A seção anterior deste tutorial analisou os elementos que compõem um sistema de negociação e discutiu as vantagens e desvantagens de usar esse sistema em um ambiente de negociação ao vivo. Nesta seção, desenvolvemos esse conhecimento examinando quais mercados são especialmente adequados para o sistema de negociação. Em seguida, teremos um olhar mais aprofundado sobre os diferentes gêneros de sistemas de negociação. Negociação em mercados diferentes Mercados de ações O mercado de ações é provavelmente o mercado mais comum para o comércio, especialmente entre os novatos. Nesta arena, grandes jogadores como Warren Buffett e Merrill Lynch dominam, e valor tradicional e estratégias de investimento de crescimento são de longe o mais comum. No entanto, muitas instituições têm investido significativamente na concepção, desenvolvimento e implementação de sistemas de negociação. Investidores individuais estão se juntando a esta tendência, embora lentamente. Aqui estão alguns fatores-chave para se manter em mente ao usar sistemas de negociação em mercados de ações: 13 A grande quantidade de ações disponíveis permite que os comerciantes testem sistemas em muitos tipos diferentes de ações - desde estoques extremamente voláteis de balcão (OTC) até Blue chips não voláteis. A eficácia dos sistemas de negociação pode ser limitada pela baixa liquidez de algumas ações, especialmente OTC e questões rosa folha. Comissões podem comer em lucros gerados por negócios bem sucedidos, e pode aumentar as perdas. OTC e ações de folha rosa muitas vezes incorrem taxas de comissão adicionais. Os principais sistemas de negociação utilizados são aqueles que procuram valor - isto é, sistemas que usam parâmetros diferentes para determinar se uma segurança é subvalorizada em comparação com seu desempenho passado, seus pares ou o mercado em geral. Mercados de câmbio O mercado de câmbio, ou forex. É o mercado maior e mais líquido do mundo. Os governos mundiais, bancos e outras grandes instituições comercializam trilhões de dólares no mercado cambial todos os dias. A maioria dos comerciantes institucionais no forex dependem de sistemas de negociação. O mesmo vale para os indivíduos no forex, mas alguns comércio com base em relatórios econômicos ou payouts. Here interesse são alguns fatores-chave a ter em mente ao usar sistemas de negociação no mercado forex: A liquidez neste mercado - devido ao enorme volume - Torna os sistemas de negociação mais precisos e eficazes. Não há comissões neste mercado, apenas spreads. Portanto, é muito mais fácil fazer muitas transações sem aumentar os custos. Em comparação com a quantidade de ações ou commodities disponíveis, o número de moedas para o comércio é limitado. Mas devido à disponibilidade de pares de moedas exóticas - ou seja, moedas de países menores - a faixa em termos de volatilidade não é necessariamente limitada. Os principais sistemas de negociação utilizados no forex são aqueles que seguem as tendências (um ditado popular no mercado é a tendência é seu amigo), ou sistemas que compram ou vendem em fugas. Isso ocorre porque os indicadores econômicos geralmente causam grandes movimentos de preços ao mesmo tempo. Futuros Equity, forex e mercados de commodities oferecem todos os futuros de negociação. Este é um veículo popular para o sistema de negociação por causa da maior quantidade de alavancagem disponível eo aumento da liquidez e volatilidade. No entanto, esses fatores podem cortar as duas maneiras: eles podem amplificar seus ganhos ou amplificar suas perdas. Por esta razão, o uso de futuros é geralmente reservado para avançados comerciantes de sistemas individuais e institucionais. Isso ocorre porque os sistemas de negociação capazes de capitalizar o mercado de futuros exigem personalização muito maior, usam indicadores mais avançados e levam muito mais tempo para serem desenvolvidos. Assim, o que é melhor Seu até o investidor individual para decidir qual mercado é mais adequado para o sistema de negociação - cada um tem suas próprias vantagens e desvantagens. A maioria das pessoas está mais familiarizada com os mercados de ações, e essa familiaridade torna o desenvolvimento de um sistema de negociação mais fácil. No entanto, forex é comumente pensado para ser a plataforma superior para executar sistemas de negociação - especialmente entre os comerciantes mais experientes. Além disso, se um comerciante decide capitalizar sobre alavancagem aumentada e volatilidade, a alternativa de futuros está sempre aberta. Em última análise, a escolha está nas mãos do desenvolvedor do sistema. Tipos de sistemas de negociação Trend-Seguindo sistemas O método mais comum de negociação do sistema é a tendência de seguir o sistema. Em sua forma mais fundamental, este sistema simplesmente espera por um movimento significativo de preços, então compra ou vende nessa direção. Este tipo de bancos de sistema na esperança de que esses movimentos de preços irá manter a tendência. Moving Average Systems Freqüentemente utilizado na análise técnica. Uma média móvel é um indicador que simplesmente mostra o preço médio de uma ação ao longo de um período de tempo. A essência das tendências é derivada dessa medida. A forma mais comum de determinar entrada e saída é um crossover. A lógica por trás disso é simples: uma nova tendência é estabelecida quando o preço cai acima ou abaixo de sua média de preços históricos (tendência). Aqui está um gráfico que traça tanto o preço (linha azul) ea MA de 20 dias (linha vermelha) da IBM: Breakout Systems O conceito fundamental por trás deste tipo de sistema é semelhante ao de um sistema de média móvel. A idéia é que quando uma nova alta ou baixa é estabelecida, o movimento de preços é mais provável que continue na direção da fuga. Um indicador que pode ser usado na determinação de breakouts é uma simples Bollinger Band overlay. Bandas Bollinger mostram médias de preços altos e baixos, e breakouts ocorrem quando o preço encontra as bordas das bandas. Desvantagens dos sistemas de tendência: Necessário tomada de decisão empírica - Ao determinar as tendências, há sempre um elemento empírico a considerar: a duração da A tendência histórica. Por exemplo, a média móvel pode ser nos últimos 20 dias ou nos últimos cinco anos, de modo que o desenvolvedor deve determinar qual é o melhor para o sistema. Outros fatores a serem determinados são os altos e baixos médios em sistemas breakout. Lagging Nature - As médias móveis e os sistemas breakout sempre estarão atrasados. Em outras palavras, eles nunca podem atingir o exato topo ou fundo de uma tendência. Isso inevitavelmente resulta em uma perda de lucros potenciais, que às vezes pode ser significativa. Efeito Whipsaw - Entre as forças de mercado que são prejudiciais ao sucesso dos sistemas de tendências, esta é uma das mais comuns. O efeito whipsaw ocorre quando a média móvel gera um sinal falso - ou seja, quando a média cai apenas no intervalo, em seguida, repentinamente inverte a direção. Isto pode levar a perdas maciças, a menos que sejam utilizadas técnicas eficazes de parar-perdas e de gestão de riscos. Sideways Markets - Trend-sistemas de acompanhamento são, por natureza, capaz de ganhar dinheiro apenas em mercados que realmente tendem. No entanto, os mercados também se movem lateralmente. Permanecendo dentro de um certo intervalo por um período prolongado de tempo. A volatilidade extrema pode ocorrer - Ocasionalmente, os sistemas que seguem tendências podem experimentar alguma volatilidade extrema, mas o profissional deve ficar com seu sistema. A incapacidade de fazê-lo resultará em falha garantida. Sistemas de contra-tendência Basicamente, o objetivo com o sistema de contra-tendência é comprar no mais baixo baixo e vender no mais alto. A principal diferença entre este e o sistema de tendências é que o sistema de contra-tendência não é auto-corrigido. Em outras palavras, não há tempo definido para sair de posições, e isso resulta em um potencial de downside ilimitado. Tipos de sistemas de contra-tendência Muitos tipos diferentes de sistemas são considerados sistemas de contra-tendência. A idéia aqui é comprar quando momentum em uma direção começa a desaparecer. Isso é mais freqüentemente calculado usando osciladores. Por exemplo, um sinal pode ser gerado quando estocásticos ou outros indicadores de força relativa caem abaixo de certos pontos. Existem outros tipos de sistemas de trading de contra-tendência, mas todos eles compartilham o mesmo objetivo fundamental - comprar baixo e vender alto. Desvantagens de Sistemas de Acompanhamento de Contrapartida: Necessário Tomada de Decisões - Por exemplo, um dos fatores que o desenvolvedor do sistema deve decidir são os pontos em que os indicadores de força relativa se desvanecem. Extrema Volatilidade Pode Ocorrer - Estes sistemas também podem experimentar alguma volatilidade extrema, e uma incapacidade de ficar com o sistema, apesar desta volatilidade irá resultar em falha garantida. Desvantagem ilimitada - Como mencionado anteriormente, há um potencial de descida ilimitado porque o sistema não é auto-corrigido (não há tempo definido para sair das posições). Conclusão Os principais mercados para os quais os sistemas de negociação são adequados são os mercados de ações, forex e futuros. Cada um desses mercados tem suas vantagens e desvantagens. Os dois principais gêneros de sistemas de negociação são os sistemas de tendência e de contra-tendência. Apesar de suas diferenças, ambos os tipos de sistemas, em seus estágios de desenvolvimento, requerem tomada de decisão empírica por parte do desenvolvedor. Além disso, esses sistemas estão sujeitos a extrema volatilidade e isso pode exigir alguma resistência - é essencial que o comerciante do sistema ficar com o seu sistema durante estes tempos. Na próxima parcela, bem dar uma olhada em como projetar um sistema comercial e discutir alguns dos softwares que os comerciantes do sistema usam para tornar suas vidas mais fáceis. Trading Systems: Projetando seu sistema - Parte 2

Comments