Appuyez sur ESC pour fermer

Arbitrage CEX/DEX : Manuel Trading de Spread Crypto

Anatomie d'un spread : D'où vient l'imbalance ?

Le marché est inefficace. Surtout en plein cœur d'un gros FOMO ou d'un panic sell. Sur les CEX (Binance, Bybit, OKX), le prix est dicté par les market makers et les order books. Là-bas, tout se joue à la microseconde selon la profondeur du carnet. Côté DEX, le prix répond aux règles des AMM (Automated Market Makers) et reste matrixé par la formule mathématique de la pool (comme le produit constant $x \times y = k$).

Si une baleine commence à dump massivement un token au market sur un CEX, le prix s'effondre instantanément. Et sur le DEX ? C'est le calme plat, du moins jusqu'à ce qu'un premier arbitrageur ou un user lambda débarque. Ce décalage temporel (le lag) entre l'update de l'order book sur le CEX et le rééquilibrage des tokens dans la pool du DEX, c'est exactement là qu'on fait notre beurre.

Mais attention au piège dont personne ne parle sur les canaux publics : le spread est souvent une illusion. Vous repérez un delta de 3%, vous vous hypez, vous ape-in, mais la pool est complètement broke. Il y a trois centimes de liquidité. Dès que vous allez cliquer sur Swap, le prix va se retourner contre vous et votre trade va finir en MV crasseuse. C'est ce qu'on appelle le Price Impact (l'impact sur le prix).

Risk Management : Ce qui va trap votre capital

Avant de hard-coder vos bots ou de setup vos scanners, posez-vous face à la checklist des risques. L'arbitrage est un jeu de rapidité à espérance mathématique négative si vous négligez les frais cachés.

Type de coût / RisqueOù est le loupComment setup sa parade
CEX Withdrawal LagLe CEX freeze vos retraits pendant 5 à 10 minutes. Le temps que ça passe, le spread s'est déjà refermé.Laisser de la liquidité des deux côtés. Travailler en "ordres miroirs" (hedging) sans jamais faire transiter physiquement les tokens d'un exchange à l'autre.
Price ImpactLiquidité trop faible dans la pool du DEX. Un ordre trop lourd défonce le prix d'exécution.Calculer la profondeur de la pool. Le size de votre position ne doit jamais dépasser 1 à 2 % de la TVL de la pool.
Gas & MEVSur les chaînes EVM (Ethereum, BSC, Arbitrum), des bots vont sniffer votre transaction dans le mempool et vous front-run en payant plus de gas.Passer par un RPC Flashbots (sur le Mainnet) ou des endpoints RPC sécurisés pour ne pas call sa transaction en public.
CEX FeesFrais Maker/Taker + les frais fixes de transferts de tokens (withdraw).Faire du volume sur le CEX pour build son statut VIP. Sur un exchange comme EXMON par exemple, les frais Maker/Taker sont à zéro, le cheat code parfait pour enchaîner les boucles.

Chasser à la main ou automatiser ?

Scouter des opportunités d'arbitrage 100 % à la main en 2026, c'est du pur masochisme. Par contre, vous devez impérativement maîtriser la mécanique sous-jacente.

La strat est ultra basique. On va sur CoinMarketCap ou CoinGecko. On filtre les tokens à faible market cap (des shitcoins, mais actifs, avec un minimum de volume). On check l'onglet « Markets » (« Marchés ») et on guette les écarts de prix. Si on repère une diff entre un exchange comme Gate.io et une pool Uniswap/PancakeSwap sur Arbitrum ou Base (là où le gas vaut que dalle), on commence à creuser.

La checklist pas à pas du mode manuel :

  • Vérifier le statut des dépôts/retraits du token sur le CEX. Si le wallet est suspendu, le spread est fake. Next.
  • Check le réseau. Le token sur le CEX doit tourner exactement sur la même blockchain que la pool du DEX. Les bridges vont vous faire perdre votre temps et votre ROI.
  • Évaluer le slippage. Simulez votre size d'achat/vente directement sur l'UI du DEX et analysez le Price Impact réel. Si ça bouffe le spread, l'opportunité est morte.

Le script de monitoring : Traquer le spread comme un pro

Trêve de blabla, on passe au dev. On va build un script qui va fetch le prix du CEX (via CCXT) et parser le prix de la pool directement depuis le smart contract du DEX (via Web3.py), sans passer par les front-ends codés avec les pieds qui laguent.

Voici un script fonctionnel taillé pour une boucle Bybit (CEX) et une pool Uniswap v2 sur Arbitrum (DEX). C'est du code prêt pour la prod.

Python

import time
from web3 import Web3
import ccxt
# Connexion au node. Utilisez des RPC privés et rapides, les publics sont constamment à la traîne
RPC_URL = "https://arb1.alpharc.io/v1/your-api-key" # À remplacer par votre propre RPC actif
w3 = Web3(Web3.HTTPProvider(RPC_URL))
if not w3.is_connected():
    raise Exception("Node down, va falloir fix ça")
# On setup l'exchange via CCXT
exchange = ccxt.bybit({
    'enableRateLimit': True,
})
# Exemple avec la pool Uniswap V2 (or Sushi) sur Arbitrum (WETH/USDC)
# Vous pouvez swap l'adresse par n'importe quel shitcoin, il faut juste l'adresse de la pool du pair
POOL_ADDRESS = "0x905dfCD56492171426f30a7d11d68E1da87ab64B" 
# L'ABI de la pool V2. On a juste besoin de getReserves, le reste c'est du bruit, on s'en fout
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():
    # On ping les réserves en direct du contract
    reserves = pool_contract.functions.getReserves().call()
    
    # La pool contient le token0 et le token1. Hypothèse : token0 = USDC (6 décimales), token1 = WETH (18 décimales)
    # Attention : vérifiez toujours l'ordre des tokens (lequel est le 0, lequel est le 1) sur le contract !
    reserve_usdc = reserves[0] / 10**6
    reserve_weth = reserves[1] / 10**18
    
    # Prix du WETH libellé en USDC selon la formule de la pool
    price_dex = reserve_usdc / reserve_weth
    return price_dex
def get_cex_price():
    # On récupère l'order book Spot de 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("Démarrage du monitoring des inefficacités de marché...")
    while True:
        try:
            dex_p = get_dex_price()
            cex_bid, cex_ask = get_cex_price()
            
            if dex_p == 0 or cex_bid == 0:
                continue
                
            # Scénario 1 : Moins cher sur le DEX, plus cher sur le CEX. On buy sur le DEX, on dump sur le CEX.
            spread_to_cex = ((cex_bid - dex_p) / dex_p) * 100
            
            # Scenarió 2 : Moins cher sur le CEX, plus cher sur le DEX. On buy sur le CEX, on dump sur le DEX.
            spread_to_dex = ((dex_p - cex_ask) / cex_ask) * 100
            
            if spread_to_cex > 0.5: # Trigger à 0.5% pour break-even les fees et le gas
                print(f"[!] Signal! DEX sous-évalué. DEX: {dex_p:.2f} | CEX Bid: {cex_bid:.2f} | Spread: {spread_to_cex:.2f}%")
                
            if spread_to_dex > 0.5:
                print(f"[!] Signal! CEX sous-évalué. CEX Ask: {cex_ask:.2f} | DEX: {dex_p:.2f} | Spread: {spread_to_dex:.2f}%")
                
            time.sleep(2) # On évite de spam le node et l'exchange comme un sauvage pour pas se faire IP ban
            
        except Exception as e:
            print(f"Erreur dans la boucle : {e}")
            time.sleep(5)
if __name__ == "__main__":
    monitor()

Stratégie Advanced : Les ordres miroirs (Hedging)

Faire transiter physiquement ses cryptos d'une plateforme à l'autre, c'est une méthode de boomer. Le temps que la transaction se valide on-chain et que l'exchange crédit votre balance (ce qui demande parfois 15 à 30 confirmations), le marché a bougé. Le spread s'est évaporé. Les pros exploitent l'anomalie différemment.

On split ses balances au préalable sur les deux plateformes.

Exemple : Vous avez un call de 1 000 $ et 1 ETH sur votre compte CEX. Et vous disposez exactement du même montant sur votre Metamask sur le réseau Arbitrum.

Le script flash un signal : le prix de l'ETH sur le DEX vient de crash à 2 900 $, alors que sur le CEX il maintient sa position à 2 950 $.

Votre move : vous déclenchez l'action simultanément, à la même seconde. Vous swappez sur le DEX (achat d'ETH via vos stables à 2 900 $) et vous shortez/vendez votre ETH sur le CEX à 2 950 $. La valeur globale de vos assets vient de prendre la diff du spread dans les dents. Pas un seul transfert inter-exchange. Vos balances se sont rééquilibrées, votre profit est lock en stables. Plus tard, quand le marché sera redevenu calme, vous n'aurez plus qu'à lisser vos positions avec un bête transfert de routine.

Dernier point ultra important : méfiez-vous du « toxic flow ». Si le prix du CEX est en train de faire un voyage au centre de la terre en ligne droite, ne vous amusez surtout pas à racheter l'asset à la main sur le DEX. Le spread va vous paraître indécent, mais c'est juste que la pool n'a pas encore eu le temps de recalculer l'asymétrie. Vous allez juste catch un couteau qui tombe. 5 secondes plus tard, les bots d'arbitrage MEV vont ravager la pool encore plus bas, vous laissant bags de gros tokens sans valeur qui continuent de dump dans vos mains.

Sniping de pools v3 : comment ne pas se faire rincer sur la liquidité concentrée

Si vous pensez encore qu’Uniswap v2 est le sommet de la DeFi, vous êtes resté bloqué en 2021. Aujourd'hui, le gros des volumes et les spreads les plus juteux se trouvent sur Uniswap v3 et ses forks (PancakeSwap v3, QuickSwap v3). Ici, la mécanique des AMM change du tout au tout. Contrairement à la v2 où la liquidité est diluée de zéro à l’infini, la v3 concentre la liquidité sur des tranches de prix bien précises qu'on appelle des ticks.

Qu'est-ce que ça implique pour nous ? Un Price Impact absolument destructeur dès que le prix sort de la zone de liquidité.

Si un token se fait pumper sur un CEX et que la liquidité du tick actuel de la v3 se fait vider, le prix sur le DEX va taper un énorme gap (un gros squeeze). Vous repérez un spread de 15%, vous apez aveuglément dans la pool, et le smart contract exécute votre transaction au pire prix possible parce qu'il n'y avait tout simplement aucun ordre à l'intérieur de ce range ultra-serré.

Formule de liquidité Uniswap v2 : x * y = k (Évolution fluide du prix)
Formule Uniswap v3 :             (x + L / √P_b) * (y + L * √P_a) = L^2 (Évolution par paliers)

Pour calculer manuellement le spread réel d'une pool v3, connaître les réserves ne suffit pas. Vous devez impérativement parser le slot0 du smart contract de la pool.

Checklist de vérification d'une pool v3 avant d'entrer :

  • On extrait le sqrtPriceX96 de la fonction slot0. C'est le prix actuel encodé dans un format bien spécifique.
  • On checke le tick actuel.
  • On analyse la profondeur de la liquidité (liquidity) sur ce tick précis. Si elle est proche de zéro, le spread est totalement artificiel et vous allez vous faire piéger dans une position avec un point d'entrée catastrophique.

Routage des transactions : comment fumer les bots MEV au virage

Disons que vous avez dégoté un spread magnifique sur Ethereum ou Base. Vous balancez votre transaction depuis un Metamask classique. Qu'est-ce qui se passe ensuite ? Votre tx atterrit dans le mempool (la file d'attente publique). Les bots MEV (Maximum Extractable Value) scannent le mempool 24h/24 et 7j/7. Ils repèrent votre transaction, captent qu'elle va générer 100 $ de profit gratuit, et créent exactement la même tx en rajoutant juste 1 gwei de plus sur le gas price.

Le validateur de la blockchain va traiter leur transaction en premier. Le bot vient de vous piquer votre spread. Votre transaction passe juste après, mais elle s'exécute à perte ou finit par revert (s'annuler), tout en cramant vos frais de gas. Vous venez tout juste de vous faire front-run. C'est rageant, mais c'est le jeu.

Comment se protéger :

  • Utilisez un RPC privé. Oubliez les paramètres par défaut de votre wallet. Sur l'Ethereum Mainnet, configurez le RPC de Flashbots (https://rpc.flashbots.net). Sur des réseaux comme la BNB Chain ou Polygon, cherchez des nœuds privés spécialisés (comme MEV-Share ou MevBlocker). Votre transaction va contourner le mempool public pour être envoyée directement aux validateurs. Les bots ne la verront même pas passer.
  • Configurez un Slippage Tolerance ultra-serré. Dans les paramètres du DEX, bloquez le glissement de prix à 0.5% max pour les paires liquides, et 1 à 1.5% grand maximum pour les shitcoins. Si un bot tente de vous décaler, la tx va simplement revert, ce qui préservera votre capital de départ (quitte à perdre trois cacahuètes en gas).

Exemple pratique : décryptage d'un cas réel

Voyons concrètement à quoi ressemble une boucle parfaite. Pas de chichi. Token X (un actif de gaming décentralisé classique).

  • Monitoring : Sur Bybit, le prix du token s'effondre soudainement de 1.00 $ à 0.90 $ suite au dump massif d'un des gros investisseurs privés. Le carnet d'ordres à l'achat (le bid) reste bien dense.
  • Analyse DEX : Sur PancakeSwap (réseau BNB Chain), le prix du token lagge encore et se maintient à 0.98 $. La pool de liquidité affiche 200 000 $.
  • Calcul du sizing : On veut faire tourner 2 000 $. On vérifie le Price Impact sur PancakeSwap. En vendant pour 2 000 $ de tokens dans la pool, le prix ne va bouger que de 0.3%. Ce qui signifie qu'on va sortir notre vente à une moyenne de 0.977 $.

La commpta de la boucle :

  • Achat sur Bybit : 2 000 $ / 0.90 $ = 2222.2 Tokens X.
  • Frais du CEX (Taker 0.1%) : moins 2.2 tokens. Il reste 2220 tokens.
  • Retrait vers le wallet : les frais de réseau sont fixes à 10 Tokens X. Il y a 2210 tokens qui arrivent sur le wallet.
  • Vente sur le DEX : 2210 * 0.977 $ = 2159.17 $.
  • Moins le gas pour le Swap sur le DEX : environ 0.15 $ (sur le réseau BNB).
  • Profit net : 159.02 $ sur une seule boucle bouclée en 3 minutes.

Les market makers de Bybit ont recollé au prix du DEX environ 4 minutes après notre arbitrage. La fenêtre de tir s'est refermée. Premier arrivé, premier servi.

Le stack d'outils du spread farmer pro

Si vous n'avez pas envie de coder tout votre soft à partir de zéro, voici le tech stack utilisé par la plupart des équipes de taille moyenne et des chasseurs d'alpha :

  • DeXito / Dexscreener / GeckoTerminal — Pour repérer visuellement les anomalies de marché. Surveillez de près l'onglet "Arbitrage" sur les plateformes d'analyse spécialisées.
  • DeBank / Arkham — Pour tracker les wallets des meilleurs arbitragistes. Vous avez trouvé un wallet qui enchaîne les transactions profitables dans le mempool ? Mettez-le en watchlist et analysez quelles pools il est en train de traire.
  • Tenderly — Un simulateur de transactions. Si vous brassez de gros volumes et que vous flippez qu'un smart contract vous renvoie une erreur, passez d'abord la tx dans le simulateur de Tenderly. Il vous affichera précisément le gas consommé et si les conditions passent en conditions réelles.

Bosser à la main sur ce marché reste faisable, mais votre pire ennemi sera l'inattention. Vous vous trompez de réseau, vous oubliez de checker les frais de retrait du CEX, ou vous cliquez sur swap sans regarder le slippage, et tout votre profit part direct dans la poche des validateurs. Restez pragmatique, calculez vos coûts au micro-centime près et ne soyez pas gourmand.

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

...

Partager votre avis

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués *