PDA

Afficher la version compl?te : codifiion du march?Algorithmes g?n?tiques



ZasalaySSazz
28/07/2005, 20h30
EDIT - ce message date d'il y a deux ans, j'ai ajout? une mise ? jour ? la fin du fil ...



Je travaille tard ce soir et j'ai du temps libre entre les t?ches. Je suis s?r que mon coll?gue va aimer ?a.
https://www.sundytrading.com/attachments/forex1508558441.png

Comme j'ai commenc? ? apprendre sur le commerce, un train logique de d?clarations de type sialors et des hypoth?ses s'est form?, avec ce qui semble ?tre une conclusion naturelle, je suis s?r que beaucoup d'autres ont atteint.

(1) Si le march? est totalement impr?visible, 50/50 ? long terme, alors m?me pas le meilleur syst?me de gestion de l'argent pr?vaudra finalement.

Contrairement ? ce que certains joueurs de maths ont conclu, je ne crois pas qu'il y ait moyen de gagner syst?matiquement dans un jeu d'expectative n?gative (la coupe du courtier a figur?). Tout ce que vous pouvez faire IMO est de r?organiser vos gains et vos pertes en diverses structures agglutin?es.

Je suppose que le march? n'est pas totalement impr?visible, car il semble qu'il y ait des gens honn?tes qui r?usnt ? faire des profits de fa?on constante. Ce ne sont pas les grands joueurs qui ne comptent pas tant sur le prix que sur la ?gie, mais sur les investisseurs r?guliers qui jouent sur les graphiques et les nouvelles.

(2) Si le march? a un certain degr? de pr?visibilit?, il peut ?tre codifi?.

Les humains sont remarquables ? la reconnaissance des formes, et peut-?tre que la capacit? de reconna?tre les conditions gagnantes est bien au-del? des r?gles commerciales simplistes qui forment les diff?rents syst?mes. Apr?s tout, un humain peut reconna?tre un visage presque instantan?ment dans presque toutes les conditions alors que les ordinateurs puissants ont besoin d'un bon ?clairage, de bons angles et du dernier logiciel pour faire un travail d?cent. Cependant, difficile n'est pas impossible, et les ordinateurs ont d?montr? une capacit? pendant de nombreuses ann?es ? trouver des mod?les dans les donn?es que les humains sont inconscients.

Je suppose qu'il n'est pas impossible de codifier la pr?visibilit? du march?, si elle existe, en raison de l'existence pr?sum?e de n?gociants utilisant des r?gles assez simples pour g?n?rer des b?n?fices r?guliers.

(3) Si l'?motion humaine et la plogie sont les ennemis de la bonne gestion de l'argent et de l'ex?cution du syst?me, alors les ?liminer de la prise de d?cision devrait am?liorer la coh?rence et la rentabilit? ? long terme.

J'ai lu des articles et des articles sur la plogie du commerce, et la peur et la cupidit? semblent ?tre de s?rieux obstacles. Non seulement cela, mais une simple erreur humaine peut emp?cher l'ex?cution solide de r?gles de n?gociation par ailleurs saines (comme un joueur de blackjack faisant des erreurs de ?gie de base). Cumulativement, un syst?me qui peut avoir sur papier une attente positive pourrait devenir n?gatif en raison d'une erreur et d'un ?tat d'esprit, ou la gestion de l'argent pourrait vider un compte avant qu'il ait une chance de r?ussir.

Je suppose que si le march? est pr?visible et peut ?tre codifi?, l'ex?cution m?canique de ce code donnerait les r?sultats les plus favorables. Les ?v?nements ext?rieurs fondamentaux ... les tremblements de terre, les d?clarations de b?n?fices, les guerres, les gr?ves de petits pays, etc. sont en th?orie de simples variables qui peuvent ?tre codifi?es, mais leur raret? et leur variabilit? pourraient rendre cela difficile ou impossible. beaucoup de cas. M?me ainsi, puisqu'il semble y avoir des r?gles syst?matiques qui g?n?rent des rendements positifs pendant les p?riodes de transactions relativement sans nouvelles, une solution simple est d'arr?ter d'utiliser le trading m?canis? pendant ces p?riodes et d'y revenir lorsque le march? est stabilis?. Une solution plus robuste consiste ? ajouter des ?v?nements fr?quents aux variables de r?gle, telles que les d?clarations de b?n?fices et les pr?visions de b?n?fices, les changements de taux d'int?r?t, etc. Comme ces ?v?nements surviennent plusieurs fois dans les donn?es de march? utilis?es pour le backtesting, g?rer ces ?v?nements de routine.



Maintenant, ? la randonn?e int?ressante. Quelle est la forme id?ale de mise en ??uvre pour un syst?me commercial? Pas l'id?al pratique, qui inclurait la possibilit? de se connecter r?ellement aux courtiers et d'ex?cuter des m?tiers, mais plut?t la plate-forme th?orique id?ale sur laquelle d?velopper des r?gles? Ici, je fais quelques hypoth?ses de plus. Premi?rement, vous voudriez que la r?gle change au fur et ? mesure que le comportement du march? change au fil du temps. Deuxi?mement, vous voudriez que le syst?me g?n?re toutes les d?cisions, y compris les ?v?nements d'entr?e et de sortie et la taille de la position.

Il semblerait que les algorithmes g?n?tiques soient une solution capable de r?pondre ? toutes les exigences. Ma capacit? de programmation se limite ? des scripts simplistes, et m?me l?, c'est la cl?, mais j'ai r?fl?chi ? quoi ressemblerait la structure d'un tel syst?me GA. Je vais prendre un coup ci-dessous ...




Il y aurait trois parties principales: (1) un programme superviseur qui lit les donn?es, accepte l'entr?e de l'utilisateur, ex?cute les sous-routines, ?value la forme physique des organismes, modifie les organismes et ex?cute les ?v?nements commerciaux bas?s sur l'organisme gagnant; (3) un fichier de configuration qui contr?le des param?tres tels que le taux de mutation, les types de mutations, les ?l?ments constitutifs de l'organisme, la complexit? maximale des organismes, le nombre d'enfants n?s chaque g?n?ration, ?tre pris, pond?ration pour l'?valuation de la condition physique, etc.

Le programme de superviseur devrait ?tre capable de fonctionner ? la fois en temps r?el et sur des donn?es historiques. c'est-?-dire qu'il doit accepter l'entr?e de l'utilisateur pour inclure les donn?es actuelles dans la mise ? jour des organismes ou seulement courir avec le gagnant actuel. Il devrait ?galement avoir la possibilit? d'utiliser des comptes et des op?rations de monnaie virtuelle internes pour ?valuer la conformit? lors du backtesting de donn?es historiques.

La principale difficult? est le crit?re de condition physique. Cela pourrait ?tre jug? de plusieurs fa?ons: pr?diction que le march? a augment? ou baiss? ? un moment donn?, pr?diction d'un swing sur X, pr?diction de la continuation d'une tene actuelle, etc. Le probl?me, si je comprends bien du tout trading, c'est que savoir que le march? est sur le point de monter ou de descendre ne garantit pas la rentabilit? si vous ne pouvez pas g?n?rer de bons points d'entr?e et de sortie. Il existe une solution de fitness simple et naturelle qui englobe les points d'entr?e et de sortie: la rentabilit?. L'organisme qui est le plus en forme est celui qui g?n?re le plus de profits, mais cela pourrait ?tre accompli. Cela soul?ve la question du d?lai pour juger de la rentabilit? au cours de ... la derni?re journ?e, semaine ou mois pour les syst?mes de daytrading? L'ann?e pass?e? La vie de l'organisme? Cette question pourrait probablement ?tre trait?e par l'inclusion de limites de rabattement dans les crit?res d'aptitude. Techniquement, on pourrait vouloir l'organisme qui pourrait produire le plus de profits d'ici la fin de l'ann?e, mais pratiquement si cela a ?puis? un compte en attendant c'est inutile.

Les organismes sous-routines seraient int?ressants. La petite lecture que j'ai faite sur GA pour la pr?diction ?conomique dans le pass? les a utilis?s pour trouver des param?tres optimaux pour une fonction fixe. c'est-?-dire affiner les variables dans une ?quation ou un ensemble d'?quations d?j? ?tablies comme fonctionnant. Cependant, l'?volution a d?montr? une capacit? ? produire des organismes capables de capacit?s de reconnaissance de formes (oeil humain, par exemple), et je ne vois pas pourquoi une AG ciblant les march?s ?conomiques ne devrait pas avoir au moins une chance raisonnable de trouver des mod?les. exister.

Puisque les syst?mes ?tablis semblent ?tre bas?s sur un ensemble de r?gles conditionnelles (IF a gt; b, ET SI un gt; avg (b, c, d) ... ALORS ...), je pense qu'il serait sage de retenir cette caract?ristique de la pr?diction du march?. Je ne crois pas qu'un ensemble de fonctions par morceaux et d'?nonc?s conditionnels puisse ?tre r?sum? en une grande ?quation qui dit que IF xyz ^ abcdef-ghi = lmnop THEN trade.
https://www.sundytrading.com/attachments/forex1508558442.pngLes actions qu'un organisme pourrait prendre dans un march? simple sont l'achat, la vente et la taille de la position pour chacun. Dans les march?s bidirectionnels, vous avez des sc?narios courtlong, vous avez donc, du point de vue fonctionnel, entrez short, entrez long, exit et position size. Donc la structure de base d'un sous-programme d'organisme serait probablement quatre ensembles de conditionnels, chacun ayant une action lorsque les conditions sont remplies (entrer court, entrer long, sortir court et sortir long), et une routine pour calculer la taille de chaque action . La routine de position doit se tourner vers le programme du superviseur pour obtenir des informations sur la taille du compte courant, l'argent d?j? en jeu et les limites d'utilisation ? utiliser en plus des donn?es du march?. L'argent en jeu pourrait ?tre diff?renci? en argent total en jeu sur le march? et en argent d?j? en jeu dans ce march? sp?cifique (conduisant ? une taille de position croissante ou d?croissante). Cette routine de position devrait ?tre autoris?e ? produire des r?sultats diff?rents pour les actions courteslongues et d'entr?esortie, de sorte qu'elle pourrait aussi bien faire partie de chaque d?claration conditionnelle - un calcul se greffant sur les conditions du CI.

Le fichier de configuration est assez explicite mais l'impl?menter devrait ?tre pens?. Le premier obstacle est le contr?le des types de variables que les organismes sont aliment?s, le second est la d?termination des types de manipulations de donn?es que les organismes peuvent effectuer, et le troisi?me est la d?termination du taux de mutation.

Il y a d?j? beaucoup de calculs effectu?s sur les donn?es du march? ainsi que des marqueurs que les sous-programmes de l'organisme GA devraient ?tre aliment?s de force, tels que les hauts, les bas, les ouvertures, les fermetures, les moyennes ou les calculs de la moyenne pr?c?dente. Ou vous pouvez laisser l'algorithme fonctionner sur des donn?es brutes sans le forcer ? regarder des heures sp?cifiques (ouverture, fermeture) ou des fonctions (maximums, minimums, moyennes, etc.). Je pense que la meilleure approche pour la diversit? de GA est d'utiliser un m?lange ... certains organismes n'utilisent que les indices actuels du march?, certains utilisent des donn?es de prix et de volume brutes, d'autres utilisent un m?lange. Les param?tres de configuration peuvent garantir qu'un certain pourcentage de chaque g?n?ration reste toujours pur dans chaque direction, si d?sir?.

La mutation est un autre probl?me compliqu?. Param?tres de configuration qui contr?lent combien d'organismes sont conserv?s de chaque g?n?ration (% d'interpr?tes sup?rieurs etou tous dans une certaine ?tendue du gagnant), combien de copies mut?es sont faites de chacun, et le degr? de mutation est assez simple ? d?crire. Les types de mutation autoris?s sont plus impliqu?s. Si chaque ligne d'une instruction conditionnelle implique une comparaison alg?brique, la question est de savoir quelle forme les expressions alg?briques sont-elles autoris?es ? prendre? Je pense qu'il est ?vident que chaque ligne conditionnelle devrait avoir acc?s ? toutes les variables disponibles, donc la question est limit?e aux fonctions qui sont disponibles pour les organismes ? utiliser. Les fonctions standard seraient l'addition et la multipliion avec la capacit? d'inverser et de nier les termes pour produire la soustraction et la division. Est-ce que le b?timent matriciel et les op?rations matricielles peuvent ?tre autoris?s? Probablement oui. Qu'en est-il des journaux, des exposants, des d?riv?s, des int?grales, etc.? Faut-il permettre aux organismes de d?couvrir le calcul (approximation des d?riv?es ? diff?rence finie, etc.) ou ces outils math?matiques devraient-ils ?tre cod?s explicitement? Si la plate-forme de codage peut le g?rer, je pense que plus il y aura d'op?rations disponibles, plus la diversit? sera grande et plus les chances de trouver de bonnes r?gles seront grandes.

Une fois que ces ?l?ments sont en place, vous devez d?finir les types de mutations autoris?s. Le croisement de programmes r?ussis est une bonne id?e, tout comme l'ajout de mutations brutes. Mais combien de niveaux? Le premier niveau consiste ? permuter les ensembles de conditions (entrer court, entrer long, ect.) ?? la fois dans un organisme et entre organismes. Le deuxi?me niveau consiste ? permuter, ajouter etou supprimer des lignes individuelles dans un ensemble conditionnel, parmi des ensembles conditionnels au sein d'un organisme, et entre des organismes. Le troisi?me niveau serait la mutation d'une ligne individuelle en ?changeant des expressions d'autres lignes. Quatri?mement, une ligne serait mut?e en ?changeant des variables dans une expression. Cinqui?me serait la mutation d'une ligne en ?changeant, en ajoutant etou en supprimant des fonctions et des variables. Des r?glages seraient n?cessaires pour contr?ler le nombre d'enfants n?s ? chaque niveau, et quel degr? d'?changeajoutsuppression est autoris? ? chaque niveau (combien de nouvelles lignes peuvent ?tre ajout?es ? une condition d?finie en une g?n?ration ... combien de nouvelles variables ou fonctions ajout?es ? une ligne ... etc.). Les param?tres conservateurs peuvent ne produire que quelques enfants ? chaque niveau contenant chacun un seul changement, les param?tres agressifs peuvent produire jusqu'? une centaine d'enfants (ou plus) ? chaque niveau couvrant la propagation d'un changement ? une seule chose inchang?e. Et bien s?r des copies identiques de tous les survivants de toute g?n?ration.

Le fichier de configuration devrait ?galement traiter des limites strictes sur la complexit? des organismes (on ne peut pas ajouter de fonctions ou de lignes d?passant une certaine taille ...), des limites de risque permises, et peut-?tre des variables pour orienter certains organismes vers une p?riode donn?e. ? long terme swing trading). Vous devrez ?galement contr?ler la pond?ration de la forme physique. Par exemple, si l'objectif d'un programme est de maximiser les profits et de r?duire au maximum le pr?l?vement, vous devez classer la priorit? relative de chacun. En outre, puisque chaque organisme survivant a grandi gr?ce au succ?s dans les g?n?rations pr?c?dentes, vous devez pond?rer l'importance du succ?s et de l'?chec en fonction du temps (les nouveaux succ?s ?tant les plus importants, bien s?r, mais combien? fera de mauvais m?tiers parfois et vous ne voulez pas tuer un gagnant prouv?). Ces r?gles pourraient devenir assez ?labor?es, avec par exemple des exemptions d'?limination pour tout gagnant d'une seule g?n?ration pour les g?n?rations X suivantes, l'exemption de n'importe quel top 5% pour les prochaines g?n?rations Y, et la prise en compte de la moiti? restante bas?e sur Il est int?ressant de noter que puisque les organismes s'adaptent aux changements de comportement dans les donn?es, il serait plus efficace de commencer le backtesting avec les donn?es les plus anciennes disponibles et les plus r?centes. laissez les organismes le faire fonctionner jusqu'? nos jours.



?? quoi ressemblerait un organisme? Eh bien, prenez l'une des r?gles de pour un exemple grossier, double barre haute plus proche inf?rieure. Dans la section de condition appropri?e (court, non?
https://www.sundytrading.com/attachments/forex1508558442.png) vous pourriez voir quelque chose comme:

SI:
De 1h00 ? 2h00 de haut - de midi ? 1h00 de haut = lt; 2 pips
ET SI:
1:00 fermer - 2:00 fermer = gt; XX pips
ET SI:
.............
ET SI:
................
PUIS:
entrer


Vous pouvez voir m?me dans cet exemple de psuedocode beaucoup de place pour des mutations simples. La plupart vont ?chouer, quelques-uns pourraient faire aussi bien ou mieux que vos r?gles initiales.

Le temps qu'il faut pour produire une g?n?ration d?pend du nombre d'organismes, de la complexit? qu'ils sont autoris?s ? avoir, de l'efficacit? du code et, bien s?r, de la puissance de calcul disponible. Ce qui est vraiment int?ressant, c'est la possibilit? que le programme GA re?oive des donn?es en temps r?el et prenne des d?cisions commerciales, il continue ? multiplier les g?n?rations et ? s'am?liorer. C'est exactement ce que veulent les traders techniques ... des r?gles de syst?me qui ne s'?teignent pas mais qui s'adaptent aux changements du march? et restent rentables. L'id?e serait que tous les organismes aient acc?s ? des donn?es en temps r?el et simulent des transactions au cours de chaque g?n?ration, le programme superviseur gardant une trace de la fa?on dont chacun d'eux a effectu? de mani?re cumulative, qu'ils soient actifs ou non. Alors que tous les organismes pensent qu'ils font des m?tiers, et op?rent sur les m?mes donn?es, seul l'?lu ferait face ? la r?alit? si le syst?me ?tait en ligne. Une d?cision devrait ?tre prise quant ? savoir si les r?gles utilis?es pour d?terminer les survivants (et donc produire un classement de la forme physique) sont les m?mes que celles utilis?es pour d?cider quel survivant unique prend les vraies d?cisions commerciales (si le syst?me est effectivement utilis?) vivre) pour la g?n?ration actuelle. Voulez-vous votre dernier gagnant pur, qui a une lign?e d'au moins de bons joueurs, ou voulez-vous votre temps en moyenne et av?r? fabricant d'argent ? la barre? Je pense que cette question pourrait ?tre r?solue en simulant la croissance de la colonie sur de longues p?riodes de donn?es avec diverses r?gles de survie et de commerce roi.

Un probl?me persistant est de savoir comment g?rer les ?v?nements mondiaux. Les pr?visions de b?n?fices et les rapports sur les b?n?fices, les taux d'int?r?t, l'inflation, etc. pourraient ?tre saisis dans le fichier de configuration chaque jour en tant que variables suppl?mentaires que les organismes peuvent utiliser. Peut-?tre pourrait-on conserver un stock d'organismes de situation particuli?re qui s'est av?r? particuli?rement adapt? ? des circonstances particuli?res, comme un crash, une grande astrophe naturelle, une guerre, etc. Le niveau de complexit? potentiel de la colonie une fois ?tablie est limit? seulement par l'utilisateur .

Une fois en place, la porte s'ouvre ? des questions encore plus intrigantes. Qu'en est-il de deux organismes qui sont en concurrence les uns avec les autres? Plut?t que de simuler le contr?le total des ressources du compte pour un march? donn? et que les plus aptes aient le contr?le, que se passerait-il si deux ou plusieurs des plus en forme devaient se battre pour r?duire le risque autoris?? Est-ce qu'ils d?velopperaient des ?gies pour contr?ler ce segment de march? qui ?taient plus nuisibles que b?n?fiques? Certains groupes d'organismes travaillant ensemble sur diff?rents march?s seraient-ils plus rentables cumulativement que la somme de chaque op?ration inconsciente des autres acteurs? C'est la diff?rence entre le calcul de la taille de la position en tenant compte de ce que les autres organismes du march? font ? ce moment ou en regardant seulement les param?tres de configuration. Dur max pour chaque transaction, ou flotter en fonction de l'argent d?j? en jeu?



Assez de pens?es pour ce soir. L'ordinateur crache juste les r?sultats ... de retour au travail.