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
Topo do Lins UP Now em fundo escuro com detalhes em laranja, aviso de paper trading sem ordens reais e indicadores do simulador
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.
  1. 26/06/2026

    Lins UP Future, antecessor da linha, com página e painel ao vivo em linspayments.com.br.

  2. 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.

  3. 09/07/2026

    Motor de simulação com dados em tempo real e página reformulada para o painel do Lins UP Now.

  4. 12/07/2026

    Relatórios diários automáticos com as métricas de preenchimento e resultado do simulador.

  5. 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
  1. Visitante
    • Página pública
    • Painel ao vivo
  2. Painel
    • Next.js (rotas de API)
    • Leitura somente
  3. Dados
    • SQLite do simulador
    • Log de estado
  4. Motor
    • Simulador Python
    • Sinais e ordens simuladas
  5. Mercado
    • Fluxo de preços
    • Livro de ofertas

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

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.

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.

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.

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)

  1. 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.
  2. O motor identifica a janela de 15 minutos aberta e registra uma ordem simulada no lado favorecido, com a fila à frente anotada.
  3. A ordem tem validade de 30 segundos; o simulador estima se ela seria preenchida pela posição na fila.
  4. No fim da janela, o motor compara preço de abertura e de fechamento e grava o vencedor.
  5. 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

Próximo estudo de caso

LMM Capital
Todos os projetos