Wednesday 28 March 2018

Banco de dados do sistema de negociação


Banco de dados do sistema de negociação
Obter através da App Store Leia esta publicação em nosso aplicativo!
Cálculos do sistema de negociação de ações via SQL.
Precisa calcular um portfólio de mercado de ações com base em negócios em um banco de dados. O cálculo que eu procuro fazer via SQL é o preço médio, a taxa de retorno, o valor do portfólio, etc.
Eu não consegui fazê-lo com o SQL, então acho que talvez seja necessário script do resultado, então qualquer ajuda que tenha sido apreciada.
Observe que o preço atual é codificado (38), uma vez que não é fornecido, ele precisaria ser fornecido em outra tabela que seria unida à tabela de estoques, mas o princípio é o mesmo.

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 17 de maio de 2018.
Na negociação algorítmica, o holofote geralmente brilha no componente do modelo alfa do sistema comercial completo. Esta é a parte do sistema que gera os sinais de negociação, antes da filtração por um sistema de gerenciamento de risco ou construção de carteira. Como tal, os comerciantes de algo geralmente gastam uma parcela significativa de seu tempo de pesquisa refinando o modelo alfa para gerar a maior relação Sharpe de backtested antes de colocar seu sistema em produção.
No entanto, um modelo alfa é tão bom quanto os dados que são alimentados a ele. Este conceito é bem resumido pelo antigo ditado da ciência da computação de "lixo, lixo fora". É crucial que dados precisos e oportunos sejam utilizados para alimentar o modelo alfa, caso contrário os resultados serão, na melhor das hipóteses, ruins ou, na pior das hipóteses, completamente incorretos, levando a grandes perdas se o sistema for posto em produção.
Neste artigo, quero discutir questões relacionadas com a aquisição e fornecimento de dados precisos atempados para um sistema de backtesting de estratégia algorítmica e, finalmente, um mecanismo de execução comercial. Em particular, estudaremos como obter dados financeiros, como armazená-lo, como limpá-lo e como exportá-lo. No setor financeiro, esse tipo de serviço de dados é conhecido como banco de dados mestre de valores mobiliários.
O que é um Mestre de Valores?
Um mestre de valores mobiliários é um banco de dados de toda a organização que armazena dados fundamentais, de preços e transacionais para uma variedade de instrumentos financeiros em classes de ativos. Ele fornece acesso a essas informações de forma consistente para ser usado por outros departamentos, como gerenciamento de riscos, compensação / liquidação e negociação comercial.
Em grandes organizações, uma série de instrumentos e dados serão armazenados. Aqui estão alguns dos instrumentos que podem ser de interesse para uma empresa:
Equities Equity Options Indices Taxas de juros cambiais Futures Commodities Bonds - Derivados governamentais e corporativos - Caps, Floors, Swaps.
Os bancos de dados mestre de valores mobiliários geralmente possuem equipes de desenvolvedores e especialistas em dados que garantem alta disponibilidade dentro de uma instituição financeira. Embora isso seja necessário em grandes empresas, no nível de varejo ou em um fundo pequeno, um mestre de valores mobiliários pode ser muito mais simples. Na verdade, embora os grandes mestres de valores mobiliários façam uso de banco de dados e sistemas de análise empresariais caros, é possivel usar software de código aberto para fornecer o mesmo nível de funcionalidade, assumindo um sistema bem otimizado.
Quais conjuntos de dados são usados?
Para o comerciante algorítmico de varejo ou o pequeno fundo quantitativo, os conjuntos de dados mais comuns são o preço histórico intradiário de dia-a-dia para ações, índices, futuros (principalmente commodities ou renda fixa) e câmbio (divisas). Para simplificar esta discussão, nos concentraremos apenas nos dados de fim de dia (EOD) para ações, ETFs e índices de ações. Artigos posteriores discutirão a adição de dados de freqüência mais altos, classes de ativos adicionais e dados de derivativos, que possuem requisitos mais avançados.
Os dados EOD para ações são fáceis de obter. Há uma série de serviços que fornecem acesso gratuitamente através de APIs disponíveis na web:
É direto baixar manualmente dados históricos para valores mobiliários individuais, mas torna-se demorado se muitas ações precisam ser baixadas diariamente. Assim, um componente importante do nosso mestre de valores mobiliários será atualizar automaticamente o conjunto de dados.
Outra questão é o período de observação. Quão longe no passado precisamos seguir os nossos dados? Isso será específico para os requisitos da sua estratégia de negociação, mas existem certos problemas que abrangem todas as estratégias. O mais comum é a mudança de regime, que muitas vezes é caracterizada por um novo ambiente regulatório, períodos de volatilidade maior / menor ou mercados de tendências a longo prazo. Por exemplo, uma estratégia de longo prazo curto-direcional de tendência / impulso provavelmente funcionará muito bem de 2000-2003 ou 2007-2009. No entanto, teria tido um período difícil entre 2003-2007 ou 2009 até o presente.
Minha regra geral é obter a maior quantidade possível de dados, especialmente para dados EOD, onde o armazenamento é barato. Só porque os dados existem no seu mestre de segurança, não significa que ele deve ser utilizado. Há ressalvas em torno do desempenho, uma vez que as tabelas de banco de dados maiores significam tempos de consulta maiores (veja abaixo), mas os benefícios de ter mais pontos de amostra geralmente superam quaisquer problemas de desempenho.
Tal como acontece com todos os dados financeiros, é imperativo estar ciente de erros, tais como preços elevados / baixos incorretos ou viés de sobrevivência, que discuti extensivamente no QuantStart (veja aqui).
O que é usado para armazenar dados?
Existem três formas principais de armazenar dados financeiros. Todos possuem vários graus de acesso, desempenho e capacidades estruturais. Consideraremos cada um deles.
Armazenamento de arquivos planos.
O armazenamento de dados mais simples para dados financeiros e a forma como você provavelmente receberá os dados de qualquer fornecedor de dados, é o formato de arquivo plano. Os arquivos planos geralmente fazem uso do formato Variável Comma (CSV), que armazena uma matriz de dados bidimensional como uma série de linhas, com dados de coluna separados por um delimitador (muitas vezes uma vírgula, mas pode ser espaço em branco, como como um espaço ou guia). Para os dados de preços do EOD, cada linha representa um dia de negociação através do paradigma do OHLC (ou seja, os preços no aberto, alto, baixo e próximo do período de negociação).
A vantagem dos arquivos planos é sua simplicidade e capacidade de ser fortemente compactada para arquivamento ou download. As principais desvantagens residem na falta de capacidade de consulta e mau desempenho para a iteração em grandes conjuntos de dados. SQLite e Excel atenuam alguns desses problemas, fornecendo certas capacidades de consulta.
Document Stores / NoSQL.
As lojas de documentos / bases de dados NoSQL, embora certamente não sejam um novo conceito, ganharam destaque nos últimos anos devido ao seu uso em empresas de "escala na web", como Google, Facebook e Twitter. Eles diferem substancialmente dos sistemas RDBMS, na medida em que não existe um conceito de esquemas de tabela. Em vez disso, existem coleções e documentos, que são as analogias mais próximas às tabelas e registros, respectivamente. Existe uma ampla taxonomia de lojas de documentos, cuja discussão está bem fora deste artigo! No entanto, algumas das lojas mais populares incluem MongoDB, Cassandra e CouchDB.
As lojas de documentos, em aplicações financeiras, são principalmente adequadas para dados fundamentais ou meta. Os dados fundamentais para os ativos financeiros são de várias formas, como ações corporativas, declarações de ganhos, registros da SEC, etc. Assim, a natureza sem esquemas dos DBs NoSQL é adequada. No entanto, os bancos de dados do NoSQL não são bem projetados para séries temporais, como dados de preços de alta resolução e, portanto, não os consideraremos mais neste artigo.
Sistemas de gerenciamento de banco de dados relacionais.
Um sistema de gerenciamento de banco de dados relacional (RDBMS) faz uso do modelo relacional para armazenar dados. Esses bancos de dados são particularmente adequados aos dados financeiros porque diferentes "objetos" (como trocas, fontes de dados, preços) podem ser separados em tabelas com relacionamentos definidos entre eles.
O RDBMS faz uso do Structured Query Language (SQL) para realizar consultas de dados complexas em dados financeiros. Exemplos de RDBMS incluem Oracle, MySQL, SQLServer e PostgreSQL.
As principais vantagens do RDBMS são a simplicidade de instalação, a independência da plataforma, a facilidade de consulta, a facilidade de integração com os principais softwares de back-up e as capacidades de alto desempenho em grande escala (embora alguns possam argumentar que o último não é o caso!). Suas desvantagens são muitas vezes devido à complexidade da personalização e às dificuldades de alcançar o referido desempenho sem o conhecimento subjacente de como os dados RDBMS são armazenados. Além disso, eles possuem esquemas semi-rígidos e, portanto, os dados geralmente precisam ser modificados para se adequarem a esses projetos. Isso é diferente dos armazenamentos de dados NoSQL, onde não há esquema.
Para todos os futuros artigos de implementação de preços históricos no QuantStart, usaremos o RDBMS do MySQL. É gratuito, de código aberto, de plataforma cruzada, altamente robusto e seu comportamento em escala está bem documentado, o que o torna uma escolha sensata para o trabalho de quant.
Como os dados históricos são estruturados?
Há um corpo significativo de teoria e pesquisa acadêmica realizada no domínio da informática para o design ideal para lojas de dados. No entanto, não vamos entrar em detalhes demais, pois é fácil perder-se em minúcias! Em vez disso, apresentarei um padrão comum para a construção de um mestre de segurança de ações, que você pode modificar, conforme você vê, para suas próprias aplicações.
A primeira tarefa é definir nossas entidades, que são elementos dos dados financeiros que eventualmente serão mapeados para tabelas no banco de dados. Para um banco de dados mestre de ações, prevejo as seguintes entidades:
Trocas - Qual é a fonte original final dos dados? Vendedor - De onde é obtido um determinado ponto de dados? Instrumento / Ticker - O ticker / símbolo do patrimônio ou índice, juntamente com informações corporativas da empresa ou fundo subjacente. Preço - O preço real de uma determinada segurança em um determinado dia. Ações Corporativas - A lista de todas as divisões de ações ou ajustes de dividendos (isso pode levar a uma ou mais tabelas), necessárias para ajustar os dados de preços. Feriados nacionais - Para evitar classificar mal os feriados comerciais como erros de dados ausentes, pode ser útil armazenar feriados nacionais e referências cruzadas.
Há problemas importantes em relação ao armazenamento de tickers canônicos. Eu posso atestar isso a partir de experiência de primeira mão em um fundo de hedge que lida com este problema exato! Diferentes vendedores usam métodos diferentes para resolver os tickers e, assim, combinando múltiplas fontes para obter precisão. Além disso, as empresas ficam em falência, estão expostas à atividade de M & A (ou seja, se tornam adquiridas e mudam nomes / símbolos) e podem ter várias classes de ações negociadas publicamente. Muitos de vocês não terão que se preocupar com isso porque seu universo de tickers será limitado aos constituintes do índice maior (como o S & P500 ou o FTSE350).
Como os dados são avaliados quanto à precisão?
Os dados de preços históricos dos fornecedores são propensos a muitas formas de erro:
Ações Corporativas - Manipulação incorreta de divisões de ações e ajustes de dividendos. É preciso ter certeza absoluta de que as fórmulas foram implementadas corretamente. Spikes - Pontos de preços que excedem em grande parte certos níveis históricos de volatilidade. É preciso ter cuidado aqui, pois esses pontos ocorrem - veja o May Flash Crash para um exemplo assustador. Spikes também podem ser causados ​​por não considerar as divisões de estoque quando ocorrem. Os scripts do filtro Spike são usados ​​para notificar os comerciantes de tais situações. Agregação OHLC - Os dados OHLC gratuitos, como o Yahoo / Google, são particularmente propensos a situações de "agregação de marca ruim", onde trocas menores transpõem pequenos negócios bem acima dos preços de câmbio "principais" do dia, levando a maxima / minima excessivamente inflados Uma vez agregado. Isto é menos um "erro" como tal, mas é mais um problema a ser cauteloso. Dados faltantes - Os dados em falta podem ser causados ​​pela falta de trocas em um período de tempo específico (comum em dados de resolução de segundo / minuto de pequenas capitalizações ilíquidas), por ferias comerciais ou simplesmente como um erro no sistema de intercâmbio. Os dados em falta podem ser preenchidos (isto é, preenchidos com o valor anterior), interpolados (linear ou de outra forma) ou ignorados, dependendo do sistema de negociação.
Muitos desses erros dependem do julgamento manual, a fim de decidir como proceder. É possível automatizar a notificação de tais erros, mas é muito mais difícil automatizar sua solução. Por exemplo, é preciso escolher o limite para ser informado sobre picos - quantos desvios padrão usar e em que período de look-back? Muito alto um stdev vai perder alguns picos, mas muito baixo e muitos anúncios de notícias incomuns levará a falsos positivos. Todas essas questões exigem um julgamento avançado do comerciante do quant.
Também é necessário decidir como corrigir erros. Os erros devem ser corrigidos logo que sejam conhecidos e, em caso afirmativo, deve ser realizada uma auditoria? Isso exigirá uma tabela extra no banco de dados. Isso nos leva ao tópico de recheio, o que é uma questão particularmente insidiosa para backtesting. Refere-se à correção automática de dados incorretos a montante. Se o seu fornecedor de dados corrigir um erro histórico, mas uma estratégia de negociação de backtested está em produção com base na pesquisa de seus dados incorretos anteriores, as decisões precisam ser feitas em relação à eficácia da estratégia. Isso pode ser um pouco atenuado ao estar plenamente consciente das suas métricas de desempenho da estratégia (em particular, a variação nas suas características de perda / perda para cada comércio). As estratégias devem ser escolhidas ou projetadas de tal forma que um único ponto de dados não possa distorcer o desempenho da estratégia em grande medida.
Como esses processos são automatizados?
O benefício de escrever scripts de software para realizar o download, armazenamento e limpeza dos dados é que os scripts podem ser automatizados através de ferramentas fornecidas pelo sistema operacional. Em sistemas baseados em UNIX (como Mac OSX ou Linux), pode-se usar o crontab, que é um processo em execução contínua que permite que scripts específicos sejam executados em horários específicos ou períodos regulares. Existe um processo equivalente no MS Windows conhecido como o Agendador de Tarefas.
Um processo de produção, por exemplo, pode automatizar o download de todos os preços de fim de dia S & P500 logo que sejam publicados através de um fornecedor de dados. Em seguida, executará automaticamente os dados faltantes acima mencionados e scripts de filtração de espiga, alertando o comerciante por e-mail, SMS ou alguma outra forma de notificação. Neste ponto, todas as ferramentas de backtesting terão automaticamente acesso a dados recentes, sem que o comerciante tenha que levantar um dedo! Dependendo de se o seu sistema comercial está localizado em uma área de trabalho ou em um servidor remoto, você pode escolher no entanto ter um processo semi-automatizado ou totalmente automatizado para essas tarefas.
Como os dados são fornecidos ao software externo?
Uma vez que os dados são atualizados automaticamente e residindo no RDBMS, é necessário levá-lo ao software backtesting. Esse processo será altamente dependente de como seu banco de dados está instalado e se seu sistema comercial é local (ou seja, em um computador desktop) ou remoto (como, por exemplo, com um servidor de troca co-localizado).
Uma das considerações mais importantes é minimizar a Entrada / Saída excessiva (E / S), pois isso pode ser extremamente caro tanto em termos de tempo e dinheiro, assumindo conexões remotas onde a largura de banda é dispendiosa. A melhor maneira de abordar esse problema é apenas mover dados em uma conexão de rede que você precisa (através de consulta seletiva) ou exportar e compactar os dados.
Muitos RDBMS suportam tecnologia de replicação, que permite que um banco de dados seja clonado em outro sistema remoto, geralmente com um grau de latência. Dependendo da sua configuração e quantidade de dados, isso pode ser apenas na ordem dos minutos ou segundos. Uma abordagem simples é replicar um banco de dados remoto em uma área de trabalho local. No entanto, lembre-se de que os problemas de sincronização são comuns e demorados para corrigir!
Vou tentar discutir algumas situações de exemplo abaixo, mas há muitas maneiras de abordar esse problema e eles serão altamente específicos para sua configuração individual:
Se você estiver usando o MySQL, você pode usar uma linguagem de script de código aberto, como o Python (através da biblioteca MySQLdb ou o ORM SQLAlchemy) para se conectar ao banco de dados e executar consultas contra ele.
Bibliotecas de análise de dados mais recentes, como os pandas, permitem acesso direto ao MySQL (veja este tópico para um exemplo).
Você também pode usar seu idioma / ambiente favorito (C ++, C #, Matlab) e um link ODBC para se conectar a uma instância do MySQL.
MS SQLServer.
O SQLServer foi projetado para ser facilmente conectado a linguagens MS, como C # e Visual Basic via LINQ ORM. Você também pode se conectar ao SQLServer com o Python, via pyODBC.
Há claramente muitas outras combinações de armazenamento de dados e ambiente de backtesting. No entanto, deixarei a discussão dessas configurações para artigos posteriores!
Próximos passos.
Em futuros artigos, vamos discutir os detalhes técnicos da implementação dos títulos de valores mobiliários. Em particular, vamos instalar o MySQL, configurá-lo para obter dados de preços e obter dados do EOD das finanças do Yahoo / Google e explorá-lo através da biblioteca de análise de dados de pandas.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

QUANTLABS.
Quant Resources for Traders.
O SQL Server é o banco de dados correto para o meu sistema de negociação automatizado interno em relação ao Postgres SQL de código aberto?
O SQL Server é o banco de dados correto para o meu sistema de negociação automatizado interno em relação ao Postgres SQL de código aberto?
Como estou em minhas últimas etapas do sistema de comércio interno, preciso começar a olhar para um ambiente de produção. O meu Matlab 2018a ganhou graça para os scripts, mas só se conecta à PostGres por qualquer motivo. Estarei a degradar o Matlab para um PC antigo para uma caixa dedicada para todo esse sistema de produção. Isso também move que a versão Matlab poderá se conectar ao SQL Server. Eu também poderei usar meu esquema de banco de dados a partir deste curso que eu ofereço, que está incluído. Vá aqui para saber mais sobre isso.
(Verifique a seção do banco de dados)
Como resultado, estarei portando os scripts para se conectar ao banco de dados do SQL Server com este esquema mencionado. Também poderei aproveitar o front-end do pacote de gráficos de demonstração encontrado em minhas demonstrações do DevExpress no curso acima.
Após 4 anos de análise de várias tecnologias de banco de dados, incluindo NOSQL, o SQL Server sempre foi meu banco de dados favorito para armazenar dados comerciais.
Eu também me perguntei sobre o desempenho de algo como SQL Server vs PostGres. Quanto a 2018, isso é o que eu encontrei:
Aqui estão alguns links:
Mais antigo de 2018:
Preocupações com o PostGres resolvido: consultas paralelas, consulta somente de índice.
Para este ano, em 2018: (Lembre-se que isso nem sequer inclui as métricas do SQL Server 2018 com recurso de memória OLTP!)
Quando executado sozinho, o SQL Server é muito melhor do que o PostgreSQL, mas como eu disse antes, não é nosso objetivo e pode ser por muitos motivos, por exemplo, uma melhor implementação da loja de DVD ou melhores drivers. Mas ainda assim, estou impressionado por ver essa diferença. O teste do PostgreSQL no Linux está além do escopo da nossa análise, mas tenho certeza que isso melhorará muito.
Outras notas de:
Nossos chapéus para a Microsoft e Oracle para desempenho superior em toda a placa. Curiosamente, ambos vieram com planos de consulta ingênuos para a consulta ingênua, digitalizando ambas as tabelas antes de se juntarem:
Se você está interessado em qualquer uma dessas tecnologias e aprende sobre isso, eu oferecerei meu serviço Quant Elite para aprender mais sobre como implementar rapidamente essas tecnologias em uma plataforma de negociação ao vivo com os componentes inteligentes para que você possa correr e correr FAST!
OBSERVAÇÃO Eu agora posto minhas ALERTAS DE NEGOCIAÇÃO na minha conta pessoal de FACEBOOK e TWITTER. Não se preocupe porque não publico vídeos de gato estúpidos ou o que eu como!

Visualizador de dados do Sistema de Comércio de Emissões da UE (ETS).
Mais Informações.
Para baixar dados:
O manual do usuário fornece instruções detalhadas sobre como usar o visualizador de dados.
Fonte de dados:
Subsídios alocados gratuitamente (1.1, 1.1.1, 1.1.2 e 1.1.3) Emissões verificadas (2) Unidades rendidas (4, 4.1, 4.2 e 4.3)
Dados extraídos no nível da entidade e agregados a nível nacional e por tipo de atividade.
Subsídios leiloados ou vendidos (EUAs e EUAAs) (1.3)
Dados baseados em calendários de leilões e resultados de leilões publicados pelas plataformas de leilão para licenças de emissão no ETS da UE.
Agência Europeia do Ambiente:
Correção de licenças livremente alocadas (1.2) Estimativas de licenças e emissões 2005-2018 para refletir o alcance atual do ETS (3)
Dados baseados em informações dos Estados Membros e da Comissão Européia.
O EEE produz estimativas de emissões e subsídios para 2005-2018, a fim de refletir o escopo atual do ETS da UE (terceiro período comercial de 2018 a 2020). Isto porque o alcance do RCLE da UE evoluiu desde a sua criação em 2005 (inclusão de novos países, actividades e gases), pelo que as tendências das emissões e as licenças atribuídas directamente com base na EUTL não são totalmente consistentes ao longo do tempo. Levar em consideração essas estimativas é relevante para análises de tendências ao longo de vários anos, em particular em todos os períodos de negociação.
Informação adicional.
As informações do RCLE 1. Total das licenças de emissão alocadas, 1.2 Correcção das licenças livremente atribuídas (não reflectidas na EUTL), 1.3 Os subsídios leiloados ou vendidos só estão disponíveis a nível nacional. Os dados podem ser divididos entre aviação (tipo de atividade 10) e instalações estacionárias (tipos de atividade 20-99). Não é possível dividir ainda mais o tipo de atividade. Esses dados são, portanto, apresentados somente quando os seguintes parâmetros são selecionados:
Informações do ETS da UE: "10 Aviação" ou "20-99 Todas as instalações estacionárias" (seleção padrão) Tamanho: "Todos os tamanhos" (seleção padrão) Entidade ativa: "Todas as entidades" (seleção padrão)
A lista de países inclui leilões NER 300. Isto é para refletir o leilão, a nível da UE, de um certo número de subsídios, como parte do programa de financiamento "NER 300" para projetos inovadores de demonstração de energia com baixa emissão de carbono. Essas subsídios são visíveis ao selecionar "Leilões NER 300" na categoria "País".
A informação do ETS sobre unidades rendidas está disponível por tipo de unidades (4.1 (EUAs e EUAAs), 4.2 (RCEs) e 4.3 (UREs)) até 2018. A partir de 2018, apenas o total de unidades rendidas (4) está disponível.
As informações sobre o tipo de actividade das entidades abrangidas pelo RCLE da UE baseiam-se na classificação EUTL (que difere da nomenclatura da UNFCCC para categorias de fontes de emissão de gases com efeito de estufa ou códigos da NACE). Foi ainda mais harmonizado pelo EEE, a fim de fundir códigos de tipo de atividade usados ​​nos primeiros e segundos períodos de negociação (e ainda utilizados por um número significativo de instalações) com novos códigos de tipo de atividade formalmente em uso no período comercial atual. Esta harmonização foi realizada com base em informações adicionais disponíveis sobre a atividade real das instalações.
Conteúdo Relacionado.
Com base em dados.
Informações relacionadas.
Permalink.
Versões mais antigas.
Cobertura geográfica.
Cobertura temporal.
Ações de documentos.
Compartilhe com os outros.
PDF gerado em 16 de janeiro de 2018, às 14h45.
Kongens Nytorv 6.
1050 Copenhagen K.
Telefone: +45 3336 7100.
Este site usa cookies.
Usamos cookies para registrar algumas configurações de preferências e analisar como os visitantes usam nosso site. Os cookies não contêm informações pessoais sobre você. Se desejar, veja como excluir / desativar cookies em seu navegador, mas o nosso site pode não funcionar corretamente. Veja também nossa política de privacidade.

Como funcionam os sistemas comerciais.
A negociação automatizada algorítmica ou a negociação algorítmica foi no centro do mundo comercial há mais de uma década. A porcentagem de volumes atribuídos à negociação automatizada algorítmica teve um aumento significativo na última década. Como resultado, tornou-se um mercado altamente competitivo que é fortemente dependente da tecnologia. Conseqüentemente, a arquitetura básica de sistemas de negociação automatizados que executam estratégias algorítmicas sofreu grandes mudanças ao longo da última década e continua a fazê-lo. Para as empresas, especialmente aquelas que utilizam sistemas de negociação de alta freqüência, tornou-se uma necessidade de inovar em tecnologia para competir no mundo do comércio algorítmico, tornando assim a comercialização de algoritmos um foco de avanços nas tecnologias de computadores e redes.
Nesta publicação, desmistificaremos a arquitetura por trás dos sistemas de negociação automatizada para nossos leitores. Comparamos a nova arquitetura dos sistemas de negociação automatizados com a arquitetura comercial tradicional e compreendemos alguns dos principais componentes por trás desses sistemas.
Arquitetura Tradicional.
Qualquer sistema comercial, conceitualmente, não passa de um bloco computacional que interage com a troca em dois fluxos diferentes.
Recebe dados de mercado Envia solicitações de pedidos e recebe respostas da troca.
Os dados de mercado que são recebidos geralmente informam o sistema do último livro de pedidos. Pode conter algumas informações adicionais, como o volume negociado até o momento, o último preço e quantidade negociada para um script. No entanto, para tomar uma decisão sobre os dados, o comerciante pode precisar analisar valores antigos ou derivar determinados parâmetros do histórico. Para atender a isso, um sistema convencional teria um banco de dados histórico para armazenar os dados do mercado e as ferramentas para usar esse banco de dados. A análise também envolveria um estudo das tradições passadas pelo comerciante. Daí, outro banco de dados para armazenar as decisões comerciais também. Por último, mas não menos importante, uma interface GUI para o comerciante visualizar todas essas informações na tela.
Todo o sistema comercial pode agora ser dividido em.
A troca (s) - o mundo externo O servidor Mercado Data receptor Comercializar dados do mercado Armazenar ordens geradas pelo usuário Aplicação Pegue as entradas do usuário, incluindo as decisões de negociação Interface para visualizar as informações, incluindo os dados e ordens Um gerente de pedidos enviando ordens para o troca.
Nova arquitetura.
A arquitetura tradicional não pôde aumentar as necessidades e demandas do comércio automatizado com DMA. A latência entre a origem do evento para a geração da ordem foi além da dimensão do controle humano e entrou nos reinos de milissegundos e microssegundos. Assim, as ferramentas para lidar com dados do mercado e sua análise precisava se adaptar de acordo. O gerenciamento de pedidos também precisa ser mais robusto e capaz de lidar com mais pedidos por segundo. Uma vez que o período de tempo é tão pequeno em comparação com o tempo de reação humano, o gerenciamento de riscos também precisa lidar com pedidos em tempo real e de forma completamente automática.
Por exemplo, mesmo que o tempo de reação para uma ordem seja de 1 milissegundo (o que é bastante comparado às latências que vemos hoje), o sistema ainda é capaz de fazer 1000 decisões comerciais em um único segundo. Isso significa que cada uma dessas 1000 decisões comerciais deve passar pelo gerenciamento de riscos no mesmo segundo para alcançar a troca. Este é apenas um problema de complexidade. Uma vez que a arquitetura agora envolve lógica automatizada, 100 comerciantes agora podem ser substituídos por um único sistema de negociação automatizado. Isso adiciona escala ao problema. Então, cada uma das unidades lógicas gera 1000 pedidos e 100 dessas unidades significam 100.000 pedidos a cada segundo. Isso significa que a tomada de decisão e a peça de envio de pedidos precisam ser muito mais rápidas do que o receptor de dados de mercado, de modo a combinar a taxa de dados.
Por isso, o nível de infra-estrutura que este módulo exige deve ser muito superior em comparação com o de um sistema tradicional (discutido na seção anterior). Daí o motor que executa a lógica da tomada de decisão, também conhecido como o mecanismo "Processamento de eventos complexos", ou CEP, mudou-se do aplicativo para o servidor. A camada de aplicação, agora, é pouco mais do que uma interface de usuário para visualizar e fornecer parâmetros para o CEP.
O problema da escala também leva a uma situação interessante. Digamos que 100 lógicas diferentes estão sendo executadas em um evento de dados de mercado único (como discutido no exemplo anterior). No entanto, pode haver peças comuns de cálculos complexos que precisam ser executados para a maioria das 100 unidades lógicas. Por exemplo, cálculo de gregos para opções. Se cada lógica funcionasse de forma independente, cada unidade faria o mesmo cálculo grega que iria desnecessariamente usar os recursos do processador. Para otimizar a redundância do cálculo, os cálculos redundantes complexos geralmente são mantidos em um mecanismo de cálculo separado que fornece os gregos como uma entrada para o CEP.
Embora a camada de aplicação seja principalmente uma visão, algumas das verificações de risco (que agora são operações com fome de recursos devido ao problema da escala), podem ser descarregadas para a camada de aplicação, especialmente aquelas que estão relacionadas com sanidade de entradas de usuários como o dedo gordo erros. O resto das verificações de risco são realizadas agora por um Sistema de Gerenciamento de Riscos (RMS) separado no Gerenciador de Pedidos (OM), imediatamente antes de liberar um pedido. O problema da escala também significa que, quando anteriormente, havia 100 comerciantes diferentes gerenciando seus riscos, agora existe apenas um sistema RMS para gerenciar riscos em todas as unidades / estratégias lógicas. No entanto, algumas verificações de risco podem ser específicas para certas estratégias e alguns talvez precisem ser feitos em todas as estratégias. Daí o próprio RMS envolve, RMS de nível de estratégia (SLRMS) e RMS global (GRMS). Também pode envolver uma UI para visualizar o SLRMS e o GRMS.
Emergência de protocolos para sistemas de negociação automatizados.
Com inovações, as necessidades são necessárias. Uma vez que a nova arquitetura foi capaz de dimensionar para muitas estratégias por servidor, surgiu a necessidade de se conectar a vários destinos a partir de um único servidor. Assim, o gerenciador de pedidos hospedou vários adaptadores para enviar pedidos para vários destinos e receber dados de várias trocas. Cada adaptador atua como um intérprete entre o protocolo que é entendido pela troca e o protocolo de comunicação dentro do sistema. Intercâmbios múltiplos significam adaptadores múltiplos.
No entanto, para adicionar uma nova troca ao sistema, um novo adaptador deve ser projetado e conectado à arquitetura, uma vez que cada troca segue seu protocolo apenas otimizado para recursos fornecidos pela troca. Para evitar esse incômodo de adição de adaptador, os protocolos padrão foram projetados. O mais proeminente entre eles é o protocolo FIX (Financial Information Exchange) (veja nossa publicação na introdução ao protocolo FIX). Isso não só torna gerenciável conectar-se a destinos diferentes, mas também reduzir drasticamente o mercado para quando se conectar a um novo destino. Para leitura adicional: Conectando o FXCM ao FIX, um tutorial detalhado.
A presença de protocolos padrão facilita a integração com fornecedores de terceiros, também para análises ou feeds de dados de mercado. Como resultado, o mercado torna-se muito eficiente, pois a integração com um novo destino / fornecedor não é mais uma restrição.
Além disso, a simulação torna-se muito fácil, pois receber dados do mercado real e enviar ordens para um simulador é apenas uma questão de usar o protocolo FIX para se conectar a um simulador. O próprio simulador pode ser construído internamente ou adquirido de um fornecedor de terceiros. Os dados gravados de forma semelhante apenas podem ser reproduzidos com os adaptadores sendo agnósticos para saber se os dados estão sendo recebidos do mercado ao vivo ou de um conjunto de dados gravados.
Emergência de arquiteturas de baixa latência.
Com os blocos de construção de um sistema de negociação algorítmica no local, as estratégias otimizadas na capacidade de processar enormes quantidades de dados em tempo real e tomar decisões comerciais rápidas. Mas com o advento de protocolos de comunicação padrão como FIX, a barreira de entrada de tecnologia para configurar uma mesa de negociação algorítmica, tornou-se menor e, portanto, mais competitivo. À medida que os servidores obtiveram mais memória e freqüências de clock mais altas, o foco mudou para reduzir a latência para a tomada de decisões. Ao longo do tempo, reduzir a latência tornou-se uma necessidade por muitas razões, como:
A estratégia faz sentido apenas em um ambiente de baixa latência. Sobrevivência dos mais aptos - os concorrentes escolhem você se você não for rápido o suficiente.
O problema, no entanto, é que a latência é realmente um termo abrangente que engloba vários atrasos diferentes. Para quantificar todos eles em um termo genérico, geralmente não faz muito sentido. Embora seja muito fácil de entender, é bastante difícil quantificar. Por isso, torna-se cada vez mais importante como o problema da redução da latência é abordado.
Se olharmos para o ciclo de vida básico,
Um pacote de dados de mercado é publicado pela troca O pacote viaja pelo fio O pacote chega a um roteador do lado do servidor. O roteador encaminha o pacote pela rede do lado do servidor. O pacote chega na porta Ethernet do servidor. Dependendo se este é processamento UDP / TCP ocorre e o pacote despojado de seus cabeçalhos e trailers faz o caminho para a memória do adaptador. O adaptador então analisa o pacote e o converte em um formato interno para a plataforma de negociação algorítmica. Este pacote agora viaja através dos vários módulos do sistema - CEP, tick shop, etc. O CEP analisa e envia uma solicitação de pedido. através do reverso do ciclo como o pacote de dados do mercado.
Alta latência em qualquer uma dessas etapas garante uma latência alta durante todo o ciclo. Assim, a otimização de latência geralmente começa com o primeiro passo neste ciclo que está no nosso controle, ou seja, "o pacote viaja através do fio". A coisa mais fácil de fazer aqui seria encurtar a distância até o destino, tanto quanto possível. Colocações são instalações fornecidas por trocas para hospedar o servidor de negociação nas proximidades da troca. O diagrama a seguir ilustra os ganhos que podem ser feitos cortando a distância.
Para qualquer tipo de estratégia de alta freqüência envolvendo um único destino, Colocation tornou-se um facto deve. No entanto, as estratégias que envolvem múltiplos destinos precisam de um planejamento cuidadoso. Vários fatores, como o tempo gasto pelo destino para responder pedidos de pedidos e sua comparação com o tempo de ping entre os dois destinos, devem ser considerados antes de tomar essa decisão. A decisão também pode depender da natureza da estratégia.
A latência da rede geralmente é o primeiro passo na redução da latência geral de um sistema de comércio algorítmico. No entanto, existem muitos outros locais onde a arquitetura pode ser otimizada.
Latência de propagação.
A latência de propagação significa o tempo necessário para enviar os bits ao longo do fio, limitados pela velocidade da luz, é claro.
Foram introduzidas várias otimizações para reduzir a latência de propagação além de reduzir a distância física. Por exemplo, o tempo estimado de ida e volta para um cabo comum entre Chicago e Nova York é de 13,1 milissegundos. As redes de propagação, em outubro de 2018, anunciaram melhorias de latência que trouxeram o tempo estimado de ida e volta para 12,98 milissegundos. A comunicação por microondas foi adotada ainda mais por empresas como Tradeworx, trazendo o tempo estimado de ida e volta para 8,5 milissegundos. Observe que o mínimo teórico é de cerca de 7,5 milissegundos. As inovações contínuas estão empurrando os limites da ciência e alcançando rapidamente o limite teórico da velocidade da luz. Os últimos desenvolvimentos em comunicação a laser, adotados anteriormente em tecnologias de defesa, afugentaram ainda mais uma latência já diluída por nanosegundos em curtas distâncias.
Latência de processamento de rede.
Latência de processamento de rede significa latência introduzida por roteadores, switches, etc.
O próximo nível de otimização na arquitetura de um sistema de negociação algorítmico seria o número de lúpulos que um pacote levaria para viajar do ponto A ao ponto B. Um salto é definido como uma parte do caminho entre a fonte e o destino durante o qual um pacote não passa por um dispositivo físico como um roteador ou um switch. Por exemplo, um pacote pode percorrer a mesma distância através de dois caminhos diferentes. Mas pode ter dois saltos no primeiro caminho versus 3 saltos no segundo. Supondo que o atraso de propagação seja o mesmo, os roteadores e switches introduzem sua própria latência e geralmente como uma regra de polegar, mais o lúpulo é a latência adicionada.
A latência do processamento de rede também pode ser afetada pelo que chamamos de microbursas. Microbursts são definidos como um aumento súbito da taxa de transferência de dados que pode não afetar necessariamente a taxa média de transferência de dados. Uma vez que os sistemas de negociação algorítmica são baseados em regras, todos esses sistemas reagirão ao mesmo evento da mesma maneira. Como resultado, muitos sistemas participantes podem enviar ordens que levam a uma onda repentina de transferência de dados entre os participantes e o destino que leva a um microburst. O diagrama a seguir representa o que é um microburst.
A primeira figura mostra uma visão de 1 segundo da taxa de transferência de dados. Podemos ver que a taxa média está bem abaixo da largura de banda disponível de 1Gbps. No entanto, se mergulhar mais profundamente e olhar a imagem de segundos (a vista de 5 milissegundos), vemos que a taxa de transferência aumentou acima da largura de banda disponível várias vezes por segundo. Como resultado, os buffers de pacotes na pilha de rede, tanto nos pontos de extremidade da rede quanto nos roteadores e switches, podem transbordar. Para evitar isso, normalmente uma largura de banda muito superior à taxa média observada é geralmente alocada para um sistema de comércio algorítmico.
Latência de serialização.
A latência de serialização significa o tempo necessário para puxar os bits para dentro e fora do fio.
Um tamanho de pacote de 1500 bytes transmitidos em uma linha T1 (1.544.000 bps) produziria um atraso de serialização de cerca de 8 milissegundos. No entanto, o mesmo pacote de 1500 bytes usando um modem de 56K (57344bps) levaria 200 milissegundos. Uma linha Ethernet 1G reduziria essa latência para cerca de 11 microssegundos.
Latência de interrupção.
A latência de interrupção significa uma latência introduzida por interrupções ao receber os pacotes em um servidor.
A latência de interrupção é definida como o tempo decorrido entre quando uma interrupção é gerada quando a fonte da interrupção é atendida. Quando é gerada uma interrupção? Interrupções são sinais para o processador emitido por hardware ou software, indicando que um evento precisa de atenção imediata. O processador, por sua vez, responde suspendendo sua atividade atual, salvando seu estado e manipulando a interrupção. Sempre que um pacote é recebido no NIC, uma interrupção é enviada para lidar com os bits que foram carregados no buffer de recebimento da NIC. O tempo necessário para responder a esta interrupção não afeta apenas o processamento da nova carga útil, mas também a latência dos processos existentes no processador.
Solarflare introduziu onload aberto em 2018, que implementa uma técnica conhecida como bypass do kernel, onde o processamento do pacote não é deixado para o kernel do sistema operacional, mas para o próprio espaço de usuários. Todo o pacote é diretamente mapeado para o espaço do usuário pela NIC e é processado lá. Como resultado, as interrupções são completamente evitadas.
Como resultado, a taxa de processamento de cada pacote é acelerada. O diagrama a seguir demonstra claramente as vantagens do bypass do kernel.
Latência da aplicação.
A latência da aplicação significa o tempo gasto pelo processo para processar.
Isso depende dos vários pacotes, do processamento alocado para a lógica do aplicativo, da complexidade do cálculo envolvido, da eficiência da programação, etc. O aumento do número de processadores no sistema, em geral, reduzirá a latência da aplicação. O mesmo ocorre com o aumento da frequência do relógio. Muitos sistemas de negociação algorítmica aproveitam a dedicação de núcleos de processadores para elementos essenciais da aplicação, como a lógica de estratégia, por exemplo. Isso evita a latência introduzida pela troca do processo entre os núcleos.
Da mesma forma, se a programação da estratégia foi feita, tenha em mente os tamanhos de cache e a localização do acesso à memória, então haveria muitos hits no cache da memória resultando em uma redução adicional da latência. Para facilitar isso, muitos sistemas usam linguagens de programação de nível muito baixo para otimizar o código para a arquitetura específica dos processadores. Algumas empresas chegaram até a extensão da queima de cálculos complexos em hardware usando matrizes de portas totalmente programáveis ​​(FPGA). Com a crescente complexidade vem o custo crescente e o diagrama a seguir ilustra isso.
Níveis de sofisticação.
O mundo do comércio algorítmico de alta freqüência entrou em uma era de competição intensa. Com cada participante adotando novos métodos de expulsão da concorrência, a tecnologia progrediu aos trancos e barrancos. As arquiteturas de negociação algorítmica modernas são bastante complexas em comparação com as suas partes anteriores. Consequentemente, os sistemas avançados são mais caros de construir tanto em termos de tempo e dinheiro.
Conclusão:
Esta foi uma publicação detalhada sobre a arquitetura do sistema de negociação algorítmica, com certeza nós damos um conhecimento muito profundo dos componentes envolvidos e também dos vários desafios que os desenvolvedores de arquitetura precisam lidar / superar para construir sistemas de negociação automatizados robustos.
Se você quiser aprender vários aspectos da negociação algorítmica, consulte o Programa Executivo em Negociação Algorítmica (EPAT ™). O curso abrange módulos de treinamento como Statistics & amp; Econometria, Computação Financeira e Tecnologia e Algorítmica e Negociação quantitativa. EPAT ™ equipa você com os conjuntos de habilidades necessárias para construir uma carreira promissora na negociação algorítmica. Inscreva-se agora!
Posts Relacionados:
2 pensamentos sobre "Como os sistemas comerciais funcionam"
15 de dezembro de 2017.
Postagem muito boa. Eu simplesmente tropecei em seu blog e queria dizer que eu realmente gostei de navegar em suas postagens no blog. Afinal, vou me inscrever no seu feed e espero que você escreva novamente em breve!
15 de dezembro de 2017.
Estamos realmente satisfeitos por você gostar de nossas postagens. A apreciação é o que nos mantém em pé.
Certifique-se de continuar adicionando conteúdo fresco periodicamente. Compartilhe nossas postagens e ajude-nos a espalhar a palavra sobre como as pessoas podem aproveitar a partir de negociação algorítmica e quantitativa.

No comments:

Post a Comment