jft
O objetivo deste projeto é a construção de uma matching engine para a realização de testes e validação de sistemas de negociação. O projeto foi dividido em módulos que contém funcionalidades específicas e auxiliam na construção de dois sistemas: Matching Engine e Sistema cliente.
A Matching Engine está sendo construida tendo como referência o PUMA Trading System e toda a documentação fornecida pelo site da B3 Entry Point e UMDF como base de conhecimento para a costrução do sistema.
O Sistema cliente tem por finalidade oferecer uma plataforma básica e simplificada de negociação para treinamento e validação de sistemas de negociação.
Módulos
- connector
Realiza a comunicação e também o recebimento de mensagens FIX entre cliente e matching engine. Mantém os buffers de mensagens de MarketData e Negociação.
- data
Este módulo disponibiliza funcionalidades para extração de dados de negociação de arquivos que contém o histórico de negociações realizadas. Também contém funcionalidades para recebimento de dados via DDE.
- db
Módulo responsável por realizar a comunicação com o banco de dados. Utiliza uma interface genérica para controle de transações, consultas, inserção e remoção de objetos. Os parâmetros de conexão devem ser ajustados no arquivo hibernate.cfg.xml
- engine
Matching engine implementada utilizando como referência a documentação disponibilizada pela B3: EntryPoint: Order Entry Messaging e UMDF - FIX/FAST Market Data Messaging Specification
- init
Inicializa o banco de dados, criando tabelas e inserindo dados básicos.
- model
Contém os objetos básicos utilizados em cada módulo.
- logging
Funcionalidades de log, com auxílio da biblioteca log4j.
- messaging
Contém funcionalidades para realizar o tratamento de mensagens que utilizam o protocolo FIX. Com o intuito de simplificar a implementação, apenas o protocolo FIX (v 4.4) está sendo utilizado, tanto para o envio e recebimento de ordens quanto para o MarketData. Utiliza a API QuickFIX/J para auxiliar no processo de codificação e decodificação de mensagens no protocolo FIX.
- services
Disponibiliza 3 serviços básicos para realizar negociação:
Trading: Gerenciamento de ordens (inserção, cancelamento e atualização de ordens, bem como o tratamento de mensagens do tipo ExecutionReport).
Security: Mantém dados sobre os instrumentos que podem ser negociados.
MarketData: Processa todas mensagens de MarketData e as mantém disponíveis para utilização pelo cliente.
- ui
Interface cliente com telas básicas para envio de ordens e acompanhamento do mercado.
Todas as referências de cada módulo estão contidas no respectivo arquivo pom.xml.