Edge Ratio dans StrategyQuant X

Une question commune à de nombreux traders qui utilisent StrategyQuant X est la suivante : Comment puis-je comparer la qualité des signaux d'entrée de stratégie ? Quel signal a un meilleur avantage et une plus grande probabilité de succès ?  Dans cet article, je vous montrerai comment utiliser le nouvel outil EDGE Ratio pour évaluer la qualité des signaux de trading. L'Edge Ratio a été mentionné pour la première fois dans un très bon livre de Curtis Faith Way of the Turtle. 

Dans la dernière version de StrategyQuant X - build 131, nous avons ajouté la possibilité de travailler avec la valeur ATR(14) au moment de l'ouverture de la position. Cette valeur est accessible via le champ order.ATROnOpen, qui est une caractéristique clé pour l'utilisation de l'outil de ratio EDGE.

 

 

Qu'est-ce que le ratio de bordure ?

Le Edge Ratio est le ratio MFE / MAE normalisé par la volatilité de l'instrument au moment de l'ouverture de la position.

Expliquons maintenant les différentes composantes à partir desquelles le ratio de bordure est calculé :

Excursion adverse maximale (MAE) mesure la perte maximale subie par une seule transaction pendant qu'elle est ouverte.

En revanche, Excursion maximale favorable (EMF) mesure le profit maximal le plus important réalisé par une seule transaction pendant qu'elle est ouverte.

ATR - Average true range mesure la volatilité de l'instrument.

 

L'image ci-dessus illustre mieux la relation entre la MAE / MFE et le profit/perte.

La première ligne montre que le profit/perte de la position était de 5,7, tandis que le plus grand drawdown de MAE pendant la transaction était de 32,5 pips. Le profit le plus important observé par MFE au cours d'une transaction était de 45,6 pips. Nous pouvons donc constater que si le profit final de la position était modéré, le MFE était beaucoup plus important, de sorte que le potentiel de la transaction n'a pas été satisfait.

L'analyse de ces ratios peut vous aider à découvrir si vos méthodes de sortie sont suffisantes. Dans le cas du MAE, il peut vous aider à savoir si vos sorties sont suffisantes. Pour en savoir plus sur ces ratios, lisez cet article. lien.

 

Revenons au calcul du ratio de bordure lui-même. Le ratio de bordure est calculé comme suit

  1. Enregistrez le MAE en pips et le MFE en pips pour chaque transaction.
  2. Diviser chacun d'entre eux par ATR(14) pour ajuster la volatilité et normaliser pour l'analyse future de l'intermarché.
  3. Additionner chaque valeur (MAE normalisé et MFE normalisé) et diviser par le nombre total de transactions.
  4. L'Edge ratio est l'EMF normalisé de la volatilité moyenne divisé par le MAE normalisé de la volatilité moyenne.

Ainsi, plus l'EMF est élevée et plus l'EAM est faible, plus le rapport de bord est élevé. Cela signifie que le signal est plus avantageux. (Le potentiel de gain de la transaction est plus élevé que le potentiel de perte).

 

Comment pouvons-nous utiliser le ratio d'arête dans StrategyQuant X ?

Tout d'abord, nous pouvons utiliser le ratio d'avantage comme indicateur de la performance de la stratégie. Nous pouvons travailler avec l'hypothèse que les stratégies avec un ratio d'avantage plus élevé peuvent être plus résistantes aux changements possibles dans le trading hors échantillon/réel. Toutefois, cette hypothèse doit être étayée par des analyses de validation approfondies, idéalement avec plusieurs centaines de milliers de stratégies testées sur plusieurs périodes.

En 2020, j'ai mené des recherches sur un échantillon de 1,2 million de stratégies générées de manière aléatoire et j'ai tenté d'identifier les caractéristiques (ratio de Sharpe, facteur de profit, etc.) dont les valeurs peuvent affecter la véritable performance hors échantillon d'une stratégie. Fondamentalement, j'ai essayé d'identifier le classement (conditions de filtrage des stratégies) pour sélectionner les stratégies pour le trading en direct. J'ai utilisé le ratio Pseudo Edge dans mes calculs du ratio MFE / MAE et, de manière surprenante, le ratio Pseudo Edge s'est avéré être un bon prédicteur de la sélection de stratégies de haute qualité. Cependant, cette recherche n'est pas encore terminée et nous aborderons donc ce sujet dans un prochain article.

Le type d'ordres influe sur les résultats du rapport de bord. J'utilise principalement les ordres de marché pour mesurer la qualité du signal d'ouverture et de fermeture, car les ordres stop/limite impliquent d'autres facteurs/dimensions qui affectent la valeur réelle du signal.

 

Autres questions

À ce stade, d'autres facteurs importants doivent être pris en compte. Nous savons que StrategyQuant dispose d'un moteur génétique très efficace, qui est également en constante amélioration.

Cependant, nous devons tenir compte du fait que nous pouvons travailler avec des milliards de combinaisons d'éléments de stratégie. Le nombre de conditions et de possibilités est appelé "degrés de liberté". Du point de vue de l'apprentissage automatique et de la science des données, plus les degrés de liberté sont élevés, plus le risque de surajustement de la stratégie est important, même si la stratégie passe les tests MC et autres tests de robustesse.

Ce problème ne concerne pas seulement les développeurs d'algos, mais aussi les scientifiques qui travaillent dans le domaine des algorithmes évolutionnaires. Dans tous les cas, l'ajustement excessif au cours du développement des stratégies peut conduire à l'échec de la stratégie dans des conditions en temps réel et finalement à l'effondrement de son bord.

C'est le rapport Edge qui peut constituer un élément important du pont entre les stratégies de développement de flux de travail purement génétiques et un développement IDEA FIRST. Un rôle clé dans ce processus est joué par le rapport Blocs personnalisés - SQX, disponible à partir de la version 127, qui nous permet de définir nos propres parties de la stratégie. Je pense que les blocs personnalisés changent vraiment la donne et constituent une partie importante du flux de travail de création de stratégie dans StrategyQuant.

Vous pouvez définir des filtres de régime, prédéfinir des conditions d'entrée de breakout et préparer la conception de votre stratégie d'une manière très sophistiquée. Avec une stratégie raisonnable et une configuration modérée du moteur génétique, il est à mon avis possible d'éliminer de manière significative le facteur d'overfitting dans le développement de la stratégie du point de vue de la complexité de la stratégie et de la complexité de la configuration du constructeur du moteur génétique.

Il convient de noter que même au cours de la première phase du processus de travail, il est possible d'obtenir des informations sur l'état d'avancement de l'idée. Il est extrêmement important de prêter attention à la méthode de partitionnement des données "formation/test/validation".

StrategyQuantX est tellement flexible qu'il existe plusieurs façons d'analyser le ratio de front. Il existe des flux de travail complexes dans lesquels vous devez travailler avec une analyse de stratégie externe, extraire des règles de xml pour les synchroniser avec SQX, etc. et il y a des options plus simples qui peuvent être utilisées dans le flux de travail existant de SQX. Dans notre analyse, nous n'utiliserons aucun outil externe, tout ce dont nous avons besoin est inclus dans StrategyQuant.

 

Approche progressive de l'amélioration

Pour cette approche, nous utiliserons des blocs personnalisés, des modèles et le développement incrémental de stratégies à l'aide du moteur génétique de SQX. Dans un premier temps, nous utiliserons l'analyse Edge ratio pour évaluer la qualité des signaux et sélectionner ceux qui ont le plus fort potentiel.

Ensuite, sur la base de cette analyse, nous sélectionnerons les groupes de blocs/stratégies présentant le potentiel le plus élevé et les utiliserons dans le processus de développement génétique de StrategyQuantX. De cette manière, nous réduirons les degrés de liberté et nous éliminerons la possibilité que SQX trouve des stratégies trop sensibles au bruit.

 

1. Sélection d'un panier de blocs de construction testés

Au cours de cette étape, nous sélectionnerons le panier des blocs de construction que nous testerons dans notre analyse.

Nous pouvons sélectionner des blocs de construction qui sont déjà implémentés dans StrategyQuant ou créer les vôtres en utilisant la fonctionnalité des blocs de construction personnalisés.

Voici plusieurs liens utiles qui vous permettront d'apprendre à créer votre propre bloc de construction :

N'oubliez pas une chose importante. Si vous utilisez des blocs personnalisés et que vous examinez des signaux longs et courts en même temps, vous devez définir le bloc opposé pour chaque bloc personnalisé. Encore une fois, nous devons bien comprendre cette fonctionnalité du SQX.

Vous pouvez également utiliser des blocs prédéfinis qui se trouvent par défaut dans Strategyquant X. Ci-dessous, sur l'image, vous pouvez trouver des blocs de construction sélectionnés que nous testerons dans notre analyse.

Sélection des éléments constitutifs de notre analyse

2. Création d'un modèle de stratégie de test pour la réalisation d'une analyse.

Les modèles de stratégie nous permettent de générer presque n'importe quel type de stratégie dans StrategyQuant. Avant de procéder à la création d'un modèle de stratégie pour notre analyse, veuillez consulter la description détaillée du fonctionnement des modèles dans notre documentation. ici.

Pour notre analyse, nous allons créer un modèle avec la structure suivante : La stratégie sera toujours sur le marché. Il entrera dans une position longue lorsqu'un signal long se produira. Il entrera dans une position courte dès qu'un signal opposé à la position longue se produira.

Dans l'image ci-dessous, nous pouvons voir comment nous avons défini nos signaux d'entrée et de sortie.

Dans l'image ci-dessous, nous pouvons voir que nous n'utilisons pas de méthode de sortie et que nous entrons dans le marché par la méthode Enter/Reverse At Market.

L'image ci-dessous montre que la logique de sortie est simple.

 

3. Constructeur de paramètres dans StrategyQuant X

Tout d'abord, notez que lorsque le modèle de stratégie est utilisé, certains paramètres sont remplacés. En d'autres termes, les paramètres définis dans le modèle de stratégie ont la priorité sur ceux définis dans le constructeur : Ce que nous définissons dans le modèle de stratégie a la priorité sur ce que nous définissons dans le constructeur.

Nous décidons de générer à partir du modèle que nous avons créé à la deuxième étape. Nous modifions les paramètres de la configuration de construction supplémentaire pour refléter notre intention :

  • nous utiliserons la génération de stratégies aléatoires
  • nous utiliserons au maximum une condition (signal) à générer.

Blocs/conditions que nous choisissons dans la liste des blocs que nous voulons analyser. Nous pouvons choisir les blocs personnalisés que nous avons préparés lors de la première étape.

Nous n'avons pas sélectionné de méthode d'entrée ou de sortie précisément parce qu'elles sont remplacées dans le modèle de stratégie.

Autre point essentiel. Il est important de fixer un nombre minimum de signaux analysés - en d'autres termes, le nombre de trades.

L'analyse des signaux de edge ratio avec un petit nombre de transactions est, à mon avis, un non-sens statistique. Un nombre de signaux trop élevé se traduira par un facteur de rentabilité faible pour la stratégie, et la plupart de vos bénéfices seront probablement absorbés par les coûts de négociation. D'un autre côté, un faible nombre de signaux peut être statistiquement insignifiant.

Si l'on veut estimer le nombre minimum de transactions de manière statistiquement correcte, l'outil Formule de Cochran pour la taille de l'échantillon peut nous aider.

 

4. Génération de stratégies

Après avoir préparé tous les paramètres, nous pouvons exécuter le Builder dans StrategyQuantX. Nous lançons le constructeur pendant quelques heures pour obtenir un large échantillon de stratégies avec des signaux.

Dans l'image ci-dessous, vous pouvez voir notre banque de données après quelques heures. Notez que nous avons des stratégies dans la banque de données qui se sont soldées par une perte - elles ont un bénéfice net négatif mais ont un ratio d'avantage élevé. Nous ne nous soucions pas du résultat de la stratégie. Ce qui nous intéresse, c'est de savoir si le signal a un ratio de bord positif.

Nous sélectionnons les stratégies dont les signaux ont un rapport de bord supérieur à notre seuil. Nous choisissons les stratégies dont le rapport de bord est supérieur à 1,5.

Dans l'image ci-dessous, vous pouvez voir à quoi ressemblera la stratégie aléatoire. Dans le pseudo-code, vous pouvez voir que la stratégie utilise une règle pour entrer en position longue et son signal opposé pour entrer en position courte. C'est exactement de cette manière que nous voulons mesurer la qualité des signaux. Il n'y a pas d'autres sorties, seulement le signal pur.

 

 

5. Évaluation de la robustesse du signal

C'est une bonne idée de réfléchir à une éventuelle évaluation plus approfondie des signaux. En ayant des stratégies très peu complexes (nous n'avons qu'un seul signal sans autres variables), nous pouvons analyser la robustesse plus facilement.

À ce stade, je recommande d'effectuer un test de Monte Carlo pour randomiser les paramètres. Vous pouvez également optimiser une stratégie de signal donnée pour voir si les paramètres de signal donnés sont robustes. Permutation des paramètres du système - La permutation des paramètres du système (SPP) permet de savoir où se situent les paramètres du signal dans la distribution des résultats.

 

6. Utilisation d'Improver pour rechercher les méthodes de sortie et d'entrée appropriées

Nous avons sélectionné des stratégies robustes (signaux) et nous voulons construire des stratégies à partir de celles-ci. Strategy Improver est disponible à cet effet. Nous pouvons maintenant définir certains paramètres dans la configuration de construction additionnelle de manière plus flexible. Dans ce cas, nous définissons l'option Stop Loss comme option requise. Nous chargeons également les stratégies que nous avons sélectionnées précédemment à l'étape 4 dans la banque de données "Stratégies à améliorer".

 

Dans cette étape, nous définissons les éléments que nous voulons améliorer. Nous laisserons les signaux ou les conditions d'entrée tels quels, nous n'améliorerons que les méthodes d'entrée/sortie.

Dans Building Blocks, nous définissons les types d'entrée et les types de sortie. N'oubliez pas d'ajouter des indicateurs et des blocs d'entrée stop/limite. Si vous ne les ajoutez pas, l'improvisateur ne trouvera aucune amélioration.

Certains paramètres d'Improver fonctionnent différemment. La différence se situe principalement au niveau du classement des stratégies. Lors de la mise à niveau des stratégies, vous définissez le nombre de stratégies mises à niveau qui doivent se trouver dans la banque de données, au moins pour que l'améliorateur puisse passer à la stratégie suivante. Si vous fixez une valeur élevée, l'améliorateur risque de ne pas trouver suffisamment de stratégies à mettre à niveau et de se retrouver bloqué.

Il y a un bug mineur dans StrategyQuantX 131 à partir du 22.4.2021 qui rend impossible l'utilisation correcte du paramètre de classement temporel. Il devrait être corrigé dans quelques jours de toute façon, maintenant nous devons adapter et ajuster notre flux de travail pour que ce ne soit pas un problème.

L'objectif est de s'assurer que l'améliorateur trouve des stratégies, c'est pourquoi j'ai configuré l'améliorateur pour qu'il me trouve au moins dix stratégies à partir de chaque stratégie de base. Il est également important de réduire le nombre de transactions, car il est probable que le moteur génétique sélectionne des stratégies avec des ordres stop/limite et, par conséquent, le nombre de transactions sera réduit et inférieur au nombre initial de signaux.

 

Conclusion

L'intérêt de cette approche incrémentale réside dans le fait que nous pouvons séparer les phases d'évaluation. À l'étape 6, nous avons pu analyser la qualité du signal séparément. Maintenant, après avoir ajouté les nouvelles sorties, nous pouvons évaluer séparément la robustesse des méthodes de sortie. L'analyse simultanée de problèmes multidimensionnels est très difficile et, à tout le moins, sujette à des erreurs.

Vous vous êtes peut-être demandé comment déterminer s'il s'agit d'un meilleur flux de travail que votre flux de travail actuel. La solution que j'utilise consiste à réserver deux années de données pour valider mes conclusions. Essayez simplement de générer quelques milliers de stratégies selon votre flux de travail et de valider les performances par rapport à deux années de données réelles hors échantillon. Essayez ensuite d'utiliser ce flux de travail pour comparer la distribution des résultats et faire une estimation statistique de la différence moyenne de performance des stratégies. Dans un prochain article, nous analyserons statistiquement ce flux de travail et déterminerons son efficacité.

Vous pouvez télécharger l'extrait de rapport de bord ici

 

 

S'abonner
Notification pour
8 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
A Casey
A Casey
16. 5. 2021 5:55 am

Très bon article, j'attends avec impatience le prochain !

Marco
Marco
22. 5. 2021 6:25 am

J'ai essayé ce modèle. Si Nous n'avons sélectionné aucune méthode de sortieLes stratégies n'ont qu'une seule transaction. Ai-je fait une erreur de paramétrage ?

clonex
clonex
Répondre à  Marco
28. 5. 2021 4:08 pm

Vous devez définir une méthode de sortie dans les étapes ultérieures ....

eduardo
eduardo
2. 6. 2021 12:24 am

Vous avez mis en forme ce que je pensais sans le savoir depuis longtemps. C'est un travail spectaculaire, de l'or pur, je suis impatient de connaître vos progrès dans le prochain blog.

Emmanuel
19. 1. 2022 12:50 am

Excellent article ! !! et très utile ! !! merci Clonex !

tonyc
tonyc
7. 5. 2022 3:42 am

Pouvez-vous partager le fichier EdgeRatio.sqx ?

tomas262
Administrateur
Répondre à  tonyc
11. 5. 2022 11:39 am

Vous trouverez plus d'informations sur la ration Edge ici. https://strategyquant.com/codebase/trade-edge-ratio/ dans notre base de données

Farhan
13. 7. 2022 9:21 am

Merci pour cette excellente idée. Dans la première étape, si je règle le filtre de transaction #of sur >200, toutes les stratégies sont filtrées parce qu'elles n'ont pris qu'une seule transaction, ce qui fait que je n'ai aucune stratégie à poursuivre dans la deuxième étape pour l'améliorer.

Dernière modification le 1 année il y a par Farhan

Poursuivre la lecture