Re: AI_VX Hello World !
Publié : 04 oct. 2015, 17:33
Intéressant d'offrir ton EA aux tests.
En jouant avec, je me suis aperçu d'un truc amusant :
- Le Time Frame est en H1. A ce stade, un EA est néanmoins libre de prendre des décision tick by tick ou de ne les prendre que Bar Closed (à xxh00:00 donc, en fait au 1er tick après ce time).
- C'est le cas ici, et l'on voit qu'il y a des décisions d'open qui close les poses inverses (pas de hedge)
- Il n'y a pas de take en mèches (dans le carnet d'ordre) mais uniquement des stops loss.
- De même, les sorties en perte sont des stops.
- Ainsi, les closes interviennent à n'importe quelle heure (sauf close par open de pose inverse). Les prix décident et, ticks buy ticks, le serveur est susceptible d'activer l'ordre au marché dès que le stop est atteint.
A ce stade, une question que je me pose tout le temps :
- Et si je gérais les stop moi-même, à savoir que j'attend de constater le dépassement du stop pour lancer un ordre au marché ?
- Dans ce cas, dois-je faire le test tick by tick, ou puis-je attendre la fin d'une bougie H1 pour me décider ? (On ne rentre pas ici dans la considération de la qualité d'exécution ni de la différence en terme de risque de slipage selon que le stop soit sur le serveur ou dans l'EA).
A tous les coups je me dis toujours : évidement, si on attend un close bougie alors qu'on est peut être dans le mauvais sens, ça va morfler. Quand on raisonne par stop, il faut évidement suivre les ticks et ne pas attendre bêtement de prendre dans la tronche une méga bougie adverse.
En fait, parfois on va être gagnant, en renonçant à un stop, le MAE (maximum adverse excursion) n'apparaissant qu'en mèche, puis les cours repartant dans la direction escomptée, on fini en gain au lieu de sortir en perte par stop. Mais d'autre fois, ce sera bien pire, la stop apparaissant tardivement. Intuitivement, je ne sais pas vous, mais pour ma part je suis toujours persuadé qu'attendre le close bougie va avoir un résultat délétère.
Ya qu'a tester.
Et alors... surprise !
Avec AI_VX, si l'on prend l'option du tester : "Open prices only", c'est à dire qu'au lieu d'avoir tout les ticks, on n'a que les open et close de chaque bougie, on constate que toutes les exécutions se font bien sur les heures xxh00:00. Choisir cette option de backtest, revient exactement au même que faire prendre par l'EA la décision de stop au moment du close de bougie (comme je n'ai pas le source de AI_VX, c'est le seul moyen).
Le résultat est... le même ! (a un epsilon près).
Je suis toujours enchanté de tomber sur un résultat contre intuitif. On y trouve souvent un enseignement.
Le premier intérêt est que le back test de 15 ans prend une seconde au lieu de 3 mn. Ici, il n'y a pas de paramètres à régler ou presque, mais imaginez qu'on essaye d'en régler 3 ou 4.
Deuxièmement, on retombe sur un résultat de traitement du signal à savoir qu'une fois une finesse d'échantillonnage décente (ici H1, vue que la logique d'Open est H1), alors un échantillonnage plus fin n'apporte rien. Intuitivement, on pourrait penser que ça apporte peu, un peu, un petit peu ? Mais non, ici ça n'apporte rien. Que dalle. Contrairement aux échantillons de sondage de population où interroger 10000 personnes au lieu de 1000 réduit énormément les intervalles d'incertitude, ici il n'y a rien à gagner.
Une autre façon de raisonner, que j'applique désormais assez souvent est la suivante :
- Imaginons qu'on eut trouvé une forte différence de rendement : la méthode qui laisse filer ses stops en attendant le close bougie se prend une raclée par rapport à la méthode normale.
- Alors, ce n'est pas l'arbitrage entre ces 2 méthodes qu'il faut faire mais, la stratégie différentielle : générer les trades qui réalisent la différence entre les deux stratégie. (Sorte de scalper qui agit entre les stops by ticks et la décision ou non décision de clore le trade lors du close bougie).
Comme il n'y a pas à l'évidence de scalpeur simplissime et hyper juteux qui réalise ce différentiel, c'est normal que le différentiel soit faible voir nul. Mon intuition initiale était donc infondée.
Marrant, non ?
En jouant avec, je me suis aperçu d'un truc amusant :
- Le Time Frame est en H1. A ce stade, un EA est néanmoins libre de prendre des décision tick by tick ou de ne les prendre que Bar Closed (à xxh00:00 donc, en fait au 1er tick après ce time).
- C'est le cas ici, et l'on voit qu'il y a des décisions d'open qui close les poses inverses (pas de hedge)
- Il n'y a pas de take en mèches (dans le carnet d'ordre) mais uniquement des stops loss.
- De même, les sorties en perte sont des stops.
- Ainsi, les closes interviennent à n'importe quelle heure (sauf close par open de pose inverse). Les prix décident et, ticks buy ticks, le serveur est susceptible d'activer l'ordre au marché dès que le stop est atteint.
A ce stade, une question que je me pose tout le temps :
- Et si je gérais les stop moi-même, à savoir que j'attend de constater le dépassement du stop pour lancer un ordre au marché ?
- Dans ce cas, dois-je faire le test tick by tick, ou puis-je attendre la fin d'une bougie H1 pour me décider ? (On ne rentre pas ici dans la considération de la qualité d'exécution ni de la différence en terme de risque de slipage selon que le stop soit sur le serveur ou dans l'EA).
A tous les coups je me dis toujours : évidement, si on attend un close bougie alors qu'on est peut être dans le mauvais sens, ça va morfler. Quand on raisonne par stop, il faut évidement suivre les ticks et ne pas attendre bêtement de prendre dans la tronche une méga bougie adverse.
En fait, parfois on va être gagnant, en renonçant à un stop, le MAE (maximum adverse excursion) n'apparaissant qu'en mèche, puis les cours repartant dans la direction escomptée, on fini en gain au lieu de sortir en perte par stop. Mais d'autre fois, ce sera bien pire, la stop apparaissant tardivement. Intuitivement, je ne sais pas vous, mais pour ma part je suis toujours persuadé qu'attendre le close bougie va avoir un résultat délétère.
Ya qu'a tester.
Et alors... surprise !
Avec AI_VX, si l'on prend l'option du tester : "Open prices only", c'est à dire qu'au lieu d'avoir tout les ticks, on n'a que les open et close de chaque bougie, on constate que toutes les exécutions se font bien sur les heures xxh00:00. Choisir cette option de backtest, revient exactement au même que faire prendre par l'EA la décision de stop au moment du close de bougie (comme je n'ai pas le source de AI_VX, c'est le seul moyen).
Le résultat est... le même ! (a un epsilon près).
Je suis toujours enchanté de tomber sur un résultat contre intuitif. On y trouve souvent un enseignement.
Le premier intérêt est que le back test de 15 ans prend une seconde au lieu de 3 mn. Ici, il n'y a pas de paramètres à régler ou presque, mais imaginez qu'on essaye d'en régler 3 ou 4.
Deuxièmement, on retombe sur un résultat de traitement du signal à savoir qu'une fois une finesse d'échantillonnage décente (ici H1, vue que la logique d'Open est H1), alors un échantillonnage plus fin n'apporte rien. Intuitivement, on pourrait penser que ça apporte peu, un peu, un petit peu ? Mais non, ici ça n'apporte rien. Que dalle. Contrairement aux échantillons de sondage de population où interroger 10000 personnes au lieu de 1000 réduit énormément les intervalles d'incertitude, ici il n'y a rien à gagner.
Une autre façon de raisonner, que j'applique désormais assez souvent est la suivante :
- Imaginons qu'on eut trouvé une forte différence de rendement : la méthode qui laisse filer ses stops en attendant le close bougie se prend une raclée par rapport à la méthode normale.
- Alors, ce n'est pas l'arbitrage entre ces 2 méthodes qu'il faut faire mais, la stratégie différentielle : générer les trades qui réalisent la différence entre les deux stratégie. (Sorte de scalper qui agit entre les stops by ticks et la décision ou non décision de clore le trade lors du close bougie).
Comme il n'y a pas à l'évidence de scalpeur simplissime et hyper juteux qui réalise ce différentiel, c'est normal que le différentiel soit faible voir nul. Mon intuition initiale était donc infondée.
Marrant, non ?