📖 Descrição
Endpoint que cria ou atualiza (upsert) os dados de entrada de uma posição de arbitragem spot-futuro na Calculadora. Se já existir uma entrada para o paremail + ticker, ela é sobrescrita com os novos valores. Os dados de entrada são o ponto de referência para o cálculo do PNL em tempo real.
Este endpoint é o primeiro passo — registrar a posição de entrada. Depois de salvo, use
GET /v1/calculators/stream para monitorar o PNL em tempo real.🛠️ Requisição
Método
POST
URL
Request Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | Sim | Email do usuário |
ticker | string | Sim | Par de trading (ex: BTC-USDT) |
entrySpotValue | float | Sim | Preço de entrada no mercado Spot |
entryShortValue | float | Sim | Preço de entrada no mercado Futuro (short) |
entrySpotQty | float | Sim | Quantidade comprada no Spot |
entryFuturesQty | float | Sim | Quantidade vendida nos Futuros |
Exemplo de Requisição
📤 Resposta
Exemplo de Resposta (200 OK)
Campos da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID da entrada no MongoDB |
email | string | Email do usuário |
ticker | string | Par de trading |
entrySpotValue | float | Preço spot de entrada |
entryShortValue | float | Preço futuro de entrada |
entrySpotQty | float | Quantidade spot |
entryFuturesQty | float | Quantidade futuro |
entrySpotTotalValue | float | entrySpotValue × entrySpotQty |
entryFuturesTotalValue | float | entryShortValue × entryFuturesQty |
entrySpread | float | entryShortValue − entrySpotValue |
entrySpreadPercentage | float | (entrySpread / entrySpotValue) × 100 |
timestamp | int64 | Timestamp de criação (milissegundos Unix) |
📝 Códigos de Resposta
200 OK: Posição criada ou atualizada com sucesso. Retorna o objeto completo com spread calculado.
400 Bad Request:
Invalid request body: JSON malformadoemail is required: Campo email ausenteticker is required: Campo ticker ausente
500 Internal Server Error:
Failed to create or update calculator — Erro ao persistir no MongoDB.🔁 Comportamento de Upsert
O endpoint verifica se já existe uma entrada paraemail + ticker:
- Não existe → cria um novo documento
- Já existe → atualiza todos os campos de valor/quantidade