Missão: Construir um "Hedge Fund in a box". Um motor de negociação quantitativa 24/7 focado em baixíssima latência, proteção de cauda (CVaR) e matemática estocástica/quântica.
O ZivyarQuantFx descarta o uso de EAs tradicionais baseados em indicadores. A arquitetura atual é macOS-first para o núcleo de decisão e Windows-only para o terminal MetaTrader 5:
-
Camada de Borda (Gateway): MQL5 (MetaTrader 5)
- Papel: Executor remoto.
- Função: Recebe ordens JSON, executa ou simula e devolve ticket, retcode e latência.
- Execução: Roda no Windows/VM/Parallels, mantendo o terminal MT5 isolado do core.
-
Camada Central (Core): Rust 🦀
- Papel: O Músculo e o Escudo.
- Função: Ingestão de dados, roteamento de ordens (REQ/REP), gestão de risco e benchmark de latência.
- Execução: Roda normalmente no macOS.
- Comunicação: ZeroMQ/TCP com o MT5;
PyO3(FFI Zero-Copy) para o Python.
-
Camada Analítica (Brain): Python 🐍
- Papel: O Cérebro Preditivo (QML & Math).
- Função: Cálculo do Movimento Browniano Fracionário (fBm), Expoente de Hurst e Redes Neurais Líquidas (LNNs) via PyTorch/NumPy.
O sistema opera via sockets TCP fechados no localhost ou na rede privada da VM:
- Porta 5555 (PUB/SUB): Via expressa de dados (Market Data / Ticks). O MT5 publica, o Rust assina.
- Porta 5556 (REQ/REP): Via transacional de ordens. O Rust solicita compra/venda, o MT5 executa e responde.
No fluxo principal, o Rust fica no macOS e o MT5 no Windows. Se ambos estiverem na mesma máquina/VM, use 127.0.0.1; se estiverem separados, ajuste o endpoint para o IP alcançável.
Use os presets do core para rodar campanhas prontas de paper trading:
sh rust_core/run_paper_trading_campaign.sh demopara a campanha curta.sh rust_core/run_paper_trading_campaign.sh smokepara smoke test diário de um único ciclo.sh rust_core/run_paper_trading_campaign.sh soak-25para 25 ordens.sh rust_core/run_paper_trading_campaign.sh soak-50para 50 ordens.sh rust_core/run_paper_trading_campaign.sh soak-100para 100 ordens.sh rust_core/run_paper_trading_campaign.sh autopilotpara rodar o bot em modo contínuo com ciclos automáticos.sh rust_core/run_paper_trading_campaign.sh monitorpara rodar o modo de observabilidade contínua com health, alert e history em/tmp/.sh rust_core/run_paper_trading_campaign.sh statuspara ler o snapshot operacional mais recente sem rodar campanha.sh rust_core/run_paper_trading_campaign.sh release-checkpara validar o checkpoint diário de release.sh rust_core/run_paper_trading_campaign.sh pre-releasepara executar smoke + release-check em sequência.sh rust_core/run_paper_trading_campaign.sh promote-releasepara executar o gate e gravar o artefato de promoção.sh rust_core/run_paper_trading_campaign.sh daily-releasepara promover e registrar o ciclo diário completo.
Os artefatos de promote-release e daily-release agora podem expor três estados operacionais:
PROMOTED— o ciclo foi aprovado e o artefato foi gravado como release válida.BLOCKED— o release-check falhou e o fluxo de promoção foi rejeitado.DAILY_RELEASE_BLOCKED— o ciclo diário foi executado, mas a promoção final não foi liberada.
Esses estados permitem auditoria e acompanhamento do pipeline, mesmo quando o gate é bloqueado.
No modo autopilot, autopilot_max_cycles=0 significa execução contínua até interrupção manual.
Os relatórios são gravados em /tmp/ com latência, throughput, sucesso/falha e métricas de sessão. O core também publica snapshots de saúde operacional, alertas, histórico de campanhas, hardening, release check e um snapshot consolidado de status com retenção ampliada.
Com a Fase 7 em andamento, o checkpoint diário final é daily-release, que promove e registra o ciclo diário completo, incluindo casos de bloqueio do gate.
ZivyarQuantFx_Workspace/
├── docs/ # Documentação técnica e arquitetural
├── rust_core/ # Motor de latência e Risco (Cargo Project)
│ ├── src/
│ │ ├── main.rs # Inicializador e Threads
│ │ ├── brokers/ # Adaptadores ZMQ
│ │ └── risk/ # CVaR e Kelly
│ └── Cargo.toml # Dependências (zmq, tokio, pyo3)
├── python_brain/ # Modelos PyTorch e fBm
└── mql5_gateway/ # Código injetado no MT5 (Experts/ZivyarQuantFx)
├── ZMQ_Tick_Publisher.mq5 # Publicador de dados (PUB)
└── ZMQ_Order_Executor.mq5 # Executor de ordens (REP)