DepthFeed/Polymarket·Backtesting

Comment backtester des stratégies Polymarket sur l'order book

Un dernier prix échantillonné une fois par heure ne vous dira jamais si votre ordre aurait été exécuté. Voici comment backtester Polymarket contre le book qu'il aurait réellement traversé.

DepthFeed··8 min

Pour backtester correctement une stratégie Polymarket, vous rejouez l'order book historique que la stratégie aurait réellement traversé — l'échelle complète bid/ask à chaque changement — et vous dimensionnez les fills par rapport à la liquidité qui se trouvait véritablement en attente. Backtester sur un dernier prix ou un simple mid surestime systématiquement votre edge, car cela masque le spread et le slippage qu'un ordre réel doit payer.

Pourquoi les backtests sur dernier prix mentent

La plupart des données Polymarket disponibles gratuitement se résument au dernier prix traité, souvent échantillonné une fois par heure. C'est suffisant pour tracer un graphique, et rien de plus. Un backtest doit répondre à une question plus difficile : si mon ordre avait été en attente (ou avait traversé le spread) à cet instant, aurait-il été exécuté, dans quelle taille, et à quel prix ?

Y répondre exige l'order book — chaque bid et chaque ask en attente avec sa taille — et non un chiffre unique. Une stratégie backtestée contre le mid suppose qu'elle a toujours été exécutée au mid avec un slippage nul, ce qui n'est jamais le cas. Sur les marchés crypto à très court terme, où les spreads s'élargissent à l'approche du règlement, cette hypothèse peut transformer une stratégie perdante en gagnante apparente.

Étape 1 — Récupérer des données d'order book full-depth

Partez de données qui enregistrent le book complet des deux côtés, capturées à chaque changement plutôt qu'à intervalle fixe. DepthFeed capture Polymarket en mode event-driven directement depuis le websocket CLOB, si bien que chaque événement de book et de changement de prix est enregistré avec l'échelle bid/ask complète — et non un échantillon horaire ou par minute qui laisse échapper la vie d'un marché de cinq minutes.

Récupérez les marchés voulus via l'API REST : découvrez-les avec GET /v3/{coin}/markets, puis tirez la profondeur depuis /v3/{coin}/markets/{id}/snapshots. Chaque snapshot porte les tableaux de prix et de tailles bid/ask, ainsi que les timestamps d'exchange et de réception en epoch-millis.

Étape 2 — Reconstruire le book à chaque instant

Rejouez les snapshots dans l'ordre des timestamps pour reconstituer le book tel qu'il se présentait à n'importe quel instant. Comme les données sont event-driven, la reconstruction est exacte entre les événements — aucune approximation par interpolation. C'est l'état auquel votre stratégie réagit : meilleur bid, meilleur ask, la profondeur derrière chacun, et le spread.

Étape 3 — Modéliser les fills contre la profondeur réelle

Simulez maintenant l'exécution honnêtement. Un ordre marketable parcourt le book : il se remplit d'abord contre le meilleur niveau, puis le suivant, jusqu'à épuiser sa taille — son prix moyen est donc pire que le touch dès qu'il consomme plus que le niveau supérieur. Un ordre en attente rejoint la file et n'est exécuté que si le marché traverse son prix avec suffisamment de taille derrière.

Dimensionner les fills contre l'échelle enregistrée est tout l'enjeu : cela vous donne un slippage et une probabilité de fill réalistes au lieu de la fiction selon laquelle vous auriez toujours traité au mid.

Étape 4 — Joindre le prix du sous-jacent

Les marchés crypto up/down de Polymarket sont pilotés par le mouvement spot de l'actif sous-jacent. Chaque snapshot DepthFeed est joint à un prix de référence Binance haute fréquence via le timestamp en epoch-millis, ce qui vous permet d'aligner l'état du book sur le mouvement spot qui a repricé le contrat — indispensable pour toute stratégie qui trade la relation entre le prix crypto et la probabilité implicite du marché.

Étape 5 — Passer en live avec le même code

L'API REST historique et le flux WebSocket live émettent des objets JSON snapshot identiques. Autrement dit, le loader que vous avez écrit pour rejouer l'historique lit le flux live sans la moindre modification — aucune réécriture entre recherche et production. Backtestez, validez, puis pointez le même code vers wss://api.depthfeed.com/v3/stream et tradez.

Pièges courants

  • Utiliser des données de dernier prix : masque le spread et le slippage ; gonfle les rendements backtestés.
  • Snapshots à intervalle fixe : un échantillon horaire ou par minute manque l'essentiel de la vie d'un marché de 5 minutes.
  • Ignorer la position dans la file : supposer que les ordres en attente sont toujours exécutés surestime les stratégies passives.
  • Look-ahead bias : ne réagissez qu'aux données dont le timestamp de réception est antérieur ou égal à l'instant de votre décision.
  • Négliger le sous-jacent : l'edge crypto up/down réside généralement dans la relation spot-vers-probabilité.

Key takeaways

  • 01Backtestez contre l'order book, pas contre le dernier prix — c'est la profondeur qui détermine les fills.
  • 02Utilisez des données event-driven : les échantillons à intervalle fixe manquent la vie des marchés à court terme.
  • 03Modélisez les ordres marketable qui parcourent le book et les ordres en attente qui patientent dans la file.
  • 04Joignez le prix crypto sous-jacent pour capturer la relation spot-vers-probabilité.
  • 05Choisissez des données dont l'historique et le flux live partagent un seul format, pour trader le code que vous avez backtesté.

Un dernier prix échantillonné une fois par heure ne vous dira jamais si votre ordre aurait été exécuté. Voici comment backtester Polymarket contre le book qu'il aurait réellement traversé.

Commencer gratuitement

Vos questions, nos réponses.

Seulement en partie. L'API publique de Polymarket expose les marchés actuels, les trades et un endpoint d'historique des prix, mais elle ne sert pas de snapshots historiques de l'order book — vous ne pouvez donc pas rejouer le book en attente qu'une stratégie aurait traversé. Cette profondeur historique est précisément la lacune que comblent les données d'order book tierces.