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

Re: Création d’un robot parfait

par Edd » 02 Nov 2015 10:39

Soit doit être 1 épisode par mois non? :D

Re: Création d’un robot parfait

par Tartempion » 02 Nov 2015 16:34

Hello TripleFail ! JP Bouchaud = très bonne lecture ! (C'est un gars vraiment très brillant en tant que physicien cea/cnrs et son «theory of financial risk" fait référence.. Il a un peu changé d'avis sur sa discpline financière j'ai l'impression ces derniers temps mais c'est pas le sujet. Hurst et kalman c'est normal de passer par là. Beaucoup y sont passés. À la place des FFT je te conseille, si tu ne l'as déjà fait, de te pencher sur les ondelettes plus pertinentes ici à mon avis. Tu trouveras sur arxiv.org (mais tu connais peut-être déjà) pas mal de matière. En tout cas je vais suivre ta file, qui m'intéresse ! Bonne route !

Re: Création d’un robot parfait

par TripleFail » 02 Nov 2015 16:55

Pour les impatients voici la suite (mais pas encore la fin)
Pour Tartempion j'ai laissé cette approche de côté, pour le moment. Et merci de l'intérêt pour le sujet.


Période 2011-2013

Après les tentatives infructueuses précédentes, je me décide cette fois de changer de sous-jacent et utiliser les options que je viens d’apprendre à maitriser (livres : options futures et autres actifs dérivés, pricing et volatilité des options, faire de l’argent avec les options). Je crée un premier robot swing trader (en c++), utilisant un de mes indicateurs perso en UT journalière (voir article précédent) sur le S&P500, dow jones et dax30. Et là miracle performance élevée, taux de réussite énormes. Mais je ne passe qu’un ou deux ordres par mois, donc finalement je décide d’utiliser les options manuellement, il n’y a pas d’intérêt à automatiser cette stratégie (pour les curieux mes stratégies favorites sont, risk reversal, short strangle, front spread et skip strike butterfly).

Ensuite je m’intéresse à un algorithme génial que j’utilisais déjà dans la robotique ludique ou les jeux vidéos. L’algorithme génétique (voir l’article de wikipédia sur le sujet), cet algo permet de trouver une solution optimale à un problème, même si celui-ci n’a pas de solution précise. De plus cet algorithme est facile à mettre en place et peut-être réutilisé pour tout type de problèmes. Je fais donc un essai pour trouver le réglage optimal d’un robot (meta trader 4 permet de faire ça, mais je recommande de le faire en c++ pour des raisons de vitesses et éviter la sur-optimisation). Premier test fait, premier échec constaté, on a un résultat spectaculaire sur l’historique d’apprentissage mais complétement nul sur l’historique de validation. Donc finalement je refais un programme de A à Z de manière à éviter ce soucie, mais malheureusement les performances grimpent, mais de trop peu, donc je l’oublie pour ce genre d’usage. Quelques années plus tard j’aurais finalement crée un projet (voir capture d’écran) pour déterminer quelle ratio financier est le mieux et avec quels réglages pour créer un stock screener avec une stratégie parfaite, mais je n’ai pas retenue le projet (ayant plus performant et plus fiable à ce moment-là).

Image

Ensuite j’ai tenté le tout pour le tout, je savais qu’un réseaux de neurones a plusieurs couches permettaient d’apprendre n’importe quelle fonction non-linéaire. Après quelques tests fait sur des bases de données d’entrainement (prédire âge de coquillage, sexe d’une personne, apprendre une fonction mathématique, etc…) je décide de me lancer j’utilise un programme en c++ simple, programmer avec la librairie FANN, je fais apprendre des historiques de cours très longs (après avoir préparé les données, un réseau de neurones ne peut pas prendre de données brutes). Et je n’obtiens rien ! l’erreur moyenne en entrainement ou généralisation est de 0.7% ce qui correspond plus ou moins au mouvement moyen sur la période de test. Donc je décide de rajouté des données en entrée, différents indicateurs techniques, volumes etc… , mais les choses ne s’améliorent pas. Je décide de faire autrement et j’utilise le réseau pour trader comme un trader humain, dans l’historique j’indique en sortie ce que j’aurais fait, achat, vad, etc… le résultat est intéressant, on a l’impression de voir un trader humain à l’œuvre on est plus aussi psycho-rigide qu’avec des If et Else, mais les performances restent médiocre. Donc j’oublie les perceptrons multi-couche et time delay neural network (les 2 types de réseaux utilisés).

Dernière tentative pour la période utilisée l’intelligence humaine. Sur un site de trading virtuel, je récupère les positions des traders faisant à peut prêt la même stratégie. J’utilise l’algorithme aléatoire de majorité pondérée (intelligence artificielle de stuart russell et peter norvig) pour prendre les positions. Pour faire simple chaque trader a un poids qui évolue en fonction des bonnes ou mauvaises prévisions, ce poids est mis à jour après chaque prédictions, dans le temps on élimine les mauvais traders des bons, si le marché change de configuration les mauvais peuvent redevenir bon et en quelque tour être de nouveau privilégier. Sur le papier c’est bien, dans la réalité il aurait été nécessaire de créer le site de trading sur lequel on récupère les infos, la perfection, être courtier pour avoir les positions de ses clients. Donc j’ai gardé l’algorithme de côté pour d’autre usage et laissé tomber cette solution, n’étant ni webmaster, ni broker (on peut toujours l’utiliser pour faire une synthèse des prédictions de différents algos).

La suite au prochain épisode ;)

Re: Création d’un robot parfait

par plataxis » 02 Nov 2015 17:20

Quel boulot ! Et quelle passion derrière tout ça m

On en redemande...

En version courte, sur l'ensemble de ta vie de trader, es-tu gagnant manuellement ? Es-tu gagnant avec un robot ? Cela représente-t-il de grosses sommes par rapport à ton capital / tes autres revenus ?

Re: Création d’un robot parfait

par TripleFail » 02 Nov 2015 22:21

@plataxis

En version courte, sur l'ensemble de ta vie de trader, es-tu gagnant manuellement ?

Oui, sur action/obligation (dans une approche long terme), je fais entre 15% (mauvaise année) et 85% (bonne année), multiplier par le levier utilisé (entre pas de levier et 1.66 via crédit lombard). Je n'ai jamais fait un calcul total précis, mais après impôts et retraits, le capital a été multiplié par 22 sur 12 ans (à long terme il y a d'énorme avantage sur la fiscalité). Sur option en swing trading je suis bénéficiaire aussi, mais sur des montants plus petit et une durée plus courte.

Es-tu gagnant avec un robot ?

Oui, sur des choses qui ne sont pas encore dévoilés. Dans ce qui a été dévoilé il y a des algorithmes gagnants, mais qui ne présentent pas d'intérêt à être automatisés ou qui s'avère moins performant que ma stratégie de long terme (surtout après impôts).

Cela représente-t-il de grosses sommes par rapport à ton capital / tes autres revenus ?

Non, ce qui a été testé en réel par le passé l'a été fait sur des petites sommes, donc je dirais un peu moins de 7000€ de gain cumulé, mais surtout le plus important la performance en % n'est pas aussi bonne que ce que je fais manuellement. Par la suite les choses changeront surement.

Re: Création d’un robot parfait

par plataxis » 02 Nov 2015 23:12

Je te le souhaite :)

Et bravo pour ce que tu as déjà réussi.

Re: Création d’un robot parfait

par Jeff719 » 06 Nov 2015 12:35

Félicitation pour ce dynamisme infatigable !

Concernant les algorithmes génétiques, je ne te suivrais pas tout fait.

Je ne crois pas qu'ils soient spécifiquement adaptés à une solution imprécise ou floue.

Leur rôle est d'explorer un espace, éventuellement gigantesque pour fournir dans un temps décent de calcul une solution proche de la meilleure. Ca ne fait qu'explorer efficacement les possibles. Marrant que ce soit les mécanismes de la vie qui aient donné l'idée de cette méthode qui a montré sont incroyable efficacité.

Si je dispose d'un ordinateur de puissance infini, à l'évidence je jette tous mes algo génets puis mouline toutes le combinaisons.

C'est tout.

Par ailleurs, je crains que la question du temps de calcul et celui de la sur optimisation ne soient pas le même sujet. Face à une problème complexe, j'ai tendance à le découper en sous problèmes, si tant est qu'ils soient indépendant.

La sur optimisation par ajustement des paramètres de back test est un problème récurrent, monstrueux, dévastateur et permanent. Chassez la sur optimisation et elle revient au galop. On arrive à sur optimiser sans optimiser de paramètre : juste quelques IF THEN sur une paire favorite qui marchent depuis quelques temps et ne marcheront pas dans le futur, c'est déjà de la sur optimisation.

Dans ce contexte - je ne vais pas écrire tout un article concernant la sur optimisation - je ne vois pas en quoi faire sa cuisine génétique en C++ plutôt que celle existante dans certains environnements, résolve en quoi que ce soit la question de la sur optimisation.

Concernant les NN, je crois que là, il y a un lien entre les deux problèmes : capacité d'apprentissage-temps de calcul- efficacité / sur optimisation.

Les processus sont peu explicites. Ils font des choses, mais il est difficile d'expliciter façon base de règle ce qu'ils font vraiment. La perception intuitive du nombre de degré de liberté est délicate. On ne sait pas sur quel nombre d'évènements s'ajustent certains paramètres. C'est une erreur récurrente de croire que le nombre d'évènements c'est le nombre de trades. S'il y a 3 phases de hausses et 4 phases de baisses de long terme l'ajustement de paramètres qui tiennent compte d'une tendance de long terme n'ont que 6 évènements : les retournements. Là, le out of sample ne donnera rien même si on fait 2000 scalps pendant l'historique étudié.

Un système complexe façon boite noire qui, quelque part et de façon non explicite, créera une pris en compte de cette tendance de long terme aura forcément des performance sur le passé non reproductible dans le futur. Ici la tendance de long terme n'est qu'un exemple. On peut aussi avoir des dimensions fractales - ou plutôt le gradient de dimension fractale - qui se trouve à un moment dans un TF puis dans un autre TF un moment plus tard. C'est peut être totalement aléatoire. Ou pas. L'illusion de prédictibilité est toujours fournie lorsque par hasard, de longues séries apparaisse dans l'historique de l'actif considéré. Plus le système est complexe, puissant et autonome, plus il aura le potentiel pour... se faire avoir !

C'est pourquoi je préfère un génétique - voir pas de génétique du tout - plutôt que des boites noires qui risquent surtout d'apprendre le bruit du passé.

Bonne continuation !

Re: Création d’un robot parfait

par plataxis » 06 Nov 2015 14:14

Je rejoins Jeff, avec un avis sur la question plutôt d'inspiration scientifique : pas forcément la meilleure approche pour les marchés mais un point logique à ne pas négliger.

Lorsque l'on fait des tests statistiques tout azimut, on finit par trouver des corrélations rigolotes (taille des passants / côté de la rue où ils passent, etc...) qui ne veulent rien dire. Si on les reproduits, la probabilité que ces corrélations soient confirmées est mince, mais pas inexistante. De ce fait, il est raisonnable de penser qu'un test statistique a priori n'a de valeur que s'il est sous-tendu par une hypothèse logique avec ce que l'on sait ou crois savoir : tester la corrélation entre pluviométrie et humidité a du sens, tester la corrélation entre pluviométrie et couleur de la veste du 1er ministre n'en a aucun (du moins dans mon système de pensée... :| )

Pour en revenir au trading, je pense important de limiter les backtests à des comportements logiques de marché : break-out initiant une tendance, rebond initiant un renversement, risque de renversement ou consolidation en cas de sur achat / survente, etc.

Tester sans savoir ce que l'on test façon "boite noire" permet je pense de trouver des martingales amusantes sur le plan intellectuel mais sur lesquelles je ne miserais pas un centime.

Re: Création d’un robot parfait

par TripleFail » 06 Nov 2015 17:26

@Jeff719
Pour éviter toute sur-optimisation comme précisé dans l’un des premiers postes, je développe sur un historique et valide sur un autre, qu’importe la méthode, de plus si les deux sont validés sans modification je test sur d’autres valeurs et en réel.

Pourquoi le c++ (j'utilise aussi le c#), plus rapide, permet de créer un logiciel de A à Z complexe, 1/3 tiers de mes projets ne sont pas réalisable sur une plateforme trop simple comme meta trader 4 ou 5. Un backtest meta-trader avec algo génétique prend des heures de calculs, là où il me faut que quelque minutes sur un programme c++ (8 * 2.2 ghz). Meta trader que soit le 4 ou 5 ne permet pas le multi threading. Sur un logiciel perso en une seule phase de test je peux passer de l’historique d’apprentissage à celui de validation pour voir l’évolution de l’erreur et donc ne pas attendre la fin pour me rendre compte que c’est du flan. Enfin et c’est énorme avec meta-trader 4 et 5 on peut trader pratiquement rien et peut d’informations son accessibles (et je suis gentil).

Concernant les NN, je dispose de 4 ans d’historique monstrueusement détaillés (sur 6000 actifs différents), de 15 ans détaillé et un siècle moins détaillé. Je sais que c’est des boites noires et ça ne me pose aucun souci, on ne peut pas arriver à une performance élevé avec des algorithmes classiques comme monsieur tout le monde. Et comme pour les autres algos il y a 2 historiques un d’apprentissage et un de validation. De plus la tentative de prédiction de cours était je savais vouer à l’échec, mais ça ne coûte rien d’essayer, de plus ça m’a permis de voir que certains sur le net mentais à ce propos et sa va éviter aux gens de faire la même erreur (j’ai même testé en réseau profond à 6 couches). Pour déterminer un cour future on n’aurait juste besoin du dernier cour connu (on verra sa plus tard en détail dans la suite) et par contre de beaucoup d’infos sur ce que font les autres (impossible à avoir avec meta trader justement). Après j’ai pas repris tout ce que vous avez dit pour ne pas spoiler la suite.

@Palataxis justement j’ai plusieurs protocoles pour éviter ça, en plus de l’historique d’apprentissage et celui de validation, j’utilise des formules pour tester si des variables sont prédictives ou juste une simple corrélation. Du coup pour spoiler un peu sur mes derniers joujoux j’ai complètement occulté l’analyse technique, certaines données macro-économiques (dite pourtant avancé). Et ensuite qu’est-ce qu’un comportement logique de marché ? Ce que vous dites ensuite est de l’analyse technique, une science imprécise avec un taux d’erreurs monstrueux, basé uniquement sur les cours, je pense qu’il est possible de faire mieux, certaines données ont un impact monstrueux sur les cours.

Re: Création d’un robot parfait

par Edd » 06 Nov 2015 18:24

Monstrueusement flou tout çà... :ugeek:
à mon avis le Monstre n'est pas près de naître... :musique:

c'est pourtant simple, :?
2 ou 3 actif (6000 lol), :shock:
de bonnes bases en analyse graphique (pas technique) :ugeek: ,
une bonne logique "If Else", :mrgreen:
une stratégie de passage d'ordre bien éguisée, :twisted:
et c'est tout... 8-)

m'enfin bon... :lol:
peut être que la surprise viendra de l'épisode 8 de la saison 4 :zzz:

Articles en relation
mon robot, votre avis
par nememoris » 21 Aoû 2015 17:09 (4 Réponses)
Comprendre le fonctionnement d un robot
Fichier(s) joint(s) par nememoris » 02 Sep 2015 23:26 (7 Réponses)
Geronimo, mon robot scalper...
Fichier(s) joint(s) par Renaud-C » 11 Sep 2015 09:23 (27 Réponses)
Futur robot à l'imparfait
Fichier(s) joint(s) par BillyRayValentine » 22 Mar 2017 16:57 (81 Réponses)
création des chandeliers PRT et multicharts
Fichier(s) joint(s) par mat75 » 13 Sep 2016 09:15 (5 Réponses)
Création d'un EA sans programmation.
par Gil79 » 14 Déc 2016 00:51 (6 Réponses)
Création d'un algorythme de trading auto scalp + backtest
Fichier(s) joint(s) par ticktack » 18 Aoû 2015 07:53 (145 Réponses)
[Recherche développeur] Création algo + deep learning
par Epitaf » 25 Fév 2017 23:33 (97 Réponses)

ProRealTime

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