Transformer les funding rates crypto en source de rendement passif
Comprendre les funding rates des futures perpétuels, les lire comme signal de marché et les récupérer en Python avec CCXT.
Sur les marchés de futures perpétuels, un paiement s'effectue toutes les 8 heures entre acheteurs et vendeurs. La plupart subissent le funding rate (taux de financement) comme un coût, mais avec la bonne position, ce flux peut devenir un rendement régulier, sans exposition au prix.
C'est le principe du carry trade (stratégie de portage) : une position delta-neutre (c'est-à-dire insensible aux variations de prix) qui collecte le funding au lieu de le subir. Mais avant d'en arriver là, il faut comprendre ce mécanisme, ce qu'il révèle sur le marché, et comment le récupérer en Python.
Pourquoi les funding rates existent
Les futures classiques ont une date d'expiration. À l'échéance, le prix du contrat converge mécaniquement vers le prix spot (le prix au comptant). Les futures perpétuels, eux, n'expirent jamais. Sans mécanisme de correction, leur prix pourrait dériver indéfiniment par rapport au marché.
C'est là qu'intervient le funding rate. Toutes les 8 heures sur la plupart des exchanges, un paiement s'effectue entre les positions longues et courtes. Si le prix du perpétuel est au-dessus du spot, les longs paient les shorts pour ramener le prix vers le bas. Si le perpétuel est en dessous du spot, ce sont les shorts qui paient les longs.
En l'absence de déséquilibre entre longs et shorts, le funding rate se stabilise autour de 0,01 % par période de 8 heures, soit environ 0,03 % par jour. C'est le cas sur la plupart des exchanges (Binance, Bybit, Bitget). Mais en période de forte spéculation, il peut monter à 0,1 % ou plus, ce qui représente plus de 10 % par mois en coûts pour le côté dominant.
Ce que le funding rate révèle sur le marché
Au-delà du mécanisme technique, le funding rate est un indicateur de positionnement. Un taux élevé et positif signale que la majorité des traders sont longs sur les perpétuels. Le marché est optimiste, peut-être trop : les phases de funding extrême précèdent parfois des corrections, car le coût de maintien des positions longues finit par forcer des clôtures.
À l'inverse, un funding très négatif indique un excès de positions short, ce qui peut signaler une peur excessive.
Le graphique ci-dessous montre l'évolution du funding rate BTC/USDT sur Binance, sur les dernières semaines. On observe bien l'alternance entre périodes de dominance des longs (barres vertes) et périodes de dominance des shorts (barres rouges), avec un taux qui oscille autour de zéro et dépasse rarement le seuil neutre de 0,01 %.

Le funding rate ne prédit pas la direction du marché, mais il mesure l'intensité de la conviction des participants. Combiné à d'autres indicateurs (open interest (le nombre total de contrats ouverts), volume, liquidations), il offre une lecture du sentiment plus fine que le prix seul. Passons à la pratique : comment récupérer ces données automatiquement ?
Récupérer les funding rates en Python
Pour récupérer les funding rates automatiquement, nous utiliserons CCXT (CryptoCurrency eXchange Trading Library), la librairie Python open-source que nous utilisons régulièrement. Elle unifie l'accès aux API de plus de 100 exchanges, ce qui permet d'adapter les exemples ci-dessous à n'importe quelle plateforme en changeant une seule ligne.
Récupérer le funding rate actuel d'une paire sur Binance :
import ccxt
exchange = ccxt.binance()
funding = exchange.fetch_funding_rate("BTC/USDT:USDT")
print(f"Funding rate actuel : {funding['fundingRate']:.4%}")
print(f"Prochain funding : {funding['fundingDatetime']}")
# Exemple de résultat :
# Funding rate actuel : 0.0100%
# Prochain funding : 2026-03-23T16:00:00.000Z
Pour analyser l'évolution dans le temps, fetch_funding_rate_history permet de récupérer l'historique. En bouclant sur plusieurs paires, on peut comparer les funding rates et repérer les déséquilibres :
import ccxt
import pandas as pd
exchange = ccxt.binance()
symbols = ["BTC/USDT:USDT", "ETH/USDT:USDT", "SOL/USDT:USDT", "DOGE/USDT:USDT"]
for symbol in symbols:
history = exchange.fetch_funding_rate_history(symbol, limit=500)
df = pd.DataFrame(history)
avg_rate = df["fundingRate"].mean()
annualized = avg_rate * 3 * 365
print(f"{symbol:20s} | Moy: {avg_rate:+.4%} | Annualisé: {annualized:+.2%}")
# Exemple de résultat :
# BTC/USDT:USDT | Moy: +0.0100% | Annualisé: +10.95%
# ETH/USDT:USDT | Moy: +0.0150% | Annualisé: +16.43%
# SOL/USDT:USDT | Moy: +0.0300% | Annualisé: +32.85%
# DOGE/USDT:USDT | Moy: -0.0050% | Annualisé: -5.48%
Le carry trade : collecter le funding
Une stratégie souvent utilisée pour récolter le funding est le « carry trade » (stratégie de portage). Le principe repose sur deux positions simultanées : achat au comptant (spot) et ouverture d'un short du même montant en perpétuel. Les deux jambes s'annulent en termes de prix, rendant la stratégie insensible aux variations du marché. Ce qui reste, c'est le flux de funding.
Tant que le funding rate est positif (ce qui est le cas la majorité du temps en marché haussier), la position short sur le perpétuel reçoit le paiement toutes les 8 heures. Sur une base annualisée, cela peut représenter un rendement significatif : avec un funding rate moyen de 0,01 % par 8 heures, on obtient environ 10,95 % annualisé (0,01 % × 3 paiements par jour × 365 jours).
Les risques ne sont pas nuls pour autant. Le funding peut devenir négatif, inversant le flux. Et une variation brusque du prix de marque (mark price) peut entraîner une liquidation sur la jambe perpétuelle si le sizing est trop agressif. Le carry trade est un rendement, pas un cadeau sans risque.
Pour automatiser cette stratégie, une approche possible serait de combiner deux moyennes mobiles du funding rate. Une moyenne courte (7 jours, soit 21 périodes) sert à décider d'entrer ou sortir : tant qu'elle reste positive, la position collecte du funding. Une moyenne longue (30 jours) sert de filtre de régime : si elle est négative, le marché n'est pas favorable au carry, même si la courte remonte brièvement. Ce type de filtre évite d'entrer sur un rebond temporaire dans un marché baissier, pour se retrouver en perte quelques jours plus tard.
Carry trade et funding rate : mise en garde sur les coûts
Chaque entrée et sortie implique quatre ordres au marché (achat spot, vente perpétuel, puis l'inverse pour clôturer). Sur un exchange comme Bitget, avec des frais taker (ordres exécutés immédiatement au prix du marché) de 0,10 % en spot et 0,06 % en futures, le coût aller-retour atteint 0,32 %. À cela s'ajoute le slippage : quatre ordres au marché exécutés quasi simultanément, sur deux marchés différents, impliquent un écart entre le prix attendu et le prix réel. Plus l'actif est peu liquide, plus ce coût caché pèse sur le rendement.
Avec un funding rate moyen de 0,01 % par période (soit 0,03 % par jour), il faut environ 11 jours de collecte pour simplement couvrir les frais et le slippage. Le rendement réel ne commence qu'après. Historiquement, le funding rate est positif 70 à 90 % du temps selon les périodes (source : BitMEX, analyse sur 9 ans). La moyenne long terme tourne autour de 0,007 % par 8 heures, soit environ 7-8 % annualisé. En marché haussier, le taux moyen monte autour de 0,01-0,02 %, ce qui place le rendement mensuel réaliste entre 1 et 2 % après frais.
Mais le funding rate ne reste pas toujours à son niveau neutre. En période de forte activité ou d'euphorie, il peut atteindre 0,05 à 0,1 % par période, voire plus. Ces pics réduisent drastiquement le temps de break-even et offrent des fenêtres de rendement bien supérieures à la moyenne. Le carry trade ne nécessite pas de maintenir la position en permanence : il suffit d'être en position au moment de la distribution, toutes les 8 heures. Le reste du temps, le capital peut être utilisé ailleurs. Surveiller les moments où le funding s'envole, entrer juste avant le règlement, puis sortir, est une forme d'optimisation de marché qui transforme le carry trade d'une stratégie passive en un outil tactique.
Commentaires ()