L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 50

 
mytarmailS:

Voici même ce gamin qui n'a pas froid aux yeux, regardez à partir de la minute 10.

https://www.youtube.com/watch?v=KUdWTnyeBxo&list=PLDCR37g8W9nFO5bPnL91WF28V5L9F-lJL&index=3

Dans la vidéo, il ne s'agit pas d'appliquer exactement une série de Fourier, mais d'utiliser une fonction pour traiter les données afin de les transférer dans un autre espace (transformée à noyau). Il est proposé de convertir les images en palette de couleurs HSL, les sons en histogramme de fréquences. Tout cela va modifier les données, mais elles peuvent facilement être restaurées par la fonction inverse si nécessaire. Cette conversion doit d'une manière ou d'une autre avoir un sens logique, afin que les classes après conversion puissent plus facilement être regroupées les unes par rapport aux autres dans un espace multidimensionnel, pour simplifier la classification. Si, après une transformation, les classes sont encore plus dispersées dans l'espace qu'avant, il n'y a rien de bon dans cette action, ce ne sera que pire.

Il n'est pas nécessaire d'utiliser exactement Fourier, car cela n'est pas conseillé. Alexey, par exemple, suggère de prendre les deltas entre les barres, et non les valeurs brutes. Yury dans libVMR a utilisé différentes transformations mathématiques, c'est intéressant aussi, regardez ses sources sur java. Vous pouvez décomposer les données à l'aide de la méthode des composantes principales et les introduire dans la composante neuronale. SanSanych et moi-même avons partagé quelques articles et exemples à ce sujet. Ce que tu veux faire a des centaines de solutions, Fourier n'en est qu'une.

Ou vous pouvez simplement utiliser la neuronique avec des dizaines de couches, et cela fonctionnera tout seul sur les données brutes, sans aucune transformation du noyau. Mais il y aura beaucoup de problèmes avec la réglementation, la validation croisée, etc.

En outre, aucune de ces méthodes ne permet de se débarrasser du problème des déchets entrants. Déchets d'entrée -> déchets de post-conversion -> déchets de sortie -> déchets de fronttest.

 
mytarmailS:

Une question : est-il possible de mesurer les similitudes entre les fonctions via l'amplitude, la phase et la fréquence ?

C'EST ÇA ! !! Je ne suis pas intéressé par autre chose...

Tout ce qui est écrit sur Fourier est une conséquence de la réponse de CC et n'est pas pertinent pour ma question.

Si les fonctions sont périodiques, vous pouvez le faire. Si elle est non périodique, il y aura des erreurs dans la comparaison des bords (au début - valeur 0 de l'argument, et à la fin de la période - valeur 2*PI de l'argument) des deux fonctions.
 
Dr. Trader:

Dans la vidéo, il ne s'agit pas d'appliquer exactement la série de Fourier, mais de traiter les données dans une fonction quelconque pour les transférer dans un autre espace (transformation à noyau).

Ou vous pouvez simplement utiliser la neuronique avec des dizaines de couches et cela fonctionnera tout seul sur les données brutes sans aucune transformation du noyau.

Les transformations du noyau dans cette vidéo sont sélectionnées manuellement en visualisant les paires de prédicteurs. Autrement dit, vous avez besoin d'un spécialiste humain qui trouvera visuellement les paires appropriées et sélectionnera pour elles les transformations de noyau adéquates.

Dr. Trader:


Ou vous pouvez simplement prendre une neuronique avec des dizaines de couches, elle se débrouillera toute seule sur les données brutes sans aucune transformation du noyau.

La vidéo dit que non seulement ça ne marchera pas, mais que ça deviendra encore plus confus. En outre, les méthodes de propagation inverse des erreurs ne permettent pas, dans la pratique, d'ajuster les poids dans les couches éloignées de la couche de sortie - le signal n'y parvient pas, et s'il y parvient, il est trop faible.


Dr. Trader:


Yuri a utilisé dans libVMR différentes transformations mathématiques, c'est intéressant aussi, jetez un coup d'oeil à son code source en java


Non pas diverses, mais compilées algorithmiquement par la méthode de factorisation de groupe d'arguments (GMDH) de A.G. Ivakhnenko. Si vous prenez au hasard, c'est-à-dire sans aucune structure, vous obtiendrez des conneries.


 
Yury Reshetov:
Si les fonctions sont périodiques, vous pouvez le faire. Si elle n'est pas périodique, il y aura des erreurs lors de la comparaison des bords (au début - valeur 0 de l'argument, et à la fin de la période - valeur 2*PI de l'argument) de deux fonctions.

Je vois, il y aura toujours une distorsion aux extrémités et plus on se rapproche du bord, plus c'est solide, désolé, ça ne colle pas.....

Dr. Trader.

comment votre réseau neuronal est-il formé ?

 

J'ai trouvé ça sur un site web, mais ça ne fonctionne plus pour une raison quelconque.

Peut-être que quelqu'un serait intéressé :

".... En suivant vos recommandations j'ai construit plusieurs modèles de robots, les robots apprennent et reconnaissent certaines choses avec de nouvelles données, mais les résultats, hélas, sont encore loin de ce que j'attendais.

.... J'ai d'abord appliqué l'approximation polynomiale-harmonique aux filtres passe-bas pour obtenir un premier ensemble de caractéristiques secondaires, un filtre pour la tendance à court terme et un second pour la tendance à long terme. Les fréquences de prise, les amplitudes cos et sin et les coefficients P sont des caractéristiques secondaires. ... Le réseau a appris, mais n'a pas généralisé.

...L'étape suivante était un nouveau modèle : nous appliquons un filtre passe-bas (j'ai utilisé un filtre Butterworth de 2ème ordre) au prix de clôture, nous appliquons une approximation polynomiale-harmonique, nous transformons A*cos(wx)+B*sin(wx) en la forme M*sin(wx+f) et nous prenons M et f comme attributs secondaires.

.... Et avec ce modèle, j'ai réussi à construire un réseau qui avait de très bonnes propriétés de généralisation : il reconnaissait correctement presque toutes les nouvelles données.

L'approximation polynomiale-harmonique prend du temps, j'ai donc décidé de faire un autre modèle : un ensemble de filtres passe-bande avec une distribution de fréquence égale, les appliquer au filtre LF des prix de clôture et ensuite leur appliquer une transformée de Hilbert. J'ai également réussi à créer un réseau pour le modèle de marché artificiel qui a reconnu avec succès les nouvelles données.

Ensuite, j'ai appliqué ce modèle à des devis réels :

- nous filtrons le prix de clôture avec un filtre LF adaptatif .

- construire un ensemble de filtres passe-bande pour détecter les ondes du marché.

- appliquer la transformation de Hilbert.

- premier ensemble d'attributs secondaires : valeurs du filtre passe-bande, valeurs instantanées de l'amplitude et de la phase.

- nous construisons un filtre passe-bas à partir de prix proches.

- le deuxième ensemble d'attributs secondaires - l'écart relatif des prix de clôture et des prix bas de la dernière bougie, les niveaux de soutien et de résistance par rapport à la valeur du filtre LF, le volume relatif dans une barre (par rapport à la valeur moyenne).

- créer un échantillon de formation.

Le résultat est le suivant : le réseau est entraîné, mais fonctionne mal sur les nouvelles données. Quelque part, il prédit les minima avec précision, et quelque part, il oublie ce qu'il faut faire. Par rapport à ce que je faisais auparavant, le résultat semble être d'un niveau qualitativement différent. Oui. Une dernière chose à préciser, j'ai suivi les règles empiriques : nombre de caractéristiques du réseau d'entrée (caractéristiques secondaires dans ce cas) < taille de l'échantillon d'entraînement/10, nombre de neurones dans une couche cachée ne dépassant pas le nombre d'entrées du réseau...". J'espère que ces extraits de la lettre vous donneront une idée des approches possibles de la recherche de caractéristiques.

 
mytarmailS:

Je vois, il y aura toujours une distorsion aux extrémités et plus on est proche du bord, plus c'est solide, dommage que ça ne tienne pas.....

La question de savoir si elle s'adaptera ou non est très triviale. D'abord, décomposer la fonction en série de Fourier, puis la restituer à partir des séries par transformation inverse. Et comparer la fonction initiale avant la décomposition et la fonction restaurée. Si la fonction reconstruite est fondamentalement différente de la fonction d'origine, il est évident que cette méthode ne fonctionnera pas.

Pour les fonctions non périodiques, il est recommandé d'utiliser des transformées en ondelettes. Je ne l'ai pas essayé moi-même. Mais à en juger par la façon dont une image est d'abord compressée par les ondelettes puis restaurée avec quelques distorsions, mais pas visuellement perceptibles par rapport aux distorsions des transformées de Fourier, il est évident que les ondelettes sont plus adaptées aux séries non périodiques que les transformées de Fourier. Comme je n'ai aucune expérience pratique de l'application des ondelettes à des BP cotées, je ne peux pas partager ici des informations utiles sur les ondelettes les plus adéquates. Et il y a un chariot et une petite charrette d'eux.

mytarmailS:

Comment se porte votre réseau neuronal ?

Cela dépend de la nature de la tâche et des données ? Si vous lui donnez un échantillon de nombres aléatoires, il va marmonner : "Garbage in, Garbage out". Et si vous lui donnez un échantillon de prédicteurs significatifs, il produira des valeurs de généralisation. L'entraînement ne prend pas beaucoup de temps, du moins pour un échantillon d'une douzaine de prédicteurs et quelques milliers d'exemples.
 
Yury Reshetov:

La question de savoir si cela fonctionnera ou non est tout à fait triviale. D'abord, décomposer la fonction en une série de Fourier, puis la reconstruire à partir de la série résultante par transformation inverse. Et comparer la fonction originale avant la décomposition et la fonction reconstruite. Si la fonction reconstruite est fondamentalement différente de la fonction d'origine, il est évident que cette méthode ne fonctionnera pas.

Je vais probablement le faire.... Je vais d'abord vous dire ce que je fais en général et ce que je dois résoudre, puis vous me ferez part de vos suggestions à ce sujet, car je pense que je vous embrouille tous...
 

Un peu de préhistoire....

J'ai commencé par chercher des modèles dans l'histoire en utilisant le principe suivant :

1) nous avons le prix actuel - soit les 20 dernières bougies

2) nous allons dans l'histoire et cherchons une situation similaire dans le passé (la proximité a été vérifiée avec la corrélation de Pearson et Euclide)

3) lorsque nous trouvons une telle situation, nous regardons comment elle s'est terminée - par une croissance ou un déclin.

4) lorsque nous avons trouvé un grand nombre de ces analogues, il est possible de collecter les statistiques avec une certaine prévalence, par exemple nous avons trouvé 10 analogues.

8 d'entre eux se sont terminés en croissance et 2 - en baisse, voici une prédiction de ce qui va arriver au prix :)

C'est-à-dire que j'ai fait quelque chose de similaire à la "méthode de compilation des analogues - prévision sans modèle" d'Ivakhnenok,mais ma méthode est beaucoup plus primitive.

Eh bien, cette approche s'est avérée ne pas fonctionner pour un certain nombre de raisons

1) plus il y a de chandeliers dans le vecteur requis, moins on peut trouver d'analogues dans l'histoire, en pratique si vous prenez tous les prix OHLC et la précision de la corrélation de Pearson >0,93, un vecteur de 3 chandeliers sera la limite, alors qu'une prévision normale a besoin d'un vecteur beaucoup plus grand.

2) En pratique, il n'y a pratiquement pas de situations de prix identiques sur le marché.....

3) Il s'avère que nous ne pouvons pas augmenter le vecteur, car nous perdrions beaucoup de précision. Mais même si nous le pouvions, nous ne trouverions pas d'analogue dans un vecteur plus grand, car il n'existe pas de situations identiques.

La solution a été trouvée.....

 
Yury Reshetov:

Cela dépend de quelles tâches et de quelles données ? Si tu lui glisses un échantillon de nombres aléatoires, il marmonne : "Garbage in, Garbage out". Et si vous lui donnez un échantillon de prédicteurs significatifs, il produit des valeurs de généralisation. L'entraînement ne prend pas beaucoup de temps, du moins pour un échantillon d'une douzaine de prédicteurs et quelques milliers d'exemples.

Salutations !!!! J'utilise LibVMR mais il semble qu'il s'agisse d'une ancienne version, car l'erreur "Bad Data" persiste. Je comprends qu'il existe une nouvelle version. Où puis-je le télécharger ? Si c'est possible ?
 
mytarmailS:

Un peu de préhistoire....

J'ai commencé par chercher des modèles dans l'histoire en utilisant le principe suivant :

1) nous avons le prix actuel - soit les 20 dernières bougies

2) Nous allons dans l'histoire en boucle et cherchons une situation similaire dans le passé (la proximité a été mesurée par la corrélation de Pearson et Euclide)

Pas tout à fait clair ? Prenez-vous les prix comme OHLC pour les modèles ou une sorte de transformation de ceux-ci ?

Le fait est que si vous prenez l'OHLC tel qu'il est, un modèle similaire mais 1 000 pips plus haut ou plus bas que celui qui est comparé sera plus différent en distance euclidienne qu'un modèle complètement dissemblable mais 10 pips plus haut ou plus bas que celui qui est comparé. Et la différence sera de deux ordres de grandeur, donc l'erreur de comparaison sera également de deux ordres de grandeur.

Raison: