Sistema quantitativo com execução simulada · Python e Next.js
Lins UP Now
Sistema quantitativo que detecta sinais de mercado e executa ordens simuladas em mercados de previsão de curta duração sobre o bitcoin, com dados de mercado em tempo real e painel público ao vivo em linspayments.com.br. A execução é simulada por desenho (paper trading): nenhum valor exibido é retorno financeiro.
Papel
Concepção, análise de dados e desenvolvimento do sistema e do painel
Organização e período
Julho a outubro de 2026
Plataformas
Página pública com painel ao vivo · Serviço de simulação no servidor
Página pública em linspayments.com.br. Todos os valores são de simulação.
01 / Contexto
História e problema
Para quem
Uso próprio, como laboratório para estudar uma estratégia quantitativa com dados reais de mercado e execução simulada, e visitantes que acompanham o sistema pela página pública.
Problema
Os projetos anteriores da linha (Lins UP e Lins UP Future) mostraram que taxas consomem a vantagem esperada e que resultado bruto engana. Textos que circulavam prometiam ganhos rápidos com distorções em mercados de previsão. Era preciso medir, com dados, o que existe de fato nesses mercados e acompanhar uma estratégia em tempo real sem arriscar dinheiro.
Restrições
Execução sempre simulada. Taxas da plataforma que mudam conforme o tipo de ordem. Mercados com janelas de 5 e 15 minutos, em que a vantagem dura segundos. Servidor compartilhado com outros projetos.
26/06/2026
Lins UP Future, antecessor da linha, com página e painel ao vivo em linspayments.com.br.
09/07/2026
Criação do Lins UP Now com plano em fases e estudo de uma base pública de cerca de 107 milhões de negociações.
09/07/2026
Motor de simulação com dados em tempo real e página reformulada para o painel do Lins UP Now.
12/07/2026
Relatórios diários automáticos com as métricas de preenchimento e resultado do simulador.
31/07 a 03/08/2026
Contabilidade de taxas em todas as operações e recálculo dos registros do simulador.
02 / Papel
Minha responsabilidade
Liderança e direção
Defini o plano em fases do sistema: estudo de dados históricos, simulação ao vivo com dados reais e leitura de resultado só com taxas descontadas.
Descartei a linha de arbitragem quando o estudo histórico mostrou que não havia vantagem líquida executável.
Tratei resultados positivos fora do esperado como sinal de erro até que preenchimento e taxa estivessem explicados.
Defini que a página pública identifica a simulação e não detalha a estratégia.
Exigi que a contabilidade do simulador cobrasse taxa em todas as operações, vencedoras e perdedoras, antes de qualquer leitura de resultado.
Execução técnica direta
Desenvolvi a página e o painel em Next.js 16, React 19 e TypeScript, com rotas de API que leem o banco do simulador em modo somente leitura.
Implementei o indicador de serviço ativo pelo horário do último registro do simulador e a atualização periódica dos blocos do painel.
Desenhei o gráfico de resultado simulado em SVG próprio, sem biblioteca, com remoção de patamares repetidos.
03 / Arquitetura
Arquitetura documentada
O sistema tem duas partes que só se comunicam pelo banco. O motor de simulação, em Python, recebe dados de mercado em tempo real, gera sinais, registra ordens simuladas, estima preenchimentos e resolve cada janela de mercado. O painel em Next.js abre o mesmo banco SQLite em modo somente leitura e expõe rotas de API consumidas pela página pública.
Arquitetura do Lins UP Now
Visitante
Página pública
Painel ao vivo
Painel
Next.js (rotas de API)
Leitura somente
Dados
SQLite do simulador
Log de estado
Motor
Simulador Python
Sinais e ordens simuladas
Mercado
Fluxo de preços
Livro de ofertas
Conexões
A página consulta periodicamente as rotas de API do Next.js.
As rotas leem o SQLite e o log de estado sem escrever nada.
O simulador grava sinais, ordens simuladas, preenchimentos e resoluções no SQLite.
O simulador recebe o fluxo de preços e o livro de ofertas por conexões em tempo real.
Camadas e tecnologias
Painel
Next.js 16.2 com App Router, React 19.2, TypeScript 5 e Tailwind CSS 4. Seis rotas de API (status, resumo, sinais, ordens, resoluções e resultado) com resposta dinâmica e sem cache.
Acesso a dados
SQLite aberto em modo somente leitura, com tempo de espera para bloqueio. O módulo nativo fica fora do bundle do servidor.
Saúde do serviço
O painel considera o motor ativo se o log de estado foi atualizado nos últimos 3 minutos e extrai dele o preço corrente.
Motor de simulação
Serviço Python com conexões WebSocket ao fluxo de preços e ao livro de ofertas, descoberta das janelas de mercado, simulação de preenchimento pela posição na fila e resolução de cada janela, executado como serviço do sistema com reinício automático.
Operação
Vigia a cada 5 minutos que reinicia o motor travado e me avisa; relatório diário automático com as métricas de preenchimento e resultado.
04 / Decisões
Decisões técnicas e compromissos
01
Estudo de dados antes da estratégia
Problema
Estratégias de mercado parecem boas em histórico e em simulação e se desfazem quando taxa, fila e latência entram na conta.
Decisão
Plano em fases: limpeza e estudo de dados históricos, depois simulação ao vivo com dados reais, sempre com critérios explícitos para cada leitura de resultado.
Motivo
Transforma a pergunta "isso dá dinheiro?" em perguntas menores, mensuráveis e baratas.
Compromisso
Mais tempo de análise antes de qualquer conclusão sobre a estratégia.
Aprendizado
O estudo histórico descartou a linha de arbitragem: as distorções existiam, mas eram pequenas, duravam milissegundos e eram capturadas por robôs mais rápidos.
02
Desconfiar do resultado positivo
Problema
O simulador passou a mostrar resultado positivo alto e taxa de preenchimento perto de 90%.
Decisão
Tratar o número como sinal de erro: recalcular com taxa em todas as operações, separar os tipos de preenchimento e verificar a configuração em execução.
Motivo
O estudo histórico indicava que esse modo de operar não tinha vantagem depois das taxas; um resultado que contradiz a análise precisa ser explicado antes de ser aceito.
Compromisso
Semanas de análise sobre um resultado que, à primeira vista, parecia bom.
Aprendizado
Havia um erro de contabilidade (taxa só nas vencedoras) e um padrão de configuração que fazia o simulador operar de forma diferente da estratégia definida; ambos foram corrigidos.
03
Painel separado do motor
Problema
Uma página pública não pode afetar um processo que roda sem parar nem ter caminho de escrita no banco dele.
Decisão
O painel abre o SQLite em modo somente leitura e não tem nenhuma rota de escrita.
Motivo
Falhas ou acessos indevidos ao site não alteram o estado do simulador.
Compromisso
O painel depende de estar no mesmo servidor que o banco e não oferece controle remoto do motor.
04
Transparência sem expor a estratégia
Problema
A página precisava mostrar o sistema funcionando sem entregar o método e sem sugerir retorno real.
Decisão
Selo de simulação no topo e no painel, textos sem detalhes da estratégia e API pública sem identificadores dos mercados.
Motivo
Mostra execução real do software e protege o método, sem induzir o visitante a erro.
Compromisso
Parte do valor técnico não aparece na página pública.
05 / Funcionamento
Fluxo e modelo
Do sinal à resolução (dados sintéticos)
O preço de referência sobe 6 pontos-base em 5 segundos e ultrapassa o limiar de 5; o motor registra um sinal de alta.
O motor identifica a janela de 15 minutos aberta e registra uma ordem simulada no lado favorecido, com a fila à frente anotada.
A ordem tem validade de 30 segundos; o simulador estima se ela seria preenchida pela posição na fila.
No fim da janela, o motor compara preço de abertura e de fechamento e grava o vencedor.
O resultado simulado da operação é calculado com a taxa descontada e aparece no painel na próxima atualização.
Modelo lógico simplificado
signals
momento, variação em pontos-base, limiar, direção, preço inicial, preço final
Ordens simuladas
momento, janela, período, lado, resultado esperado, preço, quantidade, fila à frente, status
fills
ordem, modo de preenchimento, tipo de preenchimento
resolutions
janela, período, fim, preço de abertura, preço de fechamento, vencedor
Resultados simulados
momento, venceu, resultado simulado
06 / Evidências
Resultados e próximos passos
Resultados e evidências
Estudo de cerca de 107 milhões de negociações históricas (julho de 2026), que descartou a linha de arbitragem sem uso de capital.
Simulador em funcionamento contínuo desde 09/07/2026, com dados de mercado em tempo real e página pública atualizada ao vivo.
Simulação de preenchimento pela posição na fila, que mede a distância entre o preenchimento modelado e o observado.
Contabilidade do simulador corrigida em 31/07/2026 para descontar taxa de todas as operações.
Próximos passos
Todos os números do painel são de simulação; o resultado acumulado exibido é otimista por natureza e não deve ser lido como retorno.
O painel depende de estar no mesmo servidor que o banco do simulador. Próximo passo: expor os dados por um serviço de leitura dedicado.
07 / Telas
Galeria
Painel ao vivo. Números da tela são ilustrativos: resultado de simulação, não retorno real.