Processus d'élaboration de la stratégie (forex)

Construire une stratégie EURUSD rentable

par Mark Fric
Dans cet article, j'expliquerai le processus complet, étape par étape, d'élaboration d'une stratégie robuste et rentable pour l'EURUSD, y compris plusieurs étapes de différents tests de robustesse.
Il existe également une autre variante de cet article concernant Processus d'élaboration d'une stratégie pour les contrats à terme E-Mini S & P 500.

Lors de l'utilisation de techniques d'apprentissage automatique telles que la programmation génétique la partie la plus importante du processus d'élaboration de la stratégie consiste à tester la robustesse de la stratégie afin de s'assurer qu'il n'est pas ajusté aux données historiques.
J'utilise le double filtre OOS, les tests de robustesse et le test de la matrice Walk-Forward.

 

 

Entrées

Les seules données que j'utilise sont mes attentes vis-à-vis de la stratégie - je veux construire une stratégie pour l'EURUSD qui soit rentable et qui ait le moins de pertes possible. Je veux que la stratégie soit suffisamment robuste pour fonctionner également sur d'autres symboles (GBPUSD) et je veux qu'elle passe le test de la matrice Walk-Forward pour m'assurer que la réoptimisation fonctionne sur cette stratégie.


Processus d'élaboration de la stratégie

  1. Générer un grand nombre de candidats potentiels
  2. Premier filtre - Vérification de l'absence d'échantillon (OOS)
  3. Deuxième filtre - nouveau test et deuxième contrôle OOS
  4. Troisième filtre - vérification du GBPUSD
  5. Quatrième filtre - Tests de robustesse
  6. Cinquième filtre - Test de la matrice Walk-Forward

Générer un grand nombre de candidats potentiels

Dans un premier temps, je dois simplement générer un grand nombre de stratégies potentiellement "bonnes" dont je testerai la robustesse ultérieurement. Je souhaite que toutes mes stratégies initiales soient rentables et robustes (dans une certaine mesure), c'est pourquoi j'utilise également plusieurs filtres dans cette première phase.

Mes paramètres pour cette étape
Vous pouvez télécharger les paramètres que j'utilise dans cette étape en utilisant le lien ci-dessous. Cliquez sur le lien avec le bouton droit de la souris et choisissez Enregistrer le lien sous...
Ensuite, dans StrategyQuant, utilisez Load settings pour charger ce fichier de paramètres dans le programme.

construire_eurusd_strategie.xml

Explication des paramètres
Tout d'abord, je génère toutes mes stratégies sur plusieurs symboles. Mon objectif est de trouver une bonne stratégie pour l'EURUSD, mais je veux que ma stratégie soit robuste - je veux donc qu'elle soit rentable également sur le GBPUSD. J'ajoute GBPUSD aux données supplémentaires, de sorte que la stratégie sera testée sur les deux symboles.

Image 1 : Définition des données

J'utiliserai les données du 1.1.2007 au 30.6.2011, soit 4 ans et demi. Le reste des données sera utilisé ultérieurement pour d'autres tests OOS.

J'utiliserai le mode Evolution Génétique. L'idée est de créer une population de 200 stratégies, de les faire évoluer pendant 30 générations et de repartir de zéro. De cette façon, j'éviterai de me retrouver dans une impasse au cours de l'évolution et les meilleures stratégies seront continuellement stockées dans la banque de données.
Vous pouvez également constater que la seule condition pour la population initiale est qu'elle doit effectuer au moins 100 transactions. Il n'est pas nécessaire qu'elle soit rentable - l'évolution génétique devrait pouvoir l'améliorer.

Image 2 : Options génétiques

Le dernier paramètre important est celui des options de classement. J'ai réglé la banque de données pour stocker les 2000 meilleures stratégies, car je veux avoir une bonne base pour la suite du processus de sélection. J'ai également défini le critère de sélection sur le ratio Return / Drawdown - c'est mon préféré. Vous pouvez utiliser d'autres critères de sélection, vous obtiendrez peut-être de meilleurs résultats.

Image 3 : Options de classement

L'une des choses les plus importantes est de définir les critères de filtrage initiaux pour les stratégies dans la banque de données. Je veux considérer seulement les stratégies qui ont au moins $2000 de profit, qui ont un ratio Rendement/DD > 3, qui ont au moins 300 trades ET qui ont un ratio Rendement/DD d'un portefeuille d'au moins 2.5.

Comme je teste les stratégies sur deux symboles - EURUSD et GBPUSD, les résultats du portefeuille pour les stratégies seront également calculés. En utilisant cette condition, je spécifie simplement que la performance du portefeuille ne doit pas être beaucoup plus mauvaise que la performance sur EURUSD uniquement, et le programme rejettera toutes les stratégies dont la performance du portefeuille est mauvaise.

Il ne nous reste plus qu'à appuyer sur la touche Démarrage et laisser le programme faire le travail.
N'oubliez pas que nous voulons générer au moins 2000 "bonnes" stratégies avant de poursuivre le processus de filtrage.

En fonction des paramètres et de la vitesse de votre ordinateur, cela peut prendre plusieurs heures ou même plusieurs jours, alors soyez patient. Si le programme ne produit aucune stratégie pendant un temps très long, peut-être devrions-nous passer à un cadre temporel plus élevé - H4 ou D1, ou diminuer les contraintes.


1. Premier filtre - Contrôle de l'absence d'échantillon (OOS)

Lorsque la banque de données contiendra 2000 stratégies potentiellement bonnes, j'arrêterai la génération et commencerai le processus de filtrage.
Je vais appliquer le premier filtre - en supprimant tous les systèmes qui ont une mauvaise performance hors échantillon. Je peux le faire rapidement, simplement en triant les stratégies dans la banque de données et en supprimant celles dont le profit OOS est inférieur à $500.

Image 4 Banque de données avec un ensemble de stratégies triées par profit net OOS

Cette première étape élimine généralement une grande partie des stratégies, de sorte que de 2000 candidats initiaux, nous sommes passés à environ 1500.


2. Deuxième filtre - nouveau test et deuxième contrôle OOS

Dans cette étape, je vais tester à nouveau toutes les stratégies à l'aide de l'outil Précision de 1 minute sur la période inconnue hors échantillon.
J'ai utilisé la précision de l'horizon temporel sélectionné dans la phase de construction pour rendre les tests aussi rapides que possible, mais avant de poursuivre l'évaluation, je veux m'assurer que les backtests sont vraiment fiables, c'est pourquoi je teste à nouveau toutes les stratégies avec une précision plus élevée.

Retester les stratégies est simple - il suffit de sélectionner toutes les stratégies dans la banque de données et de cliquer sur le bouton Retester. Ceci déplacera toutes les stratégies dans un onglet Retest. Je confirme également le dialogue demandant s'il faut utiliser les paramètres de construction pour le Retest.

Je prolongerai ensuite la période de données jusqu'à la fin des données disponibles. Les stratégies ont été générées sur les données du 1.1.2007 au 30.6. 2011, je vais maintenant retester les stratégies sur les données jusqu'au 30.6.2013 et définir la période hors échantillon du 2.7.2011 au 28.6.2013.
Notez que les stratégies seront testées à nouveau sur une nouvelle partie inconnue des données, et la partie OOS montrera la performance de la stratégie au cours de l'année et demie écoulée.

Image 5 : Réglage de la précision du test à 1 minute

Comme je dispose également d'une autre source de données historiques EURUSD (données gratuites téléchargées depuis Dukascopy), je les ajouterai aux données supplémentaires afin de comparer les performances sur les deux sources de données EURUSD.

Le test peut prendre un certain temps et une fois qu'il est terminé, je supprime à nouveau tous les systèmes qui ont une mauvaise performance hors échantillon. Je peux à nouveau trier les stratégies dans la banque de données par profit net (OOS) et supprimer celles dont le profit OOS est inférieur à $500.


3. Troisième filtre - vérification du GBPUSD

Dans cette étape, je vais vérifier la performance des stratégies sur le symbole GBPUSD. Je vais aller dans Résultats -> Graphique des actions, changer le graphique en GBPUSD/H1 ou en Portefeuille et passer en revue les stratégies une par une en regardant le graphique pour GBPUSD.

Image 6 : Exemple de bonnes et mauvaises performances de la paire GBPUSD

Je ne prendrai en compte que les stratégies qui montrent au moins une certaine rentabilité sur la paire GBPUSD. La courbe d'équité n'a pas besoin d'être parfaite, mais elle doit être en croissance sans drawdowns extrêmes.

Ce filtre est très sélectif - nous ne trouvons généralement qu'un petit nombre de stratégies qui passent ce test.
Ainsi, à partir de 2000, nous n'avons plus que 5 à 15 stratégies.


4. Quatrième filtre - Tests de robustesse

Après avoir supprimé toutes les stratégies ayant une mauvaise performance sur le GBPUSD, il reste moins de 10 stratégies qui ont une bonne performance IS et OOS, ainsi qu'une performance satisfaisante sur le GBPUSD. Je vais maintenant tester à nouveau les stratégies avec les tests de robustesse et le Money Management pour voir comment chacune des stratégies gère de petits changements dans les données d'entrée et pour pouvoir comparer les stratégies entre elles.

Je vais changer le money management de taille fixe à montant fixe, laissant chaque stratégie risquer $100 par trade. Cela permet de mieux comparer les stratégies, car elles risquent le même montant par opération.

Image 7 : Régler la gestion de l'argent sur un montant fixe

Dans les tests de robustesse, j'utilise au moins 20 simulations et je teste la stratégie pour tous les types de situations de stress. Après avoir configuré le test de robustesse, je teste à nouveau les stratégies.
Cette fois-ci, ce sera rapide car il ne reste que quelques stratégies dans la banque de données.

Image 8 : Tests de robustesse

Comment évaluer les tests de robustesse
Les tests de robustesse nous montrent comment la stratégie peut se comporter dans la réalité, lorsqu'il y a des transactions manquées, des données historiques différentes, etc. Je recherche des stratégies qui ont des valeurs acceptables pour le profit net et le drawdown dans un niveau de confiance de 95%.

Image 9 : Résultats des tests de robustesse

Dans l'exemple ci-dessus, nous pouvons voir les résultats de robustesse pour deux stratégies. La stratégie de gauche présente un bénéfice acceptable, mais la baisse a plus que doublé par rapport au résultat initial.
La stratégie de droite a également un profit acceptable et le drawdown est resté pratiquement inchangé.

Au cours de cette étape, je ne choisirai que 1 à 3 stratégies finales qui seront soumises au test de robustesse suivant.
Ces stratégies finales sont sélectionnées en fonction des meilleurs résultats obtenus lors des tests de robustesse, de la rentabilité globale et de la simplicité - je souhaite que les règles de la stratégie soient aussi simples que possible et que les règles de négociation aient un sens.


5. Cinquième filtre - Test de la matrice Walk-Forward

Il nous reste quelques stratégies et nous pouvons effectuer le test ultime de robustesse - le test de la matrice Walk-Forward. La matrice WF est simplement une matrice d'optimisations en marche avant avec différents nombres d'exécutions et de périodes d'exécution.

Si la stratégie réussit le test de la matrice Walk-Forward, cela signifie qu'avec l'aide de la réoptimisation des paramètres, la stratégie est adaptable à un large éventail de conditions de marché ET aussi que la stratégie n'est pas adaptée à des données particulières - puisque, grâce à la réoptimisation, elle fonctionne sur de nombreuses périodes différentes.

En outre, le test WF Matrix nous indique également si la stratégie doit être réoptimisée en permanence et quelle est la période de réoptimisation la plus optimale.

Le test de la matrice Walk-Forward doit être effectué pour chaque stratégie séparément. Je charge ma stratégie dans l'Optimizer et je sélectionne l'option Walk-Forward Matrix. Je sélectionne également les étapes pour les exécutions et les pourcentages OOS. StrategyQuant passera en revue toutes ces combinaisons, en effectuant l'optimisation Walk-Forward de la stratégie.

Image 10 : Mise en place de la matrice Walk-Forward

Paramètres d'optimisation
Pour que l'optimisation ait un sens, vous devez définir les paramètres de la stratégie qui sera optimisée. Chaque stratégie utilise une logique différente et possède des paramètres différents, vous devez donc configurer l'optimisation différemment.

Image 11 : Optimisation des paramètres

Cette stratégie étant relativement simple, je n'optimiserai que la valeur du Stop Loss et le coefficient de suivi du Stop.
Il n'est pas nécessaire d'optimiser tous les paramètres, mais seulement ceux qui ont le plus d'impact sur les performances de la stratégie.

Je peux maintenant commencer l'optimisation de WF Matrix. Ce processus peut être long et prendre plusieurs heures - en fonction des réglages, du nombre d'étapes et de paramètres optimisés et de la vitesse de votre ordinateur.

Évaluation de la matrice Walk-Forward
Une fois l'optimisation terminée, je cliquerai sur le résultat de la matrice Walk-Forward dans Databank pour voir les détails.

Image 13 : Résultats de la matrice Walk-Forward

Le résultat final est que la stratégie a réussi le test de robustesse de la matrice Walk Forward. Le diagramme de score 3D montre que 16 des 24 combinaisons ont satisfait à nos critères (paramètres par défaut utilisés).
La stratégie n'a pas besoin de réussir pour chaque combinaison, je cherche une zone 2×2 ou 3×3 où la plupart des combinaisons ont réussi - ce sera le groupe des meilleures combinaisons de réoptimisation. Dans ce cas, je peux voir que 10 runs avec 30% Out of Sample est l'une des meilleures combinaisons, parce qu'elle est entourée d'autres combinaisons qui ont également réussi.

Lorsque je vérifie le graphique d'optimisation Walk-Forward, je constate que la stratégie reste rentable même pendant la réoptimisation.

Image 14 : Tableau d'optimisation "Walk-Forward

La matrice de marche en avant me donne également une autre information importante : à quelle fréquence devons-nous réoptimiser la stratégie ?
Pour notre combinaison sélectionnée de 15 courses avec 30% hors échantillon :


Résumé

J'ai décrit mon processus complet de travail avec StrategyQuant, qui a conduit à quelques nouvelles stratégies intéressantes.
Vous pouvez l'essayer vous-même, vous en inspirer et éventuellement améliorer le processus avec vos propres idées que vous pouvez partager sur notre site web. forum.

Améliorations possibles du processus - vous pouvez essayer de rechercher des stratégies séparément pour la direction longue et courte. Chaque direction a sa propre dynamique, et des stratégies différentes pour le long et le court pourraient donner de meilleurs résultats.
Je n'ai pas mentionné Perfectionnement - c'est un outil puissant qui vous permet de rechercher de meilleures variantes de votre stratégie existante, si vous n'êtes toujours pas satisfait de sa performance.

Gardez à l'esprit que le but n'est pas de trouver une stratégie qui soit parfaite sur la base de données historiques. C'est la recette d'un désastre, car une stratégie trop optimisée est vouée à l'échec dans le trading réel.
Notre objectif devrait être de trouver une stratégie qui soit robuste sur différentes données et/ou symboles, car cela signifie qu'elle a un réel avantage sur le marché.

S'abonner
Notification pour
1 Commentaire
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Mario Gordon
Mario Gordon
2. 1. 2019 6:10 pm

Comment pourraient être les réglages sur SQ4 ? Je vois qu'il a de nouvelles fonctionnalités et ce serait bien de télécharger les paramètres pour une bonne génération de stratégies.

Poursuivre la lecture