Dans le premier article sur le backtesting réussi, nous avons discuté des biais statistiques et comportementaux qui affectent nos performances de backtesting. Nous avons également discuté des logiciels pour le backtesting, notamment Excel, MATLAB, Python, R et C++. Dans cet article, nous examinerons comment intégrer les coûts de transaction, ainsi que certaines décisions à prendre lors de la création d'un moteur de backtest, telles que les types d'ordre et la fréquence des données.
L'une des erreurs les plus courantes des débutants lors de la mise en œuvre de modèles de trading est de négliger (ou de sous-estimer grossièrement) les effets des coûts de transaction sur une stratégie.
La forme la plus directe de coûts de transaction encourus par une stratégie de trading algorithmique sont les commissions et les frais.
Les courtiers fournissent généralement de nombreux services, bien que les algorithmes quantitatifs n'utilisent vraiment que l'infrastructure d'échange. Par conséquent, les commissions de courtage sont souvent faibles par transaction. Les courtiers facturent également des frais, qui sont des coûts engagés pour effacer et régler les transactions.
Le slippage est la différence de prix atteinte entre le moment où un système de trading décide de faire une transaction et le moment où une transaction est effectivement effectuée sur une bourse.
Un instrument avec une volatilité plus élevée est plus susceptible de se déplacer et donc les prix entre le signal et l'exécution peuvent différer considérablement. La latence est définie comme la différence de temps entre la génération du signal et le point d'exécution. Les stratégies à fréquence plus élevée sont plus sensibles aux problèmes de latence et les améliorations de millisecondes sur cette latence peuvent faire toute la différence en termes de rentabilité. Le type de stratégie est également important. Les systèmes de dynamique souffrent en moyenne plus de glissement car ils essaient d'acheter des instruments qui se déplacent déjà dans le sens prévu.
L'impact sur le marché est le coût encouru par les traders en raison de la dynamique de l'offre / la demande de l'échange (et de l'actif) à travers lequel ils essaient de négocier. Une grosse commande sur un actif relativement illiquide est susceptible de bouger le marché de manière substantielle car le commerce devra accéder à une grande partie de l'offre actuelle. Pour contrer cela, les gros blocs de transactions sont divisés en plus petits blocs qui sont négociés périodiquement, à mesure que de nouvelles liquidités arrivent à l'échange.
Les actifs plus illiquides se caractérisent par un écart plus important, qui est la différence entre les prix d'achat et les prix de vente actuels du carnet d'ordres limite. Cet écart est un coût de transaction supplémentaire associé à toute transaction.
Pour modéliser avec succès les coûts ci-dessus dans un système de backtesting, divers degrés de modèles de transaction complexes ont été introduits. Ils vont de la modélisation plate simple à une approximation quadratique non linéaire.
Les coûts de transaction fixes sont la forme la plus simple de modélisation des coûts de transaction. Ils supposent un coût fixe associé à chaque transaction. Ils représentent donc le mieux le concept de commissions et de frais de courtage. Ils ne sont pas très précis pour modéliser des comportements plus complexes tels que le glissement ou l'impact sur le marché. En fait, ils ne prennent pas en compte la volatilité ou la liquidité des actifs. Leur principal avantage est qu'ils sont faciles à implémenter.
Les modèles de coût de transaction plus avancés commencent par des modèles linéaires, se poursuivent par des modèles linéaires par morceaux et se terminent par des modèles quadratiques. Ils reposent sur un spectre de la moindre à la plus précise, bien qu'avec le moins à la plus grande effort de mise en œuvre.
Les traders algorithmiques essaient également de faire usage des coûts historiques réels des transactions pour leurs stratégies en tant qu'intrants à leurs modèles de transactions actuels pour les rendre plus précis. C'est une entreprise délicate et se rapproche souvent des domaines compliqués de la modélisation de la volatilité, du glissement et de l'impact sur le marché. Cependant, si la stratégie de trading consiste à effectuer de grands volumes de transactions sur de courtes périodes, des estimations précises des coûts de transaction engagés peuvent avoir un effet significatif sur le résultat final de la stratégie et il vaut donc la peine d'investir dans la recherche de ces modèles.
Bien que les coûts de transaction soient un aspect très important des implémentations réussies de backtesting, de nombreux autres problèmes peuvent affecter les performances de la stratégie.
Un choix qu'un trader algorithmique doit faire est de savoir comment et quand utiliser les différents ordres d'échange disponibles. Ce choix relève généralement du domaine du système d'exécution, mais nous l'examinerons ici car il peut grandement affecter les performances des tests de stratégie.
Un ordre de marché exécute un commerce immédiatement, indépendamment des prix disponibles. Ainsi, les gros ordres exécutés en tant qu'ordres de marché obtiendront souvent un mélange de prix à mesure que chaque ordre limite ultérieur du côté opposé est rempli. Les ordres de marché sont considérés comme des ordres agressifs car ils seront presque certainement remplis, bien qu'avec un coût potentiellement inconnu.
Les ordres de limite fournissent un mécanisme pour la stratégie de déterminer le pire prix auquel le commerce sera exécuté, avec la mise en garde que le commerce peut ne pas être rempli partiellement ou complètement. Les ordres de limite sont considérés comme des ordres passifs car ils sont souvent non remplis, mais lorsqu'ils sont un prix est garanti.
Lors du backtesting, il est essentiel de modéliser correctement les effets de l'utilisation des ordres de marché ou de limite.
Il existe des problèmes particuliers liés aux stratégies de backtesting lors de l'utilisation de données quotidiennes sous forme de chiffres Open-High-Low-Close (OHLC), en particulier pour les actions.
Les ensembles de données bon marché ou gratuits, tout en souffrant d'un biais de survie (que nous avons déjà discuté dans la première partie), sont également souvent des flux de prix composites provenant de plusieurs échanges. Cela signifie que les points extrêmes (c'est-à-dire l'ouverture, la fermeture, le haut et le bas) des données sont très sensibles aux valeurs
Cela signifie que si votre stratégie de trading utilise largement l'un des points OHLC spécifiquement, les performances de backtest peuvent différer des performances en direct car les ordres peuvent être acheminés vers différents échanges en fonction de votre courtier et de votre accès disponible à la liquidité.
Dans les prochains articles, nous examinerons la mesure de la performance du backtest, ainsi qu'un exemple réel d'algorithme de backtesting, avec de nombreux effets ci-dessus inclus.