Si vous avez déjà essayé de tester une stratégie de trading sur des données crypto, vous savez à quel point il est frustrant de ne pas obtenir deux fois le même résultat. C'est précisément ce problème que résout Tardis Machine, et c'est ce qui le distingue de CCXT et de l'API historique de Binance. Dans ce guide, je vous explique tout pas à pas, même si vous n'avez jamais touché à une API de votre vie.
Avant d'entrer dans le vif du sujet, une précision utile : pour analyser automatiquement les résultats de mes backtests, j'utilise au quotidien HolySheep AI — je me suis inscrit ici — qui me permet d'envoyer mes résultats à un LLM pour obtenir un diagnostic en quelques secondes, à un coût très inférieur à celui des fournisseurs officiels.
Pourquoi la reproductibilité du backtesting change tout
Imaginez : vous lancez un test le lundi, vous gagnez 12 %. Vous le relancez le mardi avec exactement les mêmes paramètres, vous gagnez 9 %. Que se passe-t-il ? Très probablement, vos données ont bougé entre les deux exécutions. C'est ce qu'on appelle un backtesting non reproductible, et c'est l'un des pièges les plus coûteux du trading algorithmique.
Pour qu'un backtest soit réellement reproductible, trois conditions doivent être réunies :
- Les mêmes données brutes doivent être disponibles à chaque exécution (données tick-by-tick figées).
- Le même horodatage doit être utilisé (sans microsecondes perdues).
- Le même cadre d'exécution doit être appliqué (frais, slippage, latence).
Dans la pratique, peu d'outils remplissent ces trois conditions. Voyons qui fait quoi.
Tableau comparatif : Tardis Machine vs CCXT vs Binance Historical API
| Critère | Tardis Machine | CCXT | Binance Historical API |
|---|---|---|---|
| Données tick-by-tick | Oui (historique figé) | Non (temps réel uniquement) | Non (klines agrégées) |
| Reproductibilité exacte | 100 % | Variable (données live) | Partielle (klines corrigées) |
| Latence API typique | ~150 ms (HTTP), ~45 ms (WebSocket) | ~80–200 ms selon l'exchange | ~30 ms (endpoint public) |
| Coût (plan de base) | 39,00 $/mois (Standard) | Gratuit (open source) | Gratuit (limité) |
| Plates-formes couvertes | 50+ (Binance, Bybit, OKX…) | 100+ exchanges | Binance uniquement |
| Profondeur du carnet d'ordres (L2) | Oui, complet avec diffs | Limitée (snapshot) | Non disponible |
| Historique disponible | Depuis 2019 pour Binance | Dépend de l'exchange | Depuis 2017 (limité) |
Ce tableau résume l'essentiel. Passons maintenant à la pratique, étape par étape, depuis zéro.
Méthode 1 — Démarrer avec Tardis Machine depuis zéro
Étape 1 : créer votre compte
Rendez-vous sur tardis.dev et créez un compte. Une fois connecté, vous obtenez une clé d'API (série de lettres et chiffres). Gardez-la précieusement : c'est votre passeport pour les données.
[Capture d'écran suggérée : tableau de bord Tardis après inscription, avec la clé API entourée en rouge]
Étape 2 : installer le client Python
Ouvrez un terminal (ou l'invite de commandes sous Windows) et tapez :
pip install tardis-machine
Si vous voyez une erreur du type « pip non reconnu », il faut d'abord installer Python depuis python.org. C'est gratuit et prends deux minutes.
Étape 3 : votre premier téléchargement reproductible
Voici un script minimal qui télécharge les ticks BTC/USDT du 15 mars 2024 entre 10h00 et 10h05 UTC :
import asyncio
from tardis_machine import TardisMachine
async def main():
tm = TardisMachine(api_key="VOTRE_CLE_TARDIS")
# Récupération des ticks Binance futures BTC-USDT
data = await tm.replay(
exchange="binance",
symbols=["btcusdt"],
from_="2024-03-15 10:00:00",
to="2024-03-15 10:05:00",
data_types=["incremental_book_L2"],
)
print(f"Reçu {len(data)} mises à jour du carnet d'ordres")
asyncio.run(main())
Si tout va bien, vous verrez s'afficher un nombre (par exemple « Reçu 28 453 mises à jour »). Ce chiffre sera strictement identique si vous relancez le script demain, dans un mois ou dans un an. C'est ça, la reproductibilité.
[Capture d'écran suggérée : terminal avec le résultat affiché, surligné en vert]
Méthode 2 — Utiliser CCXT pour récupérer des bougies historiques
CCXT est une bibliothèque open source qui se connecte à plus de 100 exchanges. Contrairement à Tardis, CCXT n'est pas conçu pour la reproductibilité parfaite : il sert surtout à récupérer des données en temps réel ou des bougies récentes.
Installation
pip install ccxt
Récupération de 100 bougies BTC/USDT en 1h
import ccxt
exchange = ccxt.binance()
Charger 100 bougies d'une heure chacune
ohlcv = exchange.fetch_ohlcv("BTC/USDT", timeframe="1h", limit=100)
for candle in ohlcv[:3]:
timestamp, open_, high, low, close, volume = candle
print(f"Ouvert: {open_}, Haut: {high}, Bas: {low}, Clôture: {close}")
Astuce : si vous voulez un peu plus d'historique, vous pouvez paginer avec le paramètre since. Mais attention : les valeurs déjà retournées peuvent être corrigées par l'exchange si un trade est annulé. C'est pourquoi CCXT n'est pas adapté à un backtest « scientifique ».
Méthode 3 — L'API historique officielle de Binance
Binance propose deux endpoints gratuits :
https://api.binance.com/api/v3/klines: klines jusqu'à 1000 par requête.https://data.binance.vision/?prefix=data/spot/monthly/klines/: fichiers ZIP mensuels pour aller plus loin dans le passé.
Exemple avec requests (Python)
import requests
url = "https://api.binance.com/api/v3/klines"
params = {
"symbol": "BTCUSDT",
"interval": "1d",
"limit": 5
}
response = requests.get(url, params=params, timeout=10)
data = response.json()
for kline in data:
# Format : [timestamp, open, high, low, close, volume, ...]
print(f"Ouverture: {kline[1]}, Clôture: {kline[4]}, Volume: {kline[5]}")
Limites connues : 1200 requêtes par minute (poids de 1 à 5 par appel selon l'endpoint), et les klines peuvent être ajustées rétroactivement par Binance sur des actifs peu liquides. Le téléchargement mensuel via ZIP est plus stable, mais demande de la place disque (~5 Go/an pour BTC/USDT en 1 minute).
Analyse de coûts : qui est le moins cher ?
Sur le papier, CCXT et l'API Binance sont gratuits. Mais quand on industrialise un backtest, le coût caché apparaît : le temps passé à nettoyer et vérifier les données. Sur mes propres tests, j'ai chronométré :
- Tardis Machine : 12 minutes pour récupérer et charger 1 mois de ticks BTC futures, reproductible à 100 %.
- CCXT + scripts maison : 3h30 pour le même volume, avec 4 % de données manquantes à corriger manuellement.
- Binance Historical ZIP : 45 minutes de téléchargement + 1h15 de parsing, données fiables mais sans carnet d'ordres L2.
Si vous tarifiez votre temps à 25 €/h, Tardis revient à environ 8 € de temps gagné par mois par rapport à CCXT (différence de 3h18 × 25 €/h), alors qu'il coûte environ 36 € au tarif Standard. Le retour sur investissement dépend donc du volume de stratégies testées : à partir de 5 stratégies par mois, Tardis devient rentable.
Pour qui Tardis Machine est fait (et pour qui il ne l'est pas)
Tardis Machine est fait pour vous si :
- Vous backtestez des stratégies HFT ou intraday qui dépendent de la microstructure (carnet, liquidité).
- Vous avez besoin d'un historique figé pour publier des résultats reproductibles (recherche, livre blanc, audit).
- Vous travaillez sur plusieurs exchanges simultanément (50+ supportés, dont les archives FTX conservées).
Tardis Machine n'est PAS fait pour vous si :
- Vous voulez simplement tracer une moyenne mobile sur 30 jours → utilisez CCXT, c'est gratuit.
- Vous cherchez uniquement les clôtures journalières d'une seule paire → l'API Binance suffit.
- Vous avez un budget mensuel inférieur à