📖 Descrição
Endpoint de Server-Sent Events (SSE) que transmite o PNL (Profit and Loss) em tempo real de uma posição de arbitragem spot-futuro aberta na Calculadora. A cada segundo, o servidor busca os preços de mercado atuais (spot + futuro), recalcula o spread e o PNL com base nos valores de entrada registrados, e emite o resultado.Este endpoint substitui o mecanismo de polling manual do frontend (chamadas
POST /v1/calculators/process a cada 5 segundos). Com SSE, a atualização é server-driven e mais eficiente — sem overfetching.🛠️ Requisição
Método
GET
URL
Query Parameters
Headers Necessários
Exemplo de Requisição (curl)
Exemplo de Requisição (JavaScript)
📤 Resposta
Headers da Resposta
Frequência de Emissão
Um evento é emitido a cada 1 segundo. Internamente, os dados de mercado (spot + futuro) são buscados do MongoDB com cache de 5 segundos para evitar sobrecarga no banco.Formato dos Eventos SSE
Estrutura Completa do Payload JSON
Campos do Payload
Como o PNL é Calculado
📝 Códigos de Resposta
200 OK +
Content-Type: text/event-stream: Stream aberto com sucesso.400 Bad Request: Parâmetros obrigatórios ausentes:
email is requiredticker is requiredexchange is required
404 Not Found:
calculator not found — Não há posição salva para o par email + ticker fornecido. Salve os dados de entrada via POST /v1/calculators primeiro.💡 Integração no Frontend (hook React)
O projeto já fornece o hookuseCalculatorStream em src/hooks/useCalculatorStream.js:
Parâmetros do Hook
Retorno do Hook
⚠️ Considerações
O stream retorna 404 se não houver uma entrada no banco para
email + ticker. Sempre salve os dados de entrada via POST /v1/calculators antes de abrir o stream.Os dados de mercado (spot + futuro) são buscados do MongoDB com cache interno de 5 segundos. Isso significa que o PNL pode ter até 5s de defasagem em relação ao mercado real — aceitável para monitoramento de posições de arbitragem, que não requerem latência de milissegundos.
Diferente do stream do Looker (que usa o
RealtimePriceCache WebSocket), o stream da Calculadora usa a coleção operations_future do MongoDB para obter o par de preços spot + futuro. Essa coleção é populada continuamente pelo motor de arbitragem.