Pressione ESC para fechar

Arbitragem CEX vs DEX: Manual de Spread Trading Crypto

Anatomia do Spread: De onde vem esse desbalanço?

O mercado é ineficiente. Principalmente em momentos de puro hype (FOMO) ou pânico geral. Nas CEXs (Binance, Bybit, OKX), o preço é movido por market makers e order books. Ali, tudo se resume à pressão instantânea do livro de ofertas. Já nas DEXs, o preço segue as regras dos AMMs (Automated Market Makers) e fica totalmente amarrado à fórmula matemática do pool (como a de produto constante $x \times y = k$).

Se uma baleia começa a despejar um token a mercado em uma CEX, o preço derrete na hora. E na DEX? Na DEX fica aquele silêncio até que apareça o primeiro arbitrador ou um usuário comum. É exatamente esse delay entre a atualização do order book na CEX e a mudança na proporção de tokens no pool da DEX que garante a nossa grana.

Mas preste atenção em um detalhe que a galera quase não comenta nos grupos e canais: o spread muitas vezes é uma ilusão. Você vê uma diferença de 3%, fica empolgado e decide dar aquele ape-in, mas o pool está fantasma. Não tem quase nada de liquidez ali. No momento em que você clicar em Swap, o preço vai disparar contra você e, em vez de lucro, você vai amargar um prejuízo violento. Isso é o que chamamos de Price Impact (Impacto no Preço).

Mapeamento de Riscos: O que vai derreter a sua banca

Antes de meter a mão no código e nos scanners, monte o seu checklist de ameaças. Arbitragem é um jogo de velocidade com expectativa matemática negativa (Negative EV) se você não souber botar as taxas ocultas na ponta do lápis.

Tipo de Custo / RiscoOnde está a pegadinhaComo mitigar
CEX Withdrawal LagA corretora travar o saque por 5 a 10 minutos. Nesse meio tempo, o spread já fechou.Deixar liquidez pronta nos dois lados. Operar com "volumes cruzados" (Hedging), sem precisar mover tokens fisicamente entre as exchanges.
Price ImpactBaixa liquidez no pool da DEX. Uma ordem maior joga o preço muito para cima ou para baixo.Calcular a profundidade (Depth) do pool. O tamanho da sua mão não deve passar de 1-2% do TVL total do pool.
Gas & MEVNas redes EVM (Ethereum, BSC, Arbitrum), os bots interceptam sua transação no mempool e passam na sua frente via Front-running.Utilizar Flashbots RPC (para a Mainnet) ou endpoints de RPC privados/protegidos para não expor a transação no mempool público.
CEX FeesTaxas de Maker/Taker + taxa fixa de rede para o saque do token.Girar volume na CEX para subir de nível VIP e reduzir as taxas. Na EXMON, por exemplo, a taxa de Maker/Taker é zero, o que é perfeito para essas operações em ciclo.

Algoritmo de busca manual e automação

Caçar oportunidades 100% no braço em 2026 é puro masoquismo. Mas você tem a obrigação de entender como a engrenagem funciona por trás.

A estratégia é simples. Abrimos o CoinMarketCap ou o CoinGecko. Filtramos os tokens de market cap mais baixo (as famosas shitcoins, mas que estejam vivas e com volume médio). Abrimos a aba "Markets" ("Mercados") e buscamos as distorções de preço. Se aparecer uma diferença entre uma Gate.io da vida e um pool na Uniswap/PancakeSwap na Arbitrum ou na Base (onde o gas custa centavos), é ali que começamos a cavar.

Checklist passo a passo para validação manual:

  • Verificar o status de depósito e saque do token na CEX. Se o saque estiver suspenso, o spread é fake. Esquece e vai para o próximo.
  • Checar a rede (Network). O token na CEX precisa estar exatamente na mesma rede onde o pool da DEX está rodando. Usar bridges vai comer seu tempo e engolir seu lucro.
  • Avaliar o slippage (derrapagem). Simule no painel da DEX o volume exato que você quer comprar ou vender. Fique de olho no Price Impact final. Se ele engolir o spread, a operação está morta.

Script de Monitoramento: Calculando o spread igual aos profissionais

Chega de teoria, vamos para o código. Precisamos de um script que puxe o preço da CEX (via CCXT) e faça o parse do preço do pool direto do smart contract da DEX (via Web3.py), ignorando totalmente aqueles front-ends lentos.

Abaixo está o script pronto e funcional integrando a Bybit (CEX) e um pool da Uniswap v2 na Arbitrum (DEX). Código pronto para rodar em produção.

Python

import time
from web3 import Web3
import ccxt
# Conectando ao nó. Use RPCs privadas e rápidas, as públicas vivem dando gargalo
RPC_URL = "https://arb1.alpharc.io/v1/your-api-key" # substitua pela sua RPC ativa
w3 = Web3(Web3.HTTPProvider(RPC_URL))
if not w3.is_connected():
    raise Exception("O nó caiu, ajuste a conexão")
# Inicializando a exchange via CCXT
exchange = ccxt.bybit({
    'enableRateLimit': True,
})
# Endereço do pool da Uniswap V2 (o mesmo vale para Sushi) na Arbitrum para o exemplo (WETH/USDC)
# Você pode colocar qualquer shitcoin aqui, desde que saiba o endereço do pool do par de tokens
POOL_ADDRESS = "0x905dfCD56492171426f30a7d11d68E1da87ab64B" 
# ABI do pool V2. Só precisamos da função getReserves, o resto é lixo, não precisa carregar
POOL_ABI = [
    {
        "constant": True,
        "inputs": [],
        "name": "getReserves",
        "outputs": [
            {"name": "_reserve0", "type": "uint112"},
            {"name": "_reserve1", "type": "uint112"},
            {"name": "_blockTimestampLast", "type": "uint32"}
        ],
        "payable": False,
        "stateMutability": "view",
        "type": "function"
    }
]
pool_contract = w3.eth.contract(address=w3.to_checksum_address(POOL_ADDRESS), abi=POOL_ABI)
def get_dex_price():
    # Buscando as reservas direto do contrato
    reserves = pool_contract.functions.getReserves().call()
    
    # No pool temos o token0 e o token1. Vamos supor: token0 = USDC (6 decimais), token1 = WETH (18 decimais)
    # Atenção: sempre valide direto no contrato qual token é o zero e qual é o um!
    reserve_usdc = reserves[0] / 10**6
    reserve_weth = reserves[1] / 10**18
    
    # Preço do WETH em USDC com base na fórmula do pool
    price_dex = reserve_usdc / reserve_weth
    return price_dex
def get_cex_price():
    # Puxando o order book de Spot da Bybit
    orderbook = exchange.fetch_order_book('ETH/USDC')
    bid = orderbook['bids'][0][0] if len(orderbook['bids']) > 0 else 0
    ask = orderbook['asks'][0][0] if len(orderbook['asks']) > 0 else 0
    return bid, ask
def monitor():
    print("Iniciando o monitoramento de ineficiências de mercado...")
    while True:
        try:
            dex_p = get_dex_price()
            cex_bid, cex_ask = get_cex_price()
            
            if dex_p == 0 or cex_bid == 0:
                continue
                
            # Cenário 1: Mais barato na DEX, mais caro na CEX. Compra na DEX, despeja na CEX.
            spread_to_cex = ((cex_bid - dex_p) / dex_p) * 100
            
            # Cenário 2: Mais barato na CEX, mais caro na DEX. Compra na CEX, despeja na DEX.
            spread_to_dex = ((dex_p - cex_ask) / cex_ask) * 100
            
            if spread_to_cex > 0.5: # Limiar de 0.5% para cobrir as taxas e o gas
                print(f"[!] Sinal! DEX mais BARATA. DEX: {dex_p:.2f} | CEX Bid: {cex_bid:.2f} | Spread: {spread_to_cex:.2f}%")
                
            if spread_to_dex > 0.5:
                print(f"[!] Sinal! CEX mais BARATA. CEX Ask: {cex_ask:.2f} | DEX: {dex_p:.2f} | Spread: {spread_to_dex:.2f}%")
                
            time.sleep(2) # Evite dar spam no nó e na exchange para não tomar ban de IP
            
        except Exception as e:
            print(f"Erro detectado no loop: {e}")
            time.sleep(5)
if __name__ == "__main__":
    monitor()

Tática Avançada: Volumes Cruzados (Hedging)

Ficar movendo token de um lado para o outro de forma física é coisa do passado. Até a transação confirmar na blockchain e a exchange liberar o saldo (exigindo de 15 a 30 confirmações de rede), o mercado já andou. O spread derrete. Os profissionais exploram a ineficiência de outra forma.

Nós já deixamos o saldo alocado previamente nas duas plataformas.

Exemplo: Você tem $1000 e 1 ETH de saldo na CEX. E tem exatamente a mesma quantia na sua MetaMask rodando na rede Arbitrum.

O script acende o alerta: na DEX o preço do ETH caiu para $2900, enquanto na CEX ele segue firme em $2950.

A sua jogada: No exato mesmo segundo, você executa as ordens nas duas pontas. Executa o Swap na DEX (comprando ETH com stables a $2900) e vende 1 ETH na CEX a $2950. No mesmo instante. O valor total dos seus ativos aumentou exatamente na diferença do spread. Zero necessidade de transferências entre exchanges. Os saldos apenas se redistribuíram internamente e o lucro foi travado em stablecoins. Depois, quando o mercado acalmar, você faz o rebalanceamento das contas por um trâmite normal de transferência.

E o ponto mais crítico de todos: cuidado com o "toxic flow" (fluxo tóxico). Se o preço na CEX estiver caindo igual a uma bigorna (derretendo de vez), nem pense em tentar pescar esse ativo na DEX manualmente. O spread vai parecer gigantesco, mas é só porque o pool ainda não teve tempo de atualizar os cálculos matemáticos. Você vai tentar segurar a faca caindo e, 5 segundos depois, os bots de arbitragem vão passar por cima do pool arrancando tudo e deixando você posicionado em um saco de tokens desvalorizados que derretem a cada segundo.

Sniping de Pools v3: Como não ser totalmente ruanado na liquidez concentrada

Se você ainda acha que a Uniswap v2 é o ápice da evolução, sinto dizer, mas você ficou preso em 2021. Hoje, o grosso do volume real e os melhores spreads estão na Uniswap v3 e nos seus forks (PancakeSwap v3, QuickSwap v3). Aqui, a mecânica de AMM muda da água para o vinho. Diferente da v2, onde a liquidez é espalhada do zero ao infinito, na v3 ela é concentrada em faixas de preço específicas — os chamados ticks.

O que isso significa na prática para nós? Um Price Impact brutal se o preço sair da faixa onde a liquidez está concentrada.

Se um token dropa um pump em uma CEX e a liquidez no tick atual da v3 seca, o preço dentro da DEX dá um salto gigantesco (um baita squeeze). Você bate o olho em um spread de 15%, dropa um ape in na pool, mas o contrato executa sua transação no pior preço possível, porque simplesmente não tinha ordem dentro daquele range estreito.

Fórmula de liquidez da Uniswap v2: x * y = k (Mudança suave de preço)
Fórmula da Uniswap v3:             (x + L / √P_b) * (y + L * √P_a) = L^2 (Mudança em degraus/ticks)

Para calcular na mão o spread real em uma pool v3, não basta olhar as reservas. Você precisa obrigatoriamente puxar e analisar o slot0 do smart contract da pool.

Checklist para validar uma pool v3 antes de entrar:

  • Puxamos o sqrtPriceX96 direto da função slot0. Esse é o preço atual em um formato específico deles.
  • Verificamos o tick atual.
  • Olhamos a profundidade da liquidez (liquidity) no tick atual. Se estiver perto de zero, o spread é puramente artificial e você vai ficar preso em uma posição com um preço de entrada horroroso.

Executando a transação: Como passar a perna nos bots de MEV no estilo

Imagine que você pescou um spread insano nas redes Ethereum ou Base. Você vai lá e envia a transação pelo Metamask padrão. O que rola em seguida? Sua tx cai direto no mempool (a fila pública). Os bots de MEV (Maximum Extractable Value) escaneiam o mempool 24/7. Eles identificam a sua transação, sacam que ela vai dar US$ 100 de lucro limpo e geram uma tx idêntica, mas metem 1 gwei a mais no gas price.

O validador da blockchain prioriza a transação deles e bota no bloco primeiro. O bot vai lá e rouba o seu spread. A sua transação roda logo atrás, só que já sai no prejuízo ou toma um revert (é cancelada), queimando o seu gás de graça. Você acabou de tomar um front-running clássico. É foda, mas é o jogo.

Como se proteger:

  • Use um RPC privado. Esqueça as configs padrão da sua carteira. Na Ethereum Mainnet, configure o RPC da Flashbots (https://rpc.flashbots.net). Em redes como BNB Chain ou Polygon, busque por nodes privados especializados (tipo MEV-Share ou MevBlocker). Sua transação vai direto para os validadores, bypassando o mempool público. Os bots nem vão ver a cor da sua tx.
  • Ajuste um Slippage Tolerance bem apertado. Nas configs da DEX, defina a tolerância de derrapagem em no máximo 0.5% para pares líquidos e estourando 1-1.5% para as shitcoins da vida. Se algum bot tentar te empurrar, a transação simplesmente vai dar revert, salvando o grosso do seu capital (você só perde uns centavos de gás).

Exemplo prático: Anatomia de um caso real

Vamos destrinchar como funciona um ciclo perfeito, sem historinha. Token X (um ativo qualquer de um jogo de forma descentralizada).

  • Monitoramento: Na Bybit, o preço do token derrete do nada de US$ 1.00 para US$ 0.90 por causa de um dump massivo de algum seed investor. O livro de ordens de compra (o bid) está bem pesado, consistente.
  • Análise na DEX: Na PancakeSwap (rede BNB Chain), o preço do token ainda está lagado, sustentando o patamar de US$ 0.98. A pool de liquidez tem US$ 200.000.
  • Cálculo de size: Queremos girar US$ 2.000. Validamos o Price Impact na PancakeSwap. Despejando US$ 2.000 de tokens na pool, o preço oscila só 0.3%. Ou seja, vamos fechar a venda em uma média de US$ 0.977.

A matemática da operação:

  • Compra na Bybit: US$ 2.000 / US$ 0.90 = 2222.2 Tokens X.
  • Taxa da CEX (Taker 0.1%): menos 2.2 tokens. Sobram 2220.
  • Saque para a carteira: Taxa de rede fixa de 10 Tokens X. Batem 2210 tokens na carteira.
  • Venda na DEX: 2210 * US$ 0.977 = US$ 2159.17.
  • Desconto do gás pelo Swap na DEX: cerca de ~US$ 0.15 (na rede BNB).
  • Lucro líquido: US$ 159.02 em uma única perna que levou 3 minutos.

Os market makers da Bybit equilibraram o preço com o da DEX cerca de 4 minutos após o nosso ciclo. A janela de oportunidade fechou. Quem foi rápido, pescou o alpha.

O arsenal de ferramentas do spread farmer pro

Se você não quiser codar todo o seu software do zero, este é o tech stack básico que eu e a maioria dos times de médio porte usamos:

  • DeXito / Dexscreener / GeckoTerminal — Para caçar anomalias de mercado no visual. Fique de olho na aba de "Arbitrage" nessas plataformas de análise especializadas.
  • DeBank / Arkham — Para stalkear e monitorar carteiras de arbitradores foda. Achou uma wallet que vive spawnando transação lucrativa no mempool? Bota na sua watchlist na hora e faz engenharia reversa para ver quais pools ela está ordenhando.
  • Tenderly — Simulador de transações de respeito. Se você está movendo muita grana e está com o c* na mão de dar algum erro no smart contract, rode a tx antes no simulador da Tenderly. Ele te cospe exatamente quanto gás vai queimar e se a chamada vai passar com sucesso em produção.

Operar na mão nesse mercado é totalmente possível, mas o seu maior inimigo vai ser a falta de atenção. Errou a rede, esqueceu de olhar a taxa de saque da CEX, ou clicou em swap sem checar o slippage — pronto, o seu lucro vai direto pro bolso dos validadores da rede. Seja pragmático, calcule os custos até a última casa do centavo e não seja ganancioso.

Martyn Borkowski

I am a crypto trader specializing in digital assets and blockchain markets.

My focus is on identifying opportunities, managing risk, and optimizing strategies to achieve consistent growth in the fast-evolving world of cryptocurrency.

Verification & Professional Profiles: X Profile

...

Deixe seu parecer

O seu endereço de e-mail não será publicado. Campos obrigatórios estão marcados *