Cotações em tempo real: por debaixo do capô

Quando iniciamos nosso projeto da Plataforma Gráfica com cotações em tempo real, tínhamos em mente três objetivos principais:

  1. ser a plataforma mais acessível,
  2. a mais fácil de usar e
  3. a que entrega as cotações no menor tempo possível.

Esse post é para mostrar os 4 principais desafios que enfrentamos para alcançar esses objetivos e algumas decisões que tomamos para poder entregar as cotações em tempo real de verdade – negócio a negócio – para nossos assinantes e fornecer um sinal gratuito com defasagem de 15 minutos de qualidade superior.

cotações em tempo real

.

1º desafio: não perder nenhum trade em tempo real

Nossa primeira e maior preocupação foi encontrar uma solução que nos permitisse receber as cotações da Bovespa com a mínima possibilidade de erros. Isto é, desde o recebimento do sinal até o processamento dos negócios, e dos respectivos candlesticks, o sistema deveria reduzir ao máximo a possibilidade de que, em caso de problemas, as cotações dos ativos ficassem comprometidas, entregando dados incorretos aos nossos usuários.

Graças a esta preocupação desde o início, hoje podemos garantir que, a partir do momento que um trade chega em nossa estrutura, ele será processado corretamente.

No meio do caminho, se algo inesperado ocorrer, ele será reprocessado – e nunca perdido. Além disso, caso ocorra algum problema no próprio sinal da Bovespa, temos condições de reprocessar todos os negócios de um dia específico, corrigindo falhas e gaps e outros problemas no gráfico.

Para superar este desafio, criamos uma solução exclusiva de enfileiramento de dados, feita sob demanda para nosso problema. Ela é a grande responsável pela capacidade de contornar estes problemas, sem gastarmos muitos recursos computacionais e preservando a qualidade da informação.

2º desafio: cotações devem estar “imunes” aos problemas de normalização nas séries históricas

Para que os preços histórico dos ativos negociados na bolsa, possam ser utilizados para comparação com os atuais, é necessário que eles passem por ajustes, em função de  grupamentos, desdobramentos, pagamento de dividendos e outros.

Como estes ajustes não são disponibilizados de maneira padronizada e acessível para outros computadores por parte da BM&FBovespa, precisamos buscar em outro parceiro essas informações, que podem sofrer ratificações caso as mesmas tenham sido adicionadas de maneira incorreta por eles. Sabendo disto, adotamos a postura de isolar as informações dos preços sem os ajustes, e passamos a calcular a série histórica normalizada apenas quando solicitada pelos usuários.

Isso gera uma carga extra em nossos servidores, mas garante que não percamos a capacidade de corrigir os eventos de ajustes, caso necessário. Mais uma vez, a qualidade da informação está em primeiro lugar.

3º desafio: entregar todas as cotações em tempo real de verdade, negócio por negócio

Entregar dados em tempo real ainda é um desafio complicado. Os recursos disponíveis para streaming, não são padronizados e nem suportados por todos os navegadores.

Sabendo disso, não poupamos esforços para encontrar a melhor solução disponível hoje em dia: durante a fase de concepção do produto, conhecemos o Lightstreamer, um servidor construído por uma empresa italiana dedicado para streaming de dados. Ele é a escolha dos maiores bancos de investimentos do mundo, da NASA e também do Bússola ;)

Após uma curva de aprendizagem, nosso time superou o desafio da entrega de cotações em tempo real e passou a focar em maneiras otimizadas de calcular e entregar as informações dos ativos na velocidade que até mesmo o trader mais exigente espera.

Um benefício de não termos poupado esforços na entrega das cotações em tempo real é que hoje somos os únicos a disponibilizar gratuitamente widgets de cotações para sites parceiros e uma extensão com cotações para o Google Chrome para que você acompanhe a Bolsa de Valores com um clique.

Nestes aplicativos os dados estão com 15 minutos de defasagem, por exigência legal da BM&FBovespa, mas em streaming, também negócio a negócio.

4º desafio: poder fazer isso tudo, sem gastar e nem cobrar demais

A missão maior do Bússola é democratizar o acesso as melhores ferramentas e cotações em tempo real para que as pessoas possam investir melhor, com independência e pelo preço justo.

Para receber as informações da Bolsa e para disponibilizá-las, temos um custo fixo que não é controlado por nós. Por isso, focamos em gastar o mínimo possível em nossa infraestrutura tecnológica sem comprometer a qualidade do nosso serviço. Nesse sentido, usamos e abusamos dos serviços da Amazon, líder mundial em cloud computing e a escolha das principais startups de tecnologia do mundo.

Pagamos só pelo que usamos e temos a nossa disposição uma capacidade computacional praticamente infinita, que pode ser acionada assim que necessária. Além disso, contamos com os múltiplos datacenters da empresa para guardar com segurança nossas informações. Um exemplo disso é o nosso Link RTD com cotações para Excel que além de ser extremamente rápido, possui o melhor custo do mercado.

Alguns números para nerds

  • Nossa estrutura-base conta com 18GB+ de memória RAM e 15 unidades de processamento, distribuídas em 5 servidores. Isso pode ser aumentado assim que nosso time identificar gargalos ou atrasos. Nesse número não entra o restante da nossa estrutura, usada pelo restante do site.
  • Durante o pregão temos, em média, 310+ sessões de streaming simultâneas. Já tivemos picos de 700+ sessões ao mesmo tempo, sem que isso interferisse na entrega das cotações.
  • Nosso banco de dados de cotações cresce, em média, 150 MB por dia de pregão.
    • Temos 4MM+ de candlesticks diários (desde janeiro de 2002) e 11MM+ de candlesticks de minuto (desde julho de 2012) armazenados.
    • O número de negócios armazenados já passou dos 140MM (desde julho de 2012)
  • Nossas APIs, que entregam as séries históricas, snapshots das cotações para os widgets e para o site e outras informações dos ativos, são requisitadas 15.000+ vezes por dia.

 

Espero que essas informações tenham ajudado a matar um pouco a curiosidade dos entusiastas por tecnologia que nos acompanham, fiquem à vontade para conversamos mais a respeito nos comentários.

Tecnologia está no DNA do Bússola e adoramos conversar sobre. Se você quiser bater um papo com o time de desenvolvimento, saber mais sobre como fazemos o que fazemos, entre em contato pelo e-mail dev@bussoladoinvestidor.com.br. Até a próxima!

Gustavo Veloso

CTO do Bússola do Investidor, é o responsável por nossa estrutura de banco de dados, envio de sinal e desenvolvimento de novas tecnologias.

  • Franklin

    Olá, boa noite!

    Fantástica sua estrutura, assim como sua disponibilidade em compartilhar o esforço dispendido no projeto; isso ajuda demais quem inicia no mercado e às vezes se pega em dificuldades no desenvolvimento de ferramentas.

    Tenho uma pergunta: vcs fornecem alguma API para sites/servidores externos ou possuem algum canal de parcerias neste sentido?

  • Fernando

    Excelente artigo! :)

    Hoje sou assinante no link RTD para Excel e gostaria de saber se existe alguma outra forma de acesso às cotações em tempo real? Por acesso à API, por exemplo?

    Abraço,
    Fernando

  • Thiago Mikail Oliveira

    Olá Gustavo,

    Gostaria de parabenizar pelo site! Realmente é bastante intuitivo e com informações e recursos valiosos!
    Estou desenvolvendo um sistema para fazer algumas análises via MatLab, e gostaria de ter o acesso a dados históricos nele (não só de fechamento). É possível?

    Abraços