Documentation

Applications

Dernière mise à jour le 24. 1. 2023 par Mark Fric

Limites du backtest de Stockpicker

La sélection des titres et, d'une manière générale, les stratégies de négociation quotidienne présentent certaines spécificités qui seront expliquées ci-dessous.

 

Le timing de l'exécution de la stratégie expliqué

Tout d'abord, vous pouvez choisir le moment où la stratégie est déclenchée (évaluée) parmi trois valeurs possibles :

  • Avant l'ouverture du bar - évalue la stratégie avant l'ouverture du marché (pour les stratégies quotidiennes)
  • Sur le bar ouvert - évalue la stratégie à l'ouverture du marché
  • A la fermeture du bar - évalue la stratégie à la clôture du marché (peu avant)

Le choix du moment où la stratégie est évaluée influe alors sur les prix disponibles à la fois pour le trading en temps réel et pour le backtesting.

 

Nous utilisons le paramètre nommé Shift pour indiquer l'indice de la valeur, par exemple Open[0] signifie le prix d'ouverture avec Shift=0, et cela signifie le prix d'ouverture de la barre actuelle (la plus récente).
Open[1] signifie Open avec Shift=1, c'est-à-dire il y a une barre.

Lorsque vous utilisez des blocs avec Shift=0 (valeur des barres actuelles) dans votre stratégie, vous devez être très prudent, car ils peuvent avoir une signification différente selon le moment où vous évaluez la stratégie.

Les trois temps d'évaluation possibles et leurs implications sont à nouveau évoqués :

Avant l'ouverture du bar

évalue la stratégie avant l'ouverture du marché (pour les stratégies quotidiennes).

La plateforme déclenche cette opération quelques minutes avant l'ouverture du marché, puis les conditions sont évaluées et les ordres sont créés.
Les transactions sont exécutées à l'ouverture du marché.

Implications
Le bloc avec Shift=0 renvoie la valeur actuelle de la dernière barre terminée.
Ainsi, par exemple, Close[0] renvoie le prix de clôture du jour de marché terminé PRÉCÉDENT, et non le jour de marché qui débutera dans quelques instants.
Open[0] renvoie le prix d'ouverture du jour de marché précédent et ainsi de suite.
Vous pouvez utiliser Shift=0 en toute sécurité dans tous les blocs, mais ils se réfèrent à la dernière barre fermée - avant le jour du marché.

 

Sur le bar ouvert

évalue la stratégie à l'ouverture du marché.

La plateforme déclenche cette opération quelques minutes après l'ouverture du marché pour permettre la consolidation des prix.
Les transactions sont exécutées immédiatement.

Implications
Le bloc avec Shift=0 renvoie la valeur du jour d'ouverture du marché.
Ainsi, Open[0] renvoie le prix du marché actuel.
Close[0] renvoie le prix Open, car le prix Close du jour n'est pas encore connu (il s'agit du début de la journée de marché).
Il en va de même pour High[0], Low[0] - à l'ouverture du marché, le haut et le bas de la journée de négociation en cours ne sont pas encore connus.
Vous pouvez en toute sécurité utiliser Shift=0 UNIQUEMENT avec des blocs de prix ouverts, et calculer des indicateurs uniquement à l'aide de prix ouverts.

 

A la fermeture du bar

évalue la stratégie à la clôture du marché.

La plateforme déclenche cette opération quelques minutes AVANT la clôture du marché pour permettre des exécutions correctes.
Les transactions sont exécutées immédiatement.

Implications
Le bloc avec Shift=0 renvoie les valeurs du jour de clôture du marché.
Open[0] renvoie le prix d'ouverture du marché actuel.
Close[0] renvoie le prix réel en temps réel - très proche du prix de clôture réel.
Vous pouvez utiliser Shift=0 en toute sécurité avec tous les types de prix et d'indicateurs. Parce que la stratégie est évaluée très près de la clôture du marché.
les prix haut, bas et clôture de la journée de négociation en cours seront très précis.

Note spéciale sur les indicateurs

les exemples ci-dessus montrent comment des prix simples comme Open, High, Low, Close sont affectés lorsqu'ils sont utilisés avec Shift=0,
mais il faut savoir qu'il existe aussi des indicateurs qui peuvent être calculés à partir de prix qui ne sont pas encore connus.
Par exemple, le calcul de l'EMA à partir de la clôture avec Shift=0 donnera des résultats incorrects s'il est utilisé avec le déclencheur On Bar Open, car les valeurs Close[0] ne sont pas encore connues à ce moment-là.
Il en va de même pour les indicateurs standard tels que l'ATR - l'ATR avec Shift[0] est calculé en utilisant High[0], Low[0] qui ne sont pas connus à l'ouverture du marché.

 

Données hebdomadaires et mensuelles

Des données hebdomadaires et mensuelles sont également disponibles. Pour la semaine et le mois en cours, le prix de clôture est simplement dérivé du prix du dernier jour de négociation. Les données pour la semaine et le mois en cours sont simplement référencées en utilisant la barre [0] (par exemple, Weekly High [0] ou Monthly Close [0], etc.)

 

Gestion des objectifs de Stop Loss et de Profit dans le backtesting

Le backtesting des stratégies Stockpicker doit être rapide - nous devons évaluer une stratégie sur des centaines ou des milliers d'actions. C'est pourquoi nous n'utilisons que les prix quotidiens OHLC dans le backtest.
Il n'est pas possible d'utiliser les données par minute ou par tic-tac pour le moteur Stockpicker.

L'utilisation des données OHLC quotidiennes présente un inconvénient qui ne peut être résolu facilement : nous ne connaissons pas le mouvement intrajournalier du prix.
Ce n'est pas un problème dans la plupart des cas, nous décrivons comment le moteur de backtesting de SQ gère ce problème afin de garantir la fiabilité des backtests.

Le problème peut survenir lorsque vous utilisez SL + PT, ou une entrée au Stop/Limite combinée à SL ou PT.
Dans les deux cas, il y a plus d'un niveau de prix stop ou limite - entrée (stop/limite), SL, PT.

Le problème auquel nous sommes confrontés est celui des situations où ces niveaux sont si proches l'un de l'autre qu'ils pourraient tous deux être atteints en cours de journée sur le marché.
Sans données réelles, nous ne pouvons pas savoir lequel de ces niveaux sera atteint en premier. Nous ne pouvons donc pas simuler de manière fiable une entrée au stop/limite suivie d'un SL ou d'un PT sur la même barre.

Dans le trading réel, SL+PT est ajouté immédiatement lorsque la transaction est ouverte, mais pour les raisons mentionnées ci-dessus, nous ne sommes pas en mesure de le simuler de manière fiable dans le backtester - cela conduirait à des backtests trop optimistes et irréalistes.

Pour garantir la fiabilité des résultats, le moteur du backtester détecte ce type de situations et les traite comme suit :

  • Lorsque l'entrée est Marché, seul le SL ou le PT est défini - dans ce cas, nous pouvons évaluer le SL ou le PT immédiatement, sur la même barre.
  • Lorsque l'entrée se fait au Stop/Limit et que le SL, le PT ou les deux sont définis - dans ce cas, le SL et le PT ne sont appliqués que le jour suivant, nous ne savons pas si l'entrée ou le prix SL/PT a été atteint à l'ouverture de la barre et nous ne pouvons donc pas l'évaluer immédiatement.
  • Lorsque SL et PT sont utilisés, et que les deux auraient pu être remplis en une barre, le backtester prend SL pour faire une variante pessimiste, car nous ne savons pas lequel des deux aurait été rempli en premier.

 

Cette situation n'affecte généralement les performances de la stratégie que si vous utilisez un Stop Loss ou un Profit Target très serré - ne le faites pas et vous n'aurez pas ce problème.

 

Petites différences dans les temps d'exécution entre le backtest et la négociation en direct

Notez que dans le backtester, lorsqu'une transaction est ouverte à l'ouverture ou à la clôture du marché en utilisant la fonction Enter at Market (ou Exit at end of day), elle est ouverte au prix d'ouverture/de clôture des données - le prix d'ouverture ou de clôture du marché réel.

En trading réel, cela n'est pas réalisable - lorsque vous déclenchez la stratégie à l'ouverture de la barre, elle sera évaluée et exécutée très peu de temps APRÈS l'ouverture réelle du marché. Il en va de même pour la stratégie à la clôture de la barre - elle est exécutée très peu de temps AVANT la clôture réelle du marché.

Il en est ainsi parce qu'il n'est pas possible de déclencher vos ordres exactement à l'ouverture ou à la clôture du marché. C'est pourquoi les prix d'ouverture et de clôture du marché relevés à ces moments ne correspondront pas aux prix d'ouverture ou de clôture du marché indiqués dans les données historiques. La différence sera négligeable et ne devrait pas affecter les performances de votre stratégie, mais elle sera tout de même présente.

 

Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile

S'abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires