Skip to main content

📖 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 required
  • ticker is required
  • exchange 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 hook useCalculatorStream 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.