Backtesting/Optimisation - page 7

 
lomme:
C'est vrai.

Mais pour le backtesting, la granularité la plus fine est également de 1 minute.

Je peux imaginer que les données en tick ne changeraient pas les résultats du backtesting à 1 minute.

Quelqu'un a-t-il déjà backtesté ces données ? Je suis également d'accord sur le fait que les données 1M ne feront pas une différence significative à moins que le conseiller expert utilise le scalping de manière excessive, alors même les secondes peuvent compter.

 

Back testing et optimisation

Le premier point à noter est que l'optimisation ne doit être utilisée que pour vérifier une idée existante basée sur un comportement ou un fait du marché, et non pour découvrir une grande idée de trading. L'idée de trading doit passer en premier. Le danger de l'optimisation pour un marché est de surajuster la courbe, ce qui a fonctionné sur les données historiques peut ne pas fonctionner à l'avenir, mais vous avez trouvé une excellente combinaison pour les données passées. Elle peut cependant être utilisée sur plusieurs marchés pour trouver un ensemble de paramètres à ne pas utiliser, plutôt la sensibilité du système de trading. Une autre utilisation de la simulation/du backtesting est de comprendre les faiblesses et les forces de votre système. Quand est-il performant, quand est-il à la traîne, et quand échoue-t-il tout simplement, afin que vous puissiez développer de nouvelles idées pour résoudre ces problèmes.

À ce stade, il est important de comprendre que les données constituent l'aspect le plus important du backtesting. Puisque le backtesting n'est en fait qu'une simulation sur des données historiques plutôt qu'une distribution mathématique, vous avez besoin de données de bonne qualité sur différentes paires qui représentent un nombre varié de conditions de marché. Bull, Bear, et latéral avec une volatilité variable. Si le système peut supporter diverses conditions de marché, y compris les chocs, il est suffisant pour le trading. Sans données représentatives, l'utilité de vos résultats n'aura aucune incidence sur le marché réel.

Vous devez ensuite décider du nombre de tests à effectuer pour atteindre un niveau de confiance dans vos résultats. Cela signifie qu'il faut effectuer le back test sur 15 à 30 ensembles de données suffisamment représentatifs et développer un intervalle de confiance. Cela suppose que les données soient distribuées normalement, ce qui n'est pas le cas des données financières, qui sont inclinées vers la gauche avec une queue épaisse sur le côté droit. Par conséquent, une option consiste à utiliser la limite centrale pour améliorer votre expérience et la rendre plus fiable.

Le backtester de Tradestation est probablement plus fiable que celui de Metatrader parce qu'il peut effectuer des transactions en tick plutôt que d'attendre le prix de clôture, mais cela vaut également pour les EA de Metatrader. Je ne pense pas que le backtester de metatrader soit terrible, mais il doit simplement être utilisé correctement, et l'utiliser sans comprendre le processus de simulation conduira toujours à des résultats surajoutés et à des attentes irréalistes. Cela se traduira par une perte de capital. En réalité, le but de tout ceci, à part donner quelques conseils, est de comprendre que le backtesting, l'optimisation, la simulation sont des outils utilisés pour améliorer un système et comparer les améliorations entre les systèmes, et non pour remplacer l'analyste qui conçoit le système. Si vous utilisez le backtesting, je vous suggère de comprendre la méthodologie de simulation pour vous épargner bien des maux de tête et des pertes de capital.

Si je devais vraiment faire du backtesting, je le ferais, et j'essaie de programmer un système de backtesting dans un logiciel de simulation tel que Arena ou Witness, mais je suis intéressé par les capacités des stations de trading.

 

Tutoriel et conseils sur le back testing

J'ai vu beaucoup de discussions sur le backtesting, et il semble qu'il y ait une grande confusion, alors plutôt que de poster sur chaque fil de discussion s'y rapportant, j'ai décidé de poster ici des informations qui peuvent être longues mais qui, je l'espère, clarifieront ce qu'est le backtesting et comment l'utiliser de manière APPROPRIÉE.

Le backtesting est une forme de simulation qui utilise des données historiques pour évaluer les améliorations apportées à un système de trading.

La première chose à comprendre est que la simulation est un outil, tout comme les logiciels de graphiques. Elle ne permet pas à elle seule de découvrir une idée ou même de l'améliorer, l'analyste doit le faire en se basant sur l'observation des caractéristiques fondamentales du marché. Normalement, la simulation tente d'utiliser des données historiques pour améliorer un système et réduire la variance de la sortie du système, mais la simulation financière est un cas particulier. Nous essayons plutôt de modifier le système pour qu'il soit plus performant face à la variance des données sur laquelle nous n'avons aucun contrôle. Par conséquent, nous voulons un système robuste dont les performances ne sont pas très sensibles à l'évolution des marchés.

Une simulation comporte plusieurs parties. Il y a la méthodologie, le système et les données. J'aborderai chacun de ces éléments en détail à la suite de ce billet. J'espère que vous trouverez ces informations utiles.

 

Méthode de simulation

Lorsque vous décidez d'améliorer votre système de trading, il est important d'être systématique afin d'obtenir des résultats probants. Heureusement, une méthode de simulation éprouvée a été développée. Les 6 premières étapes doivent prendre environ 40 % de votre temps, tout comme les 5 dernières étapes. L'étape d'expérimentation ne devrait prendre que 20 % de votre temps. Les étapes sont les suivantes.

1. Définir le problème - Il s'agit de l'étape la plus importante du processus de simulation. Vous devez indiquer clairement ce que vous souhaitez obtenir par la simulation (backtest). En d'autres termes, où votre système est-il le moins performant actuellement ? N'entre-t-il pas assez vite, ne sort-il pas assez vite, négocie-t-il trop souvent ou pas assez souvent ? Vous souhaitez comparer deux systèmes et décider lequel est le plus valable et le plus fiable. Ce sont des problèmes valables.

2. Planifier le projet - Cette étape a pour but de vous aider à vous assurer que vous disposez des outils et d'une feuille de route pour mener à bien l'expérience. La plupart d'entre nous ont ce dont ils ont besoin dans metatrader ou d'autres logiciels, y compris excel, mais il se peut que vous ne connaissiez pas suffisamment la programmation pour le faire vous-même et que vous deviez trouver de l'aide. Une ligne du temps est utile pour déterminer si votre travail est fait assez rapidement.

3. Définir le système - Dans le cadre d'une simulation financière, cette étape consiste à déterminer les marchés que vous souhaitez négocier et les outils que votre système utilise pour ce faire. Contrairement à la simulation traditionnelle, vous souhaitez inclure autant de détails que possible.

4. Conceptualiser le modèle - Au cours de cette étape, vous allez décrire le fonctionnement de votre système et développer une base de règles qui sera programmée dans le système de trading. Vous pouvez prendre en compte le volume, la largeur, le momentum, les oscillateurs, les cycles, les saisons, les techniques comportementales, les techniques adaptatives, le contrôle des risques, la gestion de l'argent, les systèmes de distribution ou tout autre aspect que vous souhaitez couvrir.

5. Conception préliminaire de l'expérience - Jusqu'à cette étape, j'espère que vous êtes tous capables d'élaborer ces idées dans votre tête assez rapidement, mais il est tout de même important de les écrire afin de pouvoir examiner et comparer vos résultats lorsque vous aurez terminé. Cette étape consiste à décider comment vous allez réaliser l'expérience. Je ferai un post séparé pour détailler la conception expérimentale.

6. Préparation des données d'entrée - De bonnes données sont vitales pour toute simulation, en particulier la simulation financière. De mauvaises données peuvent gonfler ou dégonfler vos résultats. Des données insuffisantes ne sont pas représentatives du marché. Je ferai un post séparé sur les données du marché. Pendant cette étape, vous allez rassembler et organiser vos données dans un format utilisable par le logiciel. Je pense que Metatrader préfère les colonnes date, heure, ouverture, haut, bas, fermeture, volume. Ensuite, vous les diviserez en différents ensembles de données utilisés dans l'expérience.

7. Traduction du modèle - C'est à cette étape que vous programmez réellement votre système. À ce stade, vous devriez avoir une bonne idée de la façon dont il a été organisé et divisé en diverses fonctions afin que le processus se déroule sans heurts. Il existe normalement deux types de systèmes : intégrés et verticaux. Un système intégré fonctionne ensemble d'une manière spécifique tandis qu'un système vertical peut avoir des parties ajoutées et retirées.

8. Vérification et validation - Il s'agit d'une étape très importante au cours de laquelle vous vérifiez que le modèle représente votre système de trading et que les données sont représentatives et précises des différentes conditions du marché. Dans le testeur de stratégie, l'ouverture du graphique après l'exécution d'un échantillon est un bon moyen d'inspecter visuellement que le système fonctionne comme vous l'aviez prévu.

9. Conception expérimentale finale - Après avoir validé l'idée, apportez au système toutes les modifications dont vous vous êtes rendu compte au cours du processus de la méthodologie. Cela peut signifier que vous avez remarqué une nouvelle idée en étudiant les données, ou qu'une nouvelle mesure de rapport était nécessaire pour satisfaire vos résultats.

10. Expérimentation - Cette étape consiste simplement à effectuer les itérations de l'expérience et à recueillir les données de sortie pour les analyser. Cette étape comprendra probablement aussi l'enregistrement des données.

11. Analyse et interprétation - Une fois l'expérience réalisée et les données de sortie collectées, vous devez analyser les données et les interpréter. C'est là que vous déciderez si les améliorations apportées au système apportent une contribution valable ou non.

12. Mise en œuvre et documentation - Mettez en œuvre les améliorations et documentez vos résultats afin de vous y référer et d'améliorer la durée de vie de la simulation.

 

Plan d'expérience élargi

Notez que la plupart des étapes de la méthodologie peuvent être répétées plusieurs fois si vous avez oublié quelque chose au cours de la simulation. Mais un aspect très important est le plan d'expérience.

Il existe deux types de systèmes dans le monde. Stochastiques (résultats variables) et déterministes (résultat unique). Les marchés financiers sont le système stochastique par excellence, après la météo. Il est plein de variance et les résultats peuvent être très différents d'un jour à l'autre et d'un marché à l'autre. Mais ce que nous voulons, c'est un système qui réagisse à ces données hautement variables de manière peu variable, augmentant ainsi notre performance tout en diminuant notre risque. La variance est la règle dans la nature et il en existe deux types. La variance aléatoire et la variance non aléatoire. La variance aléatoire est inhérente au système et ne peut pas être totalement éliminée, ce qui signifie que le rendement de notre système sera toujours différent d'un mois à l'autre. La variance non aléatoire doit être contrôlée. Il s'agit notamment des performances qui se situent en dehors de la plage d'acceptabilité, ou de la réaction du système à des pics ou des trous importants dans les données, à des coupures de courant, à des pertes de connexion, à une mauvaise programmation. Un système stable est un système qui a géré tous ces éléments par une certaine mesure.

L'objectif de notre expérience est de déterminer où notre système fonctionne en dehors des exigences fixées (variance inacceptable) et de tenter de l'améliorer. La première étape consiste donc à définir nos métriques (valeurs mesurées). Meta trader fait beaucoup de mesures importantes pour nous, drawdown, facteur de profit, pourcentage de bonnes transactions. Nous pouvons être concernés par des fonctions du système autres que celles-ci, comme la différence entre les signaux d'entrée et l'endroit où il aurait dû entrer. Ces mesures plus complexes devront peut-être être programmées manuellement.

Après avoir défini les mesures qu'il est important de recueillir à partir de votre simulation/backtest, vous devez décider comment vous allez mener l'expérience. Les données de marché étant stochastiques, une seule exécution (un seul test du système sur un seul ensemble de données de marché) ne suffit pas à nous donner confiance dans les performances du système. Les statistiques nous encourageraient à effectuer plusieurs milliers d'exécutions, mais malheureusement, nous ne disposons pas de tant de données ni de temps. Le nombre d'exécutions dépend de la variance trouvée dans les données. Il ne s'agit pas de la variance des données du marché mais plutôt de la variance de la performance de votre système de trading. Tout ce qui concerne le trading consiste à comprendre la variance et à la contrôler. Dans ce cas, il est préférable d'effectuer des séries indépendantes (différents ensembles de données/marchés), probablement 15 à 30 séries, sur des périodes suffisamment longues pour représenter tous les types de marchés, à savoir haussiers, baissiers et non-tendanciels. Les marchés non-tendanciels sont peut-être les plus importants à représenter pour le forex, afin de voir comment un système de trading tendanciel traitera les marchés à fourchettes, mais cela dépend de votre système.

A partir de ces informations, vous pouvez développer un intervalle de confiance autour de vos résultats. Un intervalle de confiance est une plage de performance dans laquelle vous avez un niveau de confiance pour que votre mesure se situe. Ainsi, sur la base de votre test de 30 ensembles de données, vous pourriez dire que vous êtes sûr à 90 % de gagner entre 100 000 et 200 000 dollars. Cela dépend de la représentativité des données de marché que vous avez utilisées dans la simulation, des différentes conditions de marché, il est préférable de les voir représentées le plus souvent possible. Si vous n'en voyez jamais une nouvelle, il n'y a aucune raison pour que vos résultats soient similaires à votre intervalle de confiance. Le calcul d'un intervalle de confiance est simple : x(moyenne)+-(valeur t de student pour alpha/2)*(s/sqrt(n)). Où la valeur t d'étudiant peut être trouvée dans un tableau et n est la taille de l'échantillon. s est l'écart-type et alpha est votre niveau de confiance - probablement .9 pour 90%. La moyenne est la moyenne de vos résultats pour la mesure en question, probablement le bénéfice.

Si vous comparez deux systèmes différents, renseignez-vous sur les tests d'hypothèse, en utilisant probablement un test ANOVA.

Nous avons donc appris combien d'exécutions il faut faire, quelle doit être leur durée, ce qu'elles doivent représenter et comment les évaluer pour en déterminer la signification. Cette section peut être confuse pour beaucoup, n'hésitez pas à poser des questions.

 

Données debacktesting élargies

J'ai parlé de la méthodologie, de la conception expérimentale et de l'objectif du backtesting. Maintenant, je veux parler des données que vous utilisez.

Je suis fatigué, donc si quelque chose n'a pas de sens, je suis désolé HA.

Les données sont très importantes et doivent avoir plusieurs caractéristiques pour être évaluées correctement. Les données doivent être suffisamment longues, représenter les conditions dans lesquelles vous allez travailler, être précises et valides.

En d'autres termes, les données doivent représenter plusieurs fois différentes conditions de marché si possible. Les haussiers, les baissiers, la haute volatilité, la basse volatilité, les chocs de prix sévères, les marchés de gamme, les marchés sans tendance, tout ce à quoi vous pouvez penser parce que vous rencontrerez très probablement ces conditions à un moment donné et vous voulez que votre système soit capable de les gérer. L'une des erreurs commises par de nombreuses personnes lors des backtests est qu'elles effectuent un seul run, lancent l'optimiseur et pensent avoir trouvé le Saint Graal des systèmes de trading. SOUVENEZ-VOUS TOUJOURS que si vos résultats sont vraiment très bons ou vraiment très mauvais, c'est probablement que quelque chose ne va pas avec vos données, votre programmation ou que vous êtes surajusté à la courbe. La suradaptation est le processus d'optimisation de votre système pour qu'il fonctionne très bien sur des données antérieures. Malheureusement, vous ne verrez peut-être plus jamais de telles conditions de marché et votre système est tellement optimisé qu'il est très sensible aux nouvelles conditions de marché et s'effondre rapidement. Pour être représentatif, il devrait durer plusieurs années, voire plusieurs décennies si possible, et ne devrait pas être inclus si un changement majeur dans le marché s'est produit, comme la combinaison des marchés. Je ne suis pas d'accord avec certains et je pense que les données de marché sont des données de marché si elles sont bonnes pour le back testing, tant qu'elles représentent une certaine condition, donc utilisez votre propre jugement.

La collecte de données de marché pour les tests peut être un long procès, car elles ne sont jamais dans le format que vous voulez et prennent toujours trois fois plus de temps à obtenir que vous ne l'espérez.

Enfin, les données doivent être indépendantes, ce qui peut poser problème sur les marchés des changes où toutes les paires de dollars sont fortement corrélées, ce qui signifie qu'elles évoluent de manière similaire. Ce phénomène est souvent brisé au sein même d'un marché par l'autocorrélation, ce qui signifie que la donnée suivante est corrélée ou dépendante de la dernière. Les secondes observations doivent être distribuées de manière identique pendant toute la durée du processus. Encore une fois, les distributions des marchés financiers changent tout le temps, mais la forme de base est probablement assez proche pour fonctionner. Enfin, elles doivent être normalement distribuées. Ceci est TOUJOURS cassé car les prix ont tendance à rester à des niveaux plus bas, plutôt les distributions de prix et les distributions de mouvements de prix sont biaisées vers la gauche et ont une queue plus épaisse à droite que prévu. Bien que ce soit ce qui nous permet de gagner de l'argent, cela viole une hypothèse de base de la simulation. Il existe des méthodes pour corriger cela dans l'analyse, comme les transformations logarithmiques, mais le théorème de la limite centrale est généralement plus facile à expérimenter. Cela signifie que si vous réalisez 15 séries où chaque valeur de série est la moyenne de 15 autres séries, la distribution sera plus normale et l'intervalle de confiance plus réaliste. Si cela n'a pas de sens, ignorez-le, mais rappelez-vous qu'il n'y a AUCUNE corrélation entre les résultats du backtesting et le système physique avec lequel vous tradez, c'est juste un outil et un bon outil mais il doit être compris et utilisé correctement.

Beaucoup d'autres sujets doivent être considérés et pourront être abordés plus tard, tels que,

la procédure de backtesting

l'optimisation de

statistiques

probabilité

transformation

considérations pratiques

les distributions et leur compréhension

flux aléatoires et données syntéthiques

tests d'hypothèses

optimisation monte carlo/plus rapide que les metatraders

mais en attendant, j'espère que cela vous a été utile et que vous pourrez réaliser de meilleurs backtests et obtenir de meilleurs résultats lorsque vous mettrez en place votre système de trading. N'hésitez pas à poser des questions, je sais que c'était beaucoup.

 

Excellente explication.

Merci Cro2314

 

Petite question sur les différents systèmes de backstest...

Le logiciel Tradestations est-il meilleur pour le backtesting que le logiciel Metatrader ?

Est-ce que quelqu'un a de l'expérience avec les deux ?

Ma conclusion jusqu'à présent est que les backtests de tradestations semblent plus avancés que ceux de metatrader, mais d'un autre côté metatrader est gratuit et tradestation coûte $$$...

Tout commentaire sur les différences entre les deux serait le bienvenu.

 

Je n'en connais que quelques-uns.

edit***May 27. Il est important de noter que le backtesting est une pratique de simulation et non un simulateur. Un simulateur qui semble bien fonctionner est listé sur ce site comme Forex tester. Il peut être utilisé comme backtester mais pas encore avec les EA. Les simulations/backtesting sont en fait destinés à fournir des statistiques sur les performances de votre système de trading afin que vous puissiez en analyser les faiblesses. Le but ultime est de réduire la variance de la pente de la courbe de vos capitaux propres au fil du temps. Je me demande si c'est pour cela que les gens n'aiment pas le backtester de metatraders. Peut-être qu'ils recherchent un simulateur. Mais si c'est une performance visuelle que vous recherchez, ouvrez simplement le graphique après avoir exécuté le testeur de stratégie et vous pouvez voir exactement comment l'EA négocie. Très utile pour la validation du système.

En fait, j'ai peu d'expérience avec le backtester de Tradestations. Je reconnais cependant quelques avantages. Tradestation peut faire des achats intraday (tick) plutôt que d'utiliser le prix de clôture dans le testeur de stratégie, (cela vient de se produire dans la dernière version) alors que metatrader utilise le prix de clôture. En fonction de votre stratégie, cela peut avoir des conséquences importantes dans votre système si vous négociez très très rapidement et essayez d'attraper les mouvements de deux ou trois barres qui apparaissent de temps en temps. Mais cela va également à l'encontre de nombreuses stratégies fondamentales qui consistent à attendre le cours de clôture. L'autre différence est bien sûr le langage que vous pouvez utiliser pour programmer, qui varie d'un système à l'autre, et certaines tâches courantes telles que la sommation de variables semblent plus faciles sur Tradestation. Enfin, j'ai entendu dire qu'il y a des limitations de mémoire dans Metatrader qui ne sont pas limitées dans Tradestation, mais je n'ai pas rencontré ce problème. Je ne sais pas quelles sont les limites sur les variables du système telles que celles qui empêchent un EA de charger ses indicateurs sur l'écran pour vous comme dans metatrader. Il semble également que les statistiques pré-écrites que tradestation vous donne sont plus robustes sur les résultats du backtest. TradeStation présente certains avantages, mais n'oubliez pas que le backtest doit réagir de la même manière que le logiciel si vous exécutez simplement un système entièrement automatisé. Si c'est le cas, je vous suggère de faire un backtest sur le même logiciel que celui que vous utilisez pour trader automatiquement, sinon vous pourriez être surpris.

Dans l'ensemble, j'imagine qu'il est mieux programmé, mais contrairement à beaucoup de gens, je crois que le backtester de Metatraders fonctionne exactement comme il est censé le faire s'il est utilisé correctement et si vous comprenez comment il exécute votre code. C'est toujours le cas avec les logiciels de simulation, donc je ne le considère pas comme un inconvénient. Le logiciel que vous utilisez n'est généralement pas aussi important que la façon dont vous interprétez les données qu'il vous fournit. Je suis en train de divaguer, je vais donc m'arrêter là.

Au fait, merci à Felix pour son compliment, il a été grandement apprécié.

 

Mon backtester est très lent ... aide

Parfois il est rapide et parfois il est beaucoup trop lent. Je ne sais pas pourquoi. J'ai trouvé un fichier de 1,5 Go dans les journaux et je l'ai supprimé, mais il est toujours aussi lent. Existe-t-il un meilleur moyen de backtester les programmes ? J'utilise Metatrader et je n'ai souvent que 20 % de qualité de modélisation.