Mardi matin, notre stratégie de suivi de tendance sur les contrats à terme sur le pétrole brut était acheteuse sur le contrat arrivant à échéance. Le signal faisait exactement ce que nous lui avions demandé : conserver la position tant que la tendance restait positive. Le backtest affichait un gain modeste. Le compte papier, lui, indiquait une vente, un achat sur le contrat suivant, 2 frais et un prix d’entrée moins favorable que ne le laissait penser le graphique.
Le signal n’avait rien fait de mystérieux. Le backtest traitait « le prix des contrats à terme » comme une série continue. Le compte, lui, devait clôturer un contrat et en ouvrir un autre, dans 2 carnets d’ordres différents, à 2 prix différents.
Nous avons découvert l’écart en examinant une position qui chevauchait la période de renouvellement. La stratégie utilisait un contrat liquide à échéance rapprochée et le conservait jusqu’à ce qu’une règle calendaire le fasse passer sur le mois suivant. Cette règle était raisonnable. La comptabilisation des opérations, elle, ne l’était pas.
Notre série continue avait été ajustée rétrospectivement pour supprimer l’écart entre les contrats. Le graphique était ainsi utile au calcul de la tendance. Mais la série ne contenait alors aucun prix réel auquel nous aurions pu clôturer l’ancien contrat ou ouvrir le nouveau. Le backtest avait utilisé le niveau ajusté pour valoriser la position pendant le renouvellement, puis avait repris les transactions comme si la position s’était simplement poursuivie.
Pour un signal, une série continue peut être une mesure utile. Pour une exécution, c’est une fiction. Un renouvellement correspond à 2 transactions, et le spread entre les contrats fait partie de la structure du marché : ce n’est pas un écart esthétique qu’on peut lisser.
Nous avons reconstitué l’événement à partir des 2 contrats cotés. L’ancien mois affichait un prix acheteur de 79.98 et un prix vendeur de 80.00. Le mois suivant affichait un prix acheteur de 80.42 et un prix vendeur de 80.45. Notre position acheteuse devait vendre l’ancien contrat au prix acheteur, puis acheter le nouveau au prix vendeur. Le spread calendaire entre ces côtés exécutables était de 44 cents.
Ce chiffre ne représentait pas automatiquement une perte de 44 cents. Les contrats portaient sur des mois de livraison différents, et le spread reflétait le coût de portage, le stockage, le financement et les anticipations concernant l’offre. Une position conservée pendant le renouvellement reste exposée à l’évolution du prix du nouveau contrat ; elle ne paie pas l’intégralité du spread coté comme des frais. Mais la stratégie doit bien enregistrer la sortie de l’ancien contrat et l’entrée dans le nouveau. Si son calcul du rendement compare ces prix comme s’il s’agissait du même instrument, il peut inventer ou effacer du P&L.
Nous avons séparé les rôles dans la simulation. La série continue continuait de générer le signal de tendance. Les prix propres à chaque contrat servaient à la valorisation et aux ordres. Au moment du renouvellement, le simulateur envoyait un ordre de clôture pour le mois arrivant à échéance et un ordre d’ouverture pour le mois suivant, appliquait les frais de chaque contrat et tenait compte du spread et de la profondeur disponible dans chaque carnet.
La première simulation ne correspondait toujours pas au compte papier. Nous avions synchronisé les 2 exécutions au même instant, alors que les ordres avaient été soumis l’un après l’autre. La clôture de l’ancien mois avait été exécutée, mais le prix vendeur du mois suivant avait bougé avant que l’achat n’atteigne le carnet. Un renouvellement peut être exécuté sous forme de spread calendaire si la plateforme le permet, ou en 2 jambes avec une exposition entre les deux. Ce sont 2 hypothèses d’exécution différentes. Pour la comparaison, nous avons repris la séquence réelle des ordres du compte papier.
Nous avons ensuite remarqué que la règle calendaire elle-même manquait de précision. « Renouveler 5 jours avant l’échéance » semble précis jusqu’à ce qu’un jour férié décale le calendrier de négociation, que la liquidité migre plus tôt ou que la convention d’échéance varie selon le contrat. À un endroit, notre code comptait les jours calendaires ; à un autre, les jours ouvrés. La stratégie papier renouvelait le contrat lors de la 5e séance avant le dernier jour de négociation ; le backtest le faisait 5 jours calendaires avant.
La date de renouvellement est une règle de négociation. Précisez le calendrier de la plateforme et l’événement qui déclenche le renouvellement ; sinon, le backtest et le compte finiront par diverger sur le contrat détenu.
Nous avons précisé dans l’instruction de renouvellement la date du dernier jour de négociation du contrat, le décompte des séances selon le calendrier de sa plateforme et un contrôle minimal de liquidité avant le transfert. Ce seuil constituait une précaution pratique, pas la garantie d’une meilleure exécution : le volume et l’intérêt ouvert ne donnent qu’une indication imparfaite de ce que notre ordre peut réellement exécuter. Nous avons consigné le contrat sélectionné ainsi que les prix des 2 jambes, afin que chaque simulation puisse retracer le passage d’un contrat à l’autre.
Après ces changements, le rendement historique de la stratégie a baissé. L’écart ne venait pas d’une énorme perte unique au renouvellement. Il résultait de nombreuses petites corrections : le bon contrat, la bonne séance de négociation, les frais réels sur les 2 jambes, ainsi que des sorties et des entrées valorisées dans leurs propres carnets. Un renouvellement sur un marché particulièrement peu liquide a coûté cher ; nous l’avons donc laissé visible au lieu de le noyer dans une moyenne.
Si votre backtest sur contrats à terme utilise un graphique continu, demandez-vous quel rôle vous lui faites jouer. Il peut fournir une entrée cohérente à un signal. Il ne peut pas remplacer un contrat que vous auriez pu acheter ou vendre. Pour chaque position qui dépasse l’échéance, le dossier de recherche doit identifier l’ancien contrat, le nouveau, le déclencheur du renouvellement, le modèle d’exécution et les 2 flux de trésorerie qui en résultent.
Cette transaction du mardi n’était pas un échec sophistiqué. C’était une courbe de rendement flatteuse qui omettait le moment où le compte devait changer ce qu’il détenait. Une fois ce moment réintégré à la simulation, le résultat est devenu moins flatteur et bien plus utile.
← Tous les articles


