Bonjour à toutes et tous.
J’ai une question sur les spreads lors d’un backtest.
J’ai backtesté une stratégie sur le DAX CFD Cash 1€. Lors du backtest, j’ai paramétré celui avec un spread de 2. Pour la période concernée, j’obtiens 100 positions et un gains de 1.500 €. Lorsque je fais le même backtest en paramétrant un spread de 3, alors que je pensais n’avoir plus qu’un gain de 1.400 € (100 X 1€ de spread), j’obtiens +/- 1.445€ de gains, donc pas une diminution de 100€ comme je le pensais pour l’augmentaion de 1€ de spread. Quelle en est la raison. Merci pour votre aide.
Bonjour, modifier le spread n’est pas forcément synonyme de faire exactement les mêmes trades avec un coût plus élevé si le backtest a une ligne defparam qui empêche le cumul des ordres. Est-ce le cas? Si oui, il est possible qu’avec un spread plus large un ou plusieurs trades aient leur stop ou leur target atteint plus tôt, ce qui rend l’algo dispo pour éventuellement prendre un trade qu’il n’aurait pas pris s’il avait été encore en position, ces trades eux-mêmes empêchant éventuellement une prise de position qui aurait eu lieu dans le 1er backtest, et si on a certains trades différents d’un backtest à l’autre alors il en découle un bilan de gains/pertes différent du bilan initial.
Merci pour votre retour.
Je comprend bien mais ce n’est pas le cas. Que ce soit avec un spread paramétré à 2 ou un spread paramétré à 3, j’ai exactement les même trades, en nombre et en résultat.
Pour bien comprendre la situation, je recommande d’extraire les listes des ordres de ces 2 tests (celui avec le spread à 2 et celui avec le spread à 3) et de mettre côté à côte ces listes dans un tableau excel par exemple. On y verra plus clair 😉
Quelle est la façon plus simple pour partager le fichier ? Merci
Il faut l’ajouter à ton prochain message ici, en utilisant cette zone de fichier:
Oui mais cela ne fonctionne pas, je suppose qu’il est trop lourd ? Pourtant il ne fait que 83,5 KB ?
Après analyse de ton fichier, cela me semble en effet logique, le spread n’est pas déduit comme une commission fixe de 1 € sur chaque position. Il modifie les prix d’exécution à l’entrée et à la sortie, selon le type d’ordre utilisé.
Dans le CSV, le passage du spread de 2 à 3 donne :
- 30 positions diminuées de 1 € ;
- 24 positions diminuées de 0,50 € ;
- 29 positions sans changement.
Soit une baisse totale de :
30 × 1 € + 24 × 0,50 € = 42 €
Quelques exemples :
- Le 2 janvier : achat à 24 562,6 puis sortie à 24 539,5, soit −23,1 €. Avec le spread à 3 : achat à 24 563,1 puis sortie à 24 539,0, soit −24,1 €. La différence est bien de −1 €.
- Le 30 juin : achat à 24 736,2 puis sortie à 24 889,7, soit +153,5 €. Avec le spread à 3, seule l’entrée passe à 24 736,7 tandis que la sortie reste à 24 889,7. La différence n’est donc que de −0,50 €.
- Le 21 janvier, sur une position vendeuse stoppée, l’entrée passe de 24 424,8 à 24 424,3 et le stop de 24 547,0 à 24 546,5. Les deux prix sont décalés de 0,5 point, mais la distance reste identique : la perte demeure donc de −122,2 €.
L’écart dépend ainsi de la manière dont chaque position est clôturée : ordre au marché, sortie à prix fixe, stop ou objectif calculé depuis le prix d’entrée. C’est pourquoi 83 positions ne produisent pas automatiquement une baisse de 83 €.
Le code de la stratégie, principalement les instructions SELL, EXITSHORT, SET STOP et SET TARGET, permettrait d’identifier précisément pourquoi les 24 sorties concernées ne perdent que 0,50 €.
Merci beaucoup pour ces explications.
Dès lors, si je comprends bien, pour backtester une stratégie, il vaut mieux paramétrer le spread à 0 et le retirer soi-même du résultat ?
Il n’est pas question de considérer que cette approche est suffisante 😉 il est bien plus pertinent d’utiliser et de conserver un spread qui reflète le mieux les conditions réelles lors du backtest, car l’impact ne se limite absolument pas au simple calcul du gain final.
Car réduire le spread à une valeur nulle dans le code puis soustraire une somme fixe manquera forcément de précision pour établir la valeur réelle, puisque ce spread affecte non seulement le résultat global attendu, mais il peut également impacter fondamentalement les prix exacts d’entrée et de sortie ; cela concerne aussi le déclenchement précis des différents ordres, qu’il s’agisse de stops ou d’objectifs définis dans ta stratégie.
Comme on peut clairement voir grâce au sujet présenté dans le fichier CSV, l’impact réel n’est pas un indicateur identique sur chaque type de trade exécuté : certaines positions enregistreront une perte significative d’un euro, tandis que d’autres subiront une déduction de 0,50 €, et il est fréquent qu’il y ait des cas où aucun changement de valeur n’apparaît.
En conséquence, la meilleure approche consiste donc à paramétrer un spread qui se rapproche au maximum des conditions réelles ; même envisager un niveau légèrement supérieur peut être utile afin d’obtenir un test qui soit considéré comme plus prudent et robuste dans le temps. Il faut cependant toujours garder bien à l’esprit qu’un simple spread fixe ne permet pas de reproduire les élargissements de spreads ponctuels importants du marché, ni non plus tout le slippage que ce genre de condition peut générer au cours d’une période réelle de trading.
Merci beaucoup pour cette explication qui est parfaitement censée.
Belle journée
Bonjour,
Personnellement je vous conseille de mettre un spread plus important afin d’avoir une approche prudente de votre backtest.
Par exemple si le spread théorique moyen (fourni sur le site d’IG ou en observant le graphique) lors de vos prise de position est de 2, vous l’augmentez d’au moins 50%, soit un spread de 3 en l’espèce. Cela permettra de compenser les variations de spread dans la journée, ainsi que le slippage. Ainsi vous serez beaucoup plus proche de la réalité.
Merci beaucoup.
Une dernière question : si la stratégie prend des trades en dehors des plages horaires “normales” de trading, càd lorsque les spreads sont élargis, le backtest en tiend-il compte ? merci
Le backtest ne prend en compte que les spreads indiqués dans l’interface. Soit une seule unique information, peu importe les horaires.