31 août 2026 · marchés prédictifs

Ce qui casse quand on backteste les marchés prédictifs : journal de huit jours

Ce qui casse quand on backteste les marchés prédictifs : journal de huit jours

Les marchés prédictifs semblent être la chose la plus facile au monde à backtester. Le prix se situe entre [0, 1]. Le gain est d’un dollar ou de rien. Pas de levier, pas de financement, pas de base, pas d’étrangeté de swap perpétuel à 00:00 UTC. Nous avions déjà un backtester capable de gérer les contrats perpétuels crypto avec frais, financement et impact, et nous comptions passer deux jours à l’adapter avant de commencer à générer des stratégies.

Il nous en a fallu huit. Voici le journal, dans l’ordre à peu près, y compris le jour où la courbe de capital semblait incroyable et l’était effectivement.

Jour 1 : l’adaptateur qui aurait dû être trivial

La correspondance initiale était directe et semblait simple. Un marché est un instrument. Le prix YES est le prix. Acheter YES, c’est être long ; acheter NO, c’est être short. Le règlement clôture de force la position à 1.00 ou à 0.00. On alimente la même boucle d’événements avec la série de prix horaires, et le tour est joué.

Cette correspondance résiste environ quatre-vingt-dix minutes au contact des données réelles. La première chose à lâcher a été la série de rendements. Toute notre couche de risque — dimensionnement des positions, ciblage de volatilité, calcul du Sharpe — partait du principe qu’il s’agissait des rendements logarithmiques d’un instrument continu. Un marché qui passe de 0.04 à 0.00 a un rendement logarithmique indéfini et une perte totale bien réelle. Et un marché à 0.04 trois jours avant son règlement est fondamentalement différent d’un marché à 0.04 quatre minutes avant, même si les deux lignes indiquent 0.04.

Nous avons fini par reparamétrer toute la série en fonction du temps restant avant le règlement plutôt que de l’heure, et par traiter le PnL comme terminal plutôt que valorisé au marché. C’était la bonne décision, qui a invalidé chaque morceau de code de reporting en aval.

Jour 2 : la formule des frais fait la stratégie

Sur Kalshi, les frais de transaction ne sont pas une retenue en points de base. Ils varient selon une fonction quadratique du prix : environ 0.07 × contracts × P × (1−P), avec un arrondi au cent supérieur au niveau de l’ordre. Autrement dit, les frais sont les plus élevés précisément là où un marché à pile ou face est le plus intéressant, et presque nuls dans les extrêmes.

PrixFrais par contratAvantage requis (points de probabilité)Frais en % de la mise
5¢0.33¢0.336.7%
10¢0.63¢0.636.3%
25¢1.31¢1.315.3%
50¢1.75¢1.753.5%
75¢1.31¢1.311.8%
90¢0.63¢0.630.7%
95¢0.33¢0.330.35%

La troisième colonne est celle qui compte : pour atteindre l’équilibre en achetant à 50¢ et en conservant jusqu’au règlement, votre estimation de probabilité doit dépasser celle du marché de 1.75 point. Pas de 1.75 % en valeur relative. De 1.75 point absolu. Si vous sortez avant le règlement au lieu de conserver la position, vous payez ces frais deux fois, auxquels s’ajoute le spread.

3.5%frais aller simple à 50¢, en part de la mise
1.75ppavantage de probabilité nécessaire pour atteindre l’équilibre à ce prix
1règlement par instrument, au total

Le CLOB de Polymarket a historiquement appliqué une structure de frais très différente, proches de zéro sur la transaction elle-même, ce qui reporte l’essentiel du coût sur le spread et la profondeur. La même logique de stratégie entraîne donc des économies complètement différentes selon la plateforme, et toute comparaison entre plateformes fondée sur un modèle de frais unique relève de la fiction. Nous utilisons désormais une fonction de frais propre à chaque plateforme, et non une valeur scalaire.

Si vous ne lisez qu’une seule ligne d’un rapport de backtesting de marchés prédictifs, choisissez celle des frais exprimés en points de probabilité. Une stratégie qui revendique un avantage de prévision de 1.2 point sur des marchés à 50¢ est perdante sur Kalshi avant même de prendre en compte le moindre autre coût. Cette information devrait figurer dès la première page, sans que le lecteur ait à la calculer.

Jour 3 : le carnet est en escalier, et il est court

Notre modèle d’impact était une fonction racine carrée calibrée sur les carnets d’ordres des contrats perpétuels BTC. La forme ne convient pas. Avec un tick de 1¢ sur un instrument à 1 $, le carnet ne comporte que 99 niveaux de prix possibles au total, et un marché à liquidité moyenne peut avoir quelques centaines de contrats au meilleur niveau, puis un trou.

Voici un instantané d’un marché de données économiques que nous échantillonnions, côté YES, environ 30 heures avant le règlement :

NiveauQuantité (contrats)Coût cumulé des achats
42¢310310 à 42.0¢ de moyenne
43¢85395 à 42.2¢ de moyenne
45¢140535 à 42.9¢ de moyenne
49¢6001,135 à 46.1¢ de moyenne

Un ordre de 1,000 contrats — cinq cents dollars de risque, une erreur d’arrondi dans la crypto — fait bouger le prix effectif de quatre cents. Quatre cents, c’est plus du double des frais. Il n’y a pas de fonction lisse à ajuster ici : il faut parcourir le carnet niveau par niveau, sinon on invente. Nous avons supprimé le modèle en racine carrée pour cette catégorie d’actifs et écrit un parcours littéral du carnet, plus lent mais correct.

À un moment, je me suis surpris à m’agacer que ces marchés soient « trop petits pour compter ». Ils sont petits parce que le prix porte sur une seule question concrète, avec une échéance, et qu’il n’y a qu’un nombre limité de personnes ayant un avis sur les demandes initiales d’allocations chômage aux États-Unis un mercredi. La taille est le marché. S’en plaindre, c’est comme reprocher à une table de poker de n’avoir que neuf places.

Jour 4 : le jour où la courbe de capital était magnifique

Un Sharpe de 4.1 sur 1,400 marchés. Une courbe lisse. Tout chercheur devrait avoir l’estomac qui se noue en voyant ça ; le mien s’est noué, mais seulement une quarantaine de minutes après que j’en avais déjà fait une capture d’écran.

Le bug se trouvait dans le rééchantillonneur. L’historique des prix des marchés illiquides revient avec des horodatages irréguliers, alors nous l’avons réindexé sur une grille horaire uniforme. Le dernier point de chaque série archivée est la valeur de règlement, 1.00 ou 0.00. Notre réindexation utilisait un remplissage par le voisin le plus proche, sans contrainte de direction. Ainsi, pour tout marché dont la dernière transaction remontait à plusieurs heures avant le règlement, la valeur de règlement se propageait vers l’arrière sur tout l’intervalle. Le modèle lisait la réponse de demain dans la ligne d’aujourd’hui, précisément pour les marchés illiquides où il pouvait augmenter sa taille sans buter sur les limites de profondeur.

Un remplissage par le voisin le plus proche convient à un instrument continu. Pour un instrument dont la dernière observation est la vérité terrain, c’est une machine à regarder dans le futur. Nous vérifions maintenant que chaque remplissage se fait uniquement vers l’avant et que la ligne de règlement est marquée et exclue de tout calcul de caractéristiques. Cette assertion fait neuf lignes, et c’est le code le plus précieux que nous ayons écrit de toute la semaine.

Jours 5–6 : 1,412 marchés, environ 180 paris

La taille de l’échantillon sur les marchés prédictifs est un piège au visage avenant. Vous résolvez 1,412 marchés, vous avez l’impression d’avoir 1,412 observations et vous calculez un t-stat en conséquence. Mais quatorze matchs de NFL le même dimanche partagent un système météorologique, la publication des rapports sur les blessures et un flux commun de parieurs. Cinquante et un marchés électoraux au niveau des États partagent un même basculement national. « Est-ce que X se produira d’ici le 31 mars ? » et « Est-ce que X se produira d’ici le 30 juin ? » sont le même pari, avec des échéances différentes, et se résolvent ensemble.

Nous avons regroupé les marchés par source de l’événement sous-jacent et par date de règlement, et obtenu un nombre effectif d’observations indépendantes proche de 180. Ce n’est pas suffisant pour distinguer un véritable avantage du bruit aux tailles d’effet que nous étudiions. Et aucun bootstrap par marché ne peut corriger le problème : le rééchantillonnage doit porter sur les groupes, pas sur les lignes. Se tromper là-dessus gonfle discrètement la significativité d’un facteur deux ou trois.

Jour 7 : le règlement suit lui aussi une distribution de probabilité

Les éléments que nous n’avions pas modélisés du tout, découverts à nos dépens :

Nous avons ajouté au simulateur un terme de coût de détention et une variation aléatoire de la date de règlement. Aucun des deux n’est précis. Tous deux valent mieux que de supposer implicitement que le règlement a lieu exactement à la date annoncée, avec certitude.

Jour 8 : ce que nous éviterions et ce que nous ferions d’abord

  1. Éliminer entièrement l’architecture fondée sur les rendements. N’adaptez pas une couche de risque à ciblage de volatilité à un instrument à gain terminal. Écrivez une couche de dimensionnement des paris qui raisonne en probabilités et en mises. Nous avons perdu deux jours à essayer d’adapter l’ancienne.
  2. Construire la fonction de frais avant la stratégie. Affichez la courbe de l’avantage nécessaire pour atteindre l’équilibre sur chaque plateforme où vous comptez négocier, et épinglez-la au-dessus du bureau. Elle élimine environ la moitié des idées avant qu’elles ne vous coûtent un seul lancement de backtest.
  3. Parcourir le carnet dès le premier jour. Tout modèle d’impact paramétrique importé d’un marché continu sera faux d’une manière qui vous avantagera.
  4. Regrouper avant de compter. Déterminez la clé de regroupement pour calculer la taille effective de l’échantillon en même temps que vous définissez l’univers, et non après avoir obtenu un Sharpe qui vous plaît.
  5. Vérifier le sens du remplissage. Une ligne de code par jointure. Si une série se termine par la vérité terrain, considérez par construction le remplissage vers l’arrière comme un bug, au lieu d’espérer le remarquer pendant la revue.

Ces huit jours en valaient la peine, surtout parce que les marchés prédictifs éliminent l’ambiguïté qui rend les backtests crypto si faciles à manipuler sans s’en rendre compte. Pas de taux de financement à balayer sous le tapis, pas de convention de prix de référence à débattre. Juste une question, une échéance et une réponse. Quand un backtest se trompe ici, on peut montrer précisément où.

marchés prédictifsbacktestingfraismicrostructure des marchésingénierie des données
← Tous les articles