Trading System - Parte III

Protótipo

Esse artigo descreve a prova de conceito de um trading system, um sistema que captura os negócios em execução na BM&FBOVESPA, analisa e gera alertas de oportunidades de compra e venda de ações.
O objetivo desse protótipo foi gerar uma prova de conceito de um sistema escalável que possa ser utilizado por investidores autônomos, investidores institucionais, formadores de mercado, entre outros.
Segue abaixo a descrição da prova de conceito com base na sua infraestrutura, na sua camada lógica e nos serviços de TI.

Infraestrutura física

Um trading system utiliza uma infraestrutura tecnológica abrangente. O desenvolvimento desse protótipo utilizou tecnologias padrões de mercado e padrões abertos, que beneficiam custo, escalabilidade e disponibilidade.
Os equipamentos utilizados nesse trabalho podem ser substituídos por equipamentos “high-end” como storages para armazenamento e backup, servidores multiprocessados, redes de baixa latência etc, uma vez que o objetivo desse protótipo foi apenas demonstrar a viabilidade de projeto técnica e comercial do projeto.

Rede

Conexão de Internet

Conexão à cabo da Ajato de 2Mb, fornecida pela empresa TVA.

Redundância de Internet

A redundância de Internet é alimentada com sinal 3g de 1Mb da operadora VIVO, via “tether” por um sistema Android.

Roteador Wi-Fi TPLink

Esse roteador é conectado à WAN via modem, e distribui sinal wi-fi 802.11g/802.11n.
O sinal distribuído alimenta um roteador dedicado ao trading system, descrito abaixo, além de alimentar todo ambiente com sinal wireless para ser utilizado por notebooks, tablets, smarphones, e-reader etc.

Roteador Wi-Fi Linksys

Esse roteador wireless trabalha em modo cliente, dessa maneira ele recebe o sinal wifi transmitido pelo roteador TPLink e distribui o sinal cabeado para a infraestrutura do trading system.

No Break

No break Eaton de dupla conversão, que garante alimentação contínua de energia.

Servidor

Processador Intel Core 2 Duo.
4G RAM

Estação de trabalho

Processador Intel Core i3
6 monitores de 21 polegadas

Camada Lógica

Sistema Operacional

Servidor
Linux - Distribuição Fedora Core 12 e Ubuntu 10.04

Estação de Trabalho
Windows 7 Ultimate

Banco de Dados

PostgreSQL 9.1

Aplicações

PERL

Serviços de TI

Conexão Internet

O roteador que alimenta o trading system é um Linksys, que utiliza um firmware DD-WRT. Esse firmware permite que se utilize o mesmo com muita flexibilidade. As antenas podem receber e/ou transmitir sinal wifi, as duas antenas podem receber, transmitir ou uma pode receber e a outra transmitir.
Da maneira como o mesmo está configurado, ele recebe sinal wifi pelas duas antenas, através
do access point TPLink que distribui o sinal.Em caso de queda do sinal Ajato da TVA, o tether do sistema Android é ativado, e o roteador Linksys passa a ser alimentado com esse sinal, evitando longas interrupções.
Da maneira que o sistema está configurado, existe uma interrupção de poucos minutos.
Os dois access point possuem nomes diferentes porém utilizam o mesmo endereço de rede, a mesma senha de acesso e o mesmo algoritmo criptográfico. Dessa maneira, durante uma interrupção, basta alterar o nome do access point e reiniciar o roteador para reestabelecer a conexão.
É possível instalar um script que gerencia automaticamente a troca dos access point em caso de interrupção do sinal de Internet em um deles.

Energia

Assim como a conexão à Internet, a energia deve ser constante para evitar qualquer interrupção durante o horário de negociação.
Está sendo utilizado um nobreak de dupla conversão, que evita interrupção no fornecimento de energia seja qual for a falha no sistema de eletricidade.
Um nobreak de dupla conversão converte a energia de corrente alternada para corrente contínua na entrada e de corrente contínua para corrente alternada na saída. Dessa maneira, a corrente alternada da saída é sempre alimentada pelas baterias do nobreak e nenhuma interrupção no fornecimento de energia impacta na saída de eletricidade para o sistema.
A limitação de tempo de uso é dada pela quantidade de baterias, que pode também ser estendida com a utilização de geradores de energia a diesel.

Backup

O serviço de backup de dados é efetuado na camada do sistema operacional.
Toda a camada transacional do sistema é executada nos servidores dos provedores das corretoras e da bolsa. No servidor local, existe processamento de dados e armazenamento de informações para transacionamento em tempo real. Caso aconteça algum problema durante o período de negociação, é necessário entrar diretamente nos sistemas das corretores e fechar eventuais ordens abertas. Um sistema de backup na camada de file system não é necessário.
O que é importante manter backup é o código fonte do sistema. Como o mesmo é alterado devido a correções ou entrada de novas funcionalidades, o backup é efetuado uma vez por dia. Poderiam ser várias vezes ao dias, mas não é necessário.
O mecanismo funciona através de scripts disparados pelo crontab.

Processamento de Dados

Atualmente o sistema processa os dados em tempo real consolidados em intervalos de 15 minutos, um dos intervalos mais utilizados para se realizar operações intraday na bolsa.
O universo dos papéis negociados é composto por empresas que fazem parte do índice IBOVESPA, deixando de fora os papéis menos líquidos, opções, ETF, commodities, moeda etc.
A máquina utilizada para essa tarefa possui um processador de dois núcleos físicos e processa os dados muito rapidamente.
Para sistemas “algo trading”, mais importante que a velocidade de processamento é o algoritmo utilizado para se detectar boas oportunidades de negócios.
Para sistemas de negociação de alta frequência, além de bons algoritmos é necessário velocidade no processamento dos dados. Uma máquina com processadores de oito núcleos pode dar conta de processar em tempo real todos os negócios e gerar os alertas adequados para as negociações.

Diagrama de infraestrutura

O diagrama abaixo apresenta a infraestrutura utilizada no protótipo do trading system.


Popular posts from this blog

Atom - Jupyter / Hydrogen

Design Patterns

Robson Koji Moriya disambiguation name