ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

Trading Automatque - Contrôle des pertes

par Twanaar » 05 Juil 2017 05:59

Un des problèmes lié au trading automatique, c'est que l'on n'est jamais sûr que la stratégie mise au point en backtesting va se comporter comme prévu en réel:

- Elle peut être sur-optimiser sur les données de tests
- Le comportement du marché peut avoir changer au moment de la mise en réel vs la période de test
- Il peu rester des bugs lié a des situations non vu en test qui peuvent la faire dérailler
- Même si la stratégie est profitable un temps, elle peut ne plus être adaptée au comportement de marché après quelques temps d'utilisation.
- La stratégie peut être profitable sur certaines phase de marché, et pas sur d'autres, sans qu'on ai trouvé un filtre permettant de supprimer les trades des périodes non profitable.

Pour toutes ces raisons, j'ai chercher un système de sécurité permettant de limiter la casse si l'un de ses événement arrive.
Et j'ai fini par mettre au point un système assez efficace de contrôle du drawdown sans trop impacter les performances de la stratégie.

Ce système est assez complexe à mettre en oeuvre dans la mesure ou quand il s'active, il faut pouvoir simuler les ordres pour calculer de statistiques, ce qui n'est pas forcement faisable sur toutes les plateformes, je précise que je programme sur NinjaTrader 7 (bientôt 8) en C#, et que par ce langage, il n'y a pas de limite à la complexité de ce que l'on peu programmer, NinjaTrader permettant de charger des DLL externe pour ajouter des interfaces/API/fonctionnalités.

J'ai donc écrit un simulateur d'ordre qui permet de gérer les entrée en position suivant les différent type d'ordre, les stop lost, stop suiveur et objectifs, et permet de savoir si un ordre (non prit) aurait été gagnant ou perdant, et de combien, de la même façon que si il avait été prit en réel (au différences de filling prêt), le résultats étant assez précis par rapport à l'objectif.

Ensuite la stratégie a des variables qui indique la perte maximum avant d’enclencher le système, ainsi que d'autres variables indiquées plus bas.

Quand la perte MAX est atteinte => le système s'active, les ordres de la stratégie sont alors prit en simulation.

Le système calcul les Drawdown courant, max et de combien on à remonté vs le DD max.
Quand le DD a été remonté d'une valeur RecoveryMini (pas la totalité du DrawDown, enfin par forcement), alors les trades repassent en réel, et on autorise un dépassement du Max d'un DDIncrement, qui devient le nouveau DD MAX.
Si la stratégie échoue et atteins de nouveau le nouveau DD Max, on repasse ne simulation, le Recovery nécessaire pour redémarrer en réel augmente d'un incrément et on recommence le process.
Si la stratégie remonte tout le DrawDown, alors les valeurs des DDMAX, incrément etc repasse aux valeurs initiales.

Ce système permet:
- Chaque fois que la stratégie échoue à redémarrer et touche sont DDMAX courant, la quantité de recovery (gain) a faire augmente, donc une stratégie qui n'arrive pas a remonter son DD et s'enfonce fini par en plus fonctionner qu'en simulation, car il est de plus en plus difficile pour la stratégie de repasser en réel.

Si la stratégie bug et encaisse des pertes a cause de ces bugs, elle ne fonctionne assez rapidement qu'en simulation.

Si une stratégie gagne pendant certaine période et perds pendant, d'autre, elle peu devenir rentable grâce a se système qui va limiter les pertes.


Sur une stratégie gagnant environ 12000$ en trois mois (600 trades) avec un DD MAX de 4000$, ce système a permis de conserver 10500$ de gains, avec une réduction du Drawdown à 1200$, ceci avec des paramètres de DDMAX Initiaux/Seuils de recovery, incrément de Drawdown de 400/400/400.

Il m'a aussi permis de rendre rentable des stratégie qui ont des période de gains et des période de pertes suivant le marchés, sans que je ne trouve de critère permettant de gérer les périodes de pertes au niveau de la stratégie.

Je suis bien conscient que cela est assez complexe, pas réalisable dans toutes les plateformes. En contrepartie, couplé a un bon monnaie management, ce système est redoutable d'efficacité.

Qu'en pensez-vous, d'autres ont-ils mis en place un système similaire de contrôle des pertes ? et de qu'elle façon ?

Je suis intéresse par l’échange d’expérience et idée autour de ce thème.

Re: Trading Automatque - Contrôle des pertes

par takapoto » 05 Juil 2017 08:26

Merci pour ton partage Twanaar.
Spoiler:
Une petite suggestion : au lieu de montants en devise,
ce serait plus clair si c'était des points/lot

Re: Trading Automatque - Contrôle des pertes

par AlgoFlex » 05 Juil 2017 08:46

Intéressant, tu fais cela sur qu'elle unité de temps ou peu être de ticks ?

Spoiler:
Ou en pourcentage c'est bien aussi ;)

Re: Trading Automatque - Contrôle des pertes

par Euraed » 05 Juil 2017 11:39

Merci pour ce partage
En ce qui me concerne la partie que je trouve la plus novatrice dans ton approche est cette notion de simulation qui permet ensuite, selon paramétrage, de décider de revenir au réel quand le système de trading semble mieux fonctionner dans le contexte.
Je perçois intuitivement une autre application de cette façon de procéder, qui dépendra du type de supports choisis et qui n'aurait pas pour but premier de minimiser les DD mais de maximiser les rendements (et donc indirectement minimiser aussi les DD).

Il s'agirait d'appliquer une méthode statistique similaire pour choisir la modalité i dans un segment X.
Exemples: une modalité du choix de la paire sur le segment du forex, une modalité de choix géographique (Allemagne, USA, France...) sur le segment des indices boursiers etc...
Le système de trading serait appliqué en simulation parallèle à toutes les modalités et le passage d'ordre en réel se ferait évidemment sur l'option la plus favorable, selon paramétrage.
Je pense que ceci serait nettement plus favorable car cela te permettrait d'éviter les phases d'attente de remontées de DD !
Car à mes yeux le système actuel, comme tu l'as souligné, a fatalement tendance à réduire les perfs en te faisant "mouliner à vide".

Re: Trading Automatque - Contrôle des pertes

par falex » 05 Juil 2017 13:49

Pas mal comme idée.

Donc si je comprends le principe que tu met derrièer c'est d considérer que si une stratégie atteins le DD max initial (ou avec seuil) alors elle entre dans une phase de non profitabilité.

Tu as quel fenêtre de recul ? Uniquement 3 mois ou plus (genre 3 ans par exemple).

Effectivement, coder ça dans PRT ... demande une certaine gymnastique :-)

Re: Trading Automatque - Contrôle des pertes

par trappiste73 » 05 Juil 2017 13:59

Je trouve ça très prometteur comme piste d'études - merci.
Néanmoins, ça implique de garder inchangé son algo. Du coup, difficile de dire si c'est une méthode plus efficace que les ajustements à chaque mv. Mais peut-être as-tu étudié le sujet ?

Re: Trading Automatque - Contrôle des pertes

par Twanaar » 05 Juil 2017 16:45

@AlgoFlex:

J'ai plusieurs stratégie, certaines fonctionneent en 5mn, 1min avec getion de l'entrée au tick (sur dépassement d'un prix), d'autre en graph non temporel, une version derivée du linebreak.

Le % c'ets bien certe, mais pour le moment mes stratégie fonctionne en taille de position fixe, quand mon capital aurra sufifsament augmenté, je passerai sans doute en taille dynamique de position avec le monaie management + gestion en % de divers paramêtres.

Re: Trading Automatque - Contrôle des pertes

par Twanaar » 05 Juil 2017 16:49

@Takapoto:

Certe, mais mes stratégies fonctionnent sur les contrats futur, et l'unité et le point qui vaut une certaine valeur.

De toute façon l'explication est pour comprendre le principe, la valeur importe peu et est a adapté a chaque stratégie/Instrument.

Re: Trading Automatque - Contrôle des pertes

par Twanaar » 05 Juil 2017 17:09

@Euraed:

Très juste, d'ailleurs j'utilise déjà cela d’une façon différente, mes stratégies sont sur les contrats futurs sur indices principalement, et Ninjatrader permettant de lancer plusieurs stratégies sur le même compte (du moment que chaque stratégie soit sur un instrument différents), je lance simplement plusieurs stratégies intégrant le système de contrôle de perte: ainsi les stratégies qui performent passent leurs ordres en réel, les autres en simu en attendant des jours meilleurs.

J’ai une autre utilisation que je n’ai pas encore mise en œuvre de ce système :
Pour une stratégie qui a des réglages fonctionnant mieux suivant des comportements de marché, on peut exécuter en simulation toutes les variations de réglages valides que l’on a identifiés en backtest, et exécuter en réel la version qui a les meilleurs résultats actuelement. Avec ce système on peut envisager d’exécuter une stratégie en permanence sur-optimisée à la situation actuelle, du moins si la sur-optimisation n’est pas trop extrême et reste valide quelques temps. On peut aussi de façon moins extrême utiliser ce principe pour avoir une stratégie qui s’adapte à la situation de marché via un ranges de paramètre qui fonctionnent en simulation, range de paramètres identifié lors des backtests sur diverses situation de marchés. Bref ça offre pas mal de voies de recherche, que je n’ai pas toute explorées.

Le système sur des stratégies qui ont des DD épisodiques a tendance à diminuer les gains et le DD. Sur les stratégies qui ont régulièrement des périodes de fort DD et de gains, cela réduit le DD et augmente les gain (on ne s'enfonce pas autant en DD, du coup lors de la remonté on engrange des gains supplémentaires puisqu'on a pas pris les pertes correspondantes en réel.
Ce qui marche moins bien, c’est les stratégies qui ont tendance a alterner très rapidement gains/perte, comme le système attends un gain suffisant pour repasser en réel, le gain n'est pas fait en réel, et si lors du basculement en réel on se prend un perte, on creuse le DD et on repasse en simulation (cette exemple est caricatural, mais c'est pour expliquer le principe), c'est là qu'intervient les incréments sur les valeurs de reprise en réel : à chaque échec pour éviter de perdurer dans ce cycle néfaste les conditions de reprise en réel deviennent plus drastiques, rapidement les condition de reprise en réel dépasse les gains que peux faire la stratégie et on reste en simu tant que la situation perdure.

Mes premières versions du système avaient des critères de reprise en réel constant, et échouait sur ce cette situation ce qui aggravait le DD et perte (la situation extrême étant une stratégie qui fait 1 ordre gagnant > au critères de reprise et un ordre perdant > au DD max en boucle, dans ce cas de figure on ne prend en réel que les ordres perdant avec des paramètres fixe, d'où les critères incrémentaux a chaque échecs de reprise).

Re: Trading Automatque - Contrôle des pertes

par Twanaar » 05 Juil 2017 17:12

@Falex:

Pour mes backtest, je dispose de data en minutes depuis 1978 à aujourd'hui sur pratiquement tout les instruments de contrats futur utilisable avec NinjaTrader et des data replay en ticks par tick depuis 2009 à aujourd'hui.

En réel, j'ai une stratégie qui fonctionne depuis un an, une autre depuis janvier 2017 et deux autres depuis un ou deux mois.

Articles en relation
Trading Automatique : 20% par an
par Benoist » 27 Jan 2015 11:08 (0 Réponses)
Social Trading
par Benoist » 12 Sep 2017 23:00 (1 Réponses)
Suivi de mon algorithme de trading cac 40
Fichier(s) joint(s) par Benoist » 22 Nov 2015 21:43 (93 Réponses)
Suivi de mon algorithme de trading Dax 30
Fichier(s) joint(s) par plataxis » 01 Mai 2016 12:03 (25 Réponses)
Suivi de mon algo de trading sur le Dax
Fichier(s) joint(s) par Gavrinis » 19 Mai 2016 18:30 (12 Réponses)
Merite, justification et trading automatique
par Euraed » 22 Jan 2015 14:34 (22 Réponses)
Critères de qualité d'un système de trading
par bobbyO » 15 Sep 2015 14:53 (6 Réponses)
trading automatique pour les nuls
Fichier(s) joint(s) par Arnaud Alcantara » 18 Fév 2016 14:34 (67 Réponses)
Comment développer un système de trading?
par Edd » 23 Avr 2016 22:04 (16 Réponses)
Mon système de trading intraday sur l'Eurusd
Fichier(s) joint(s) par Microtrader » 26 Aoû 2016 01:31 (36 Réponses)

ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé