Skip to main content

🎯 Algoritmo: Arbitragem Spot vs Futuros (Alta Precisão)

Este algoritmo de última geração identifica oportunidades de arbitragem entre mercados spot e futuros, usando preços de execução reais (bid/ask) e calculando spreads precisos considerando todos os custos envolvidos.

🚀 Características Avançadas:

  • Precisão Máxima: Uso de preços bid/ask reais para cálculos precisos
  • Cobertura Completa: Avaliação de ambas direções de arbitragem
  • Threshold Otimizado: 0.2% para máxima eficiência em HFT
  • Detecção Inteligente: Identificação automática de pares equivalentes
  • Análise em Tempo Real: Processamento instantâneo de oportunidades

1. Identificar o par spot desejado

Exemplo: LTCBTC, ETHBTC, etc.

2. Buscar os preços bid/ask do par no mercado Spot

Chamada na API Spot para o par:
Obter:
  • bidPrice (preço de venda)
  • askPrice (preço de compra)
O algoritmo utiliza preços bid/ask separados para máxima precisão nos cálculos de arbitragem, garantindo resultados mais confiáveis.

3. Identificar os dois pares equivalentes no mercado futuro

O mercado de futuros normalmente não oferece pares como LTCBTC ou ETHBTC diretamente. Em vez disso, ele oferece contratos contra USDT ou USD.

🔍 Regra Geral para Conversão:

Se você tem o par Spot BASE/QUOTE:
  1. Verifique se BASE/USDT e QUOTE/USDT existem nos futuros
  2. Calcule: BASE/QUOTE = (BASE/USDT) / (QUOTE/USDT)

📋 Exemplos Práticos:

Par Spot: LTCBTC
  • Futuros: LTCUSDT, BTCUSDT
  • Resultado: LTCBTC_futuros = LTCUSDT / BTCUSDT
Par Spot: ETHBTC
  • Futuros: ETHUSDT, BTCUSDT
  • Resultado: ETHBTC_futuros = ETHUSDT / BTCUSDT
Par Spot: SOLBTC
  • Futuros: SOLUSDT, BTCUSDT
  • Resultado: SOLBTC_futuros = SOLUSDT / BTCUSDT
Par Spot: DOGEETH
  • Futuros: DOGEUSDT, ETHUSDT
  • Resultado: DOGEETH_futuros = DOGEUSDT / ETHUSDT

🧠 Lógica Matemática Avançada:

📊 Tabela de Referência Rápida:

Sempre verifique se ambos os pares futuros existem antes de fazer os cálculos. Alguns pares podem não estar disponíveis em todas as exchanges.

4. Buscar os preços bid/ask nos futuros perpétuos

Chamada na API de Futuros:
Obter:
  • bidPrice, askPrice de cada um
O algoritmo mantém preços bid/ask separados para garantir máxima precisão nos cálculos de arbitragem.

5. Calcular os preços sintéticos bid/ask do par nos futuros

6. Comparar os preços Spot e Futuros (Análise Completa)

O algoritmo avalia ambas direções de arbitragem simultaneamente para máxima cobertura de oportunidades.

7. Avaliar se há oportunidade de arbitragem

Definir um limiar mínimo de spread para compensar:
  • Taxas de negociação
  • Slippage
  • Funding Rate (no mercado futuro)
  • Custo de transferência (se houver)
Threshold otimizado: 0.2% para máxima eficiência em trading de alta frequência

8. Consultar o funding rate atual (se relevante)

Chamada:
Obter:
  • lastFundingRate
Avaliar:
  • Se estiver positivo, posições long pagam funding
  • Se estiver negativo, posições short pagam funding

9. Definir estratégia com base na diferença

O algoritmo define estratégias específicas baseadas nos preços de execução reais para máxima precisão.
OPORTUNIDADE 1: BUY_SPOT_SELL_FUTURE
  • Condição: futureBid > spotAskPrice
  • Ação: Comprar no spot (ask) e vender no futuro (bid)
  • Spread: (futureBid - spotAskPrice) / spotAskPrice
OPORTUNIDADE 2: SELL_SPOT_BUY_FUTURE
  • Condição: spotBidPrice > futureAsk
  • Ação: Vender no spot (bid) e comprar no futuro (ask)
  • Spread: (spotBidPrice - futureAsk) / futureAsk

10. Executar ordens com gerenciamento de risco

  • Verificar saldo disponível
  • Verificar limites de posição
  • Executar ordens simultaneamente (ou o mais próximo disso)
  • Monitorar posições até convergência ou realização do lucro

📊 Exemplo Prático

Vamos simular uma arbitragem com ADABTC usando preços bid/ask reais:
Dados Spot:
  • Bid: 0.00002000 (preço de venda)
  • Ask: 0.00002100 (preço de compra)
Dados Futuros:
  • ADAUSDT Bid: 0.9, Ask: 0.95
  • BTCUSDT Bid: 50000, Ask: 50010
Cálculo dos Preços Sintéticos:
  • Future Bid = 0.9 / 50010 = 0.00001800 (para vender ADA/BTC)
  • Future Ask = 0.95 / 50000 = 0.00001900 (para comprar ADA/BTC)
Avaliação das Oportunidades: OPORTUNIDADE 1: BUY_SPOT_SELL_FUTURE
  • Spread = (0.00001800 - 0.00002100) / 0.00002100 = -14.29% ❌
OPORTUNIDADE 2: SELL_SPOT_BUY_FUTURE
  • Spread = (0.00002000 - 0.00001900) / 0.00001900 = 5.26% ✅
Resultado: Oportunidade encontrada! Spread de 5.26% > threshold de 0.2%

⚠️ Considerações Importantes

A arbitragem spot vs futuros envolve riscos significativos:
  1. Funding Rate: Pode eliminar lucros se não for considerado
  2. Liquidez: Ordens grandes podem causar slippage
  3. Tempo de execução: Diferenças de timing podem afetar resultados
  4. Correlação: Mercados spot e futuros podem se mover juntos
  5. Regulamentação: Diferentes regras podem aplicar em cada mercado

📈 Contagem de cruzamentos (Spot x Future)

A API expõe endpoints para processar e consultar a quantidade de cruzamentos de preço (spot x future) por ticker e exchange:
  • POST /v1/arbitrage/future/crossing-counts: dispara o processamento assíncrono do dia (consulta operações spot x future, agrupa por ticker e exchange, conta cruzamentos e persiste na coleção spot_future_crossing_counts de forma idempotente — upsert por (processing_date, ticker, exchange)). Retorna 202 Accepted.
  • GET /v1/arbitrage/future/crossing-count?ticker=...&exchange=...: retorna o crossingCount somado sobre os últimos 7 dias para aquele par, com filtro crossing_count > 0. O resultado é cacheado por 4 horas. A resposta inclui o campo spotXFuture: true, indicando que o dado se refere ao contexto Spot x Future. Se não houver registro na janela, retorna crossingCount: 0.
Documentação detalhada: Process Crossing Counts e Get Crossing Count.

🔧 Implementação Técnica


🧪 Testes e Validação

O algoritmo inclui testes unitários abrangentes para garantir máxima confiabilidade:

Casos de Teste Cobertos:

  • TestCompareSpotXFuture: Valida o algoritmo principal
  • TestIdentifyEquivalentPairsInFuture: Testa identificação de pares
  • TestCalculateSyntheticFuturePrices: Verifica cálculo de preços sintéticos

Resultado dos Testes:


Para implementar este algoritmo avançado em produção, considere:
  • Algoritmo Validado: Testes unitários passando
  • 🔄 Backtesting: Com dados históricos usando preços bid/ask reais
  • 🔄 Monitoramento: De funding rates em tempo real
  • 🔄 Otimização: De execução de ordens simultâneas
  • 🔄 Expansão: Para outras exchanges seguindo o padrão otimizado