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

 
Mihail Marchukajtes:
Salutations !!!! J'utilise LibVMR mais il semble que ce soit une ancienne version, car l'erreur "Bad Data" apparaît. Je comprends qu'il existe une nouvelle version. Où puis-je le télécharger ? Si c'est possible ?

Les nouveaux produits et téléchargements sont désormais distribués par le biais du dépôt BitBucket à l'adresse suivante : https://bitbucket.org/jprediction/jprediction/downloads.

Le nom du projet a également changé de libVMR à jPrediction.

 
Yury Reshetov:

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

Le fait est que si nous prenons l'OHLC tel qu'il est, un modèle similaire à 1000 points plus haut ou plus bas que celui qui est comparé sera plus différent par la distance euclidienne qu'un modèle totalement différent à 10 points plus haut ou plus bas que celui qui est comparé. Et la différence sera de deux ordres de grandeur et donc l'erreur de comparaison sera également de deux ordres de grandeur.

Lorsque j'ai mesuré avec Euclid, tous les vecteurs ont été normalisés et censurés.
 
mytarmailS:
Lorsque j'ai mesuré avec Euclid, tous les vecteurs ont été normalisés et censurés.
Comment faites-vous ?
 
mytarmailS:

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

Si l'on applique l'analyse spectrale au vecteur actuel (prix actuels) et qu'on le décompose en composantes plus simples, il est plus facile de trouver ces composantes dans l'histoire en raison de leur structure simple.

s

price <- cumsum(rnorm(200))+1000

library(Rssa)
s <- ssa(price)
r <- reconstruct(s)

par(mfrow=c(1,2))
plot(price,t="l")
plot(r$F2,t="l")
for(i in 3:50) {lines(r[[i]],col=i)}

J'ai utilisé la méthode "chenille" ou "ssa"http://www.milanor.net/blog/wp-content/uploads/2014/07/SingularSpectrumAnalysisWithRssa.pdf pour la décomposition.

Nous cherchons des analogues dans l'histoire et voyons comment ils finissent, mais nous ne cherchons pas les analogues de prix, mais chacune des composantes spectrales individuelles, puis nous les connectons et obtenons une prévision simple.

À en juger par les premiers tests, le thème est assez prometteur si l'on prévoit chacun de ses composants séparément. La prévision est souvent correcte mais rarement non biaisée...

ss

La couleur noire indique une des composantes actuelles, la couleur bleue montre l'analogue de la composante trouvée dans l'historique après la ligne verticale noire est une nouvelle donnée inconnue de l'algorithme - en fait, la prévision - comme vous pouvez le voir très efficacement

Mais comme vous le voyez il y a toujours un biais dans la prédiction, et pas toujours un bon naturellement, la proximité entre les analogues en cherchant l'ancienne voie par la corrélation, je comprends que c'est une des voies les plus inadaptées, donc j'ai voulu remplacer l'algorithme qui chercherait les similitudes dans l'amplitude, la phase, la fréquence. Maintenant tu comprends ce que je veux dire quand je parle de Fourier ?

 

Dr. Trader

comment se porte votre réseau neuronal ? formé ?

RNeat ? Non, la formation est très lente, l'aptitude du modèle est maintenant de 0,018, augmentant d'un centième par jour. La précision sur les données d'entraînement et de validation est maintenant de 0,52, ce qui est très faible, mais au moins c'est du côté positif sans ré-entraînement.
 
Yury Reshetov:
Comment faites-vous ?

Eh bien, c'est juste qu'avant de comparer les deux vecteurs, je les ai mis à l'échelle avec la fonction " scale ".

scale(x = données , center = VRAI, scale = VRAI )

 
Yury Reshetov:
Comment ?
Il est intéressant de noter que j'ai téléchargé la version 6.0 parce que la version 5.0 n'enregistre pas et ne crée pas de fichier texte, il n'est donc pas clair pourquoi dans la formation une erreur de valeurs, mais dans le fichier texte les valeurs sont complètement différentes ???
 
Mihail Marchukajtes:
Je me demande pourquoi j'ai téléchargé la version 6.0 car la version 5.0 ne sauvegarde pas et ne crée pas de fichier texte, donc on ne comprend pas pourquoi pendant la formation les valeurs d'une erreur et dans le fichier texte les valeurs sont complètement différentes ???
Dans le fichier texte, les caractéristiques pour le classifieur binaire et après entraînement pour le ternaire. Il y a deux grilles et si leurs lectures coïncident, on obtient une réponse affirmative, si elles diffèrent, on obtient un tiret. Les classificateurs binaires ne donnent toujours que des réponses affirmatives, indépendamment du fait que les données des modèles similaires dans l'échantillon soient similaires ou non. Les classificateurs ternaires échouent parfois à donner une réponse affirmative si l'échantillon d'entraînement ne contenait pas de motifs similaires.
 
Dr. Trader:
RNeat ? Non, l'entraînement est très lent, la fitness qui définit le modèle est maintenant de 0.018, augmentant d'un centième par jour. La précision sur les données de formation et de validation est maintenant de 0,52, ce qui est très faible, mais au moins c'est dans le positif et sans recyclage.
Ooh 52 est mieux que 50 , comme on peut s'en souvenir la dernière fois c'était 0,017 donc un centième peut augmenter la précision de 2% ) , je pense que si le réseau est nécessaire il serait mieux de le réécrire pour le SI , tenez-moi au courant , je suis très intéressé ....
 
mytarmailS:
Ooh 52 est déjà mieux que 50 , si je me souviens la dernière fois il était de 0,017 donc un centième augmente la précision de prédiction de 2% ) , Je pense que si le réseau est digne d'attention, il est préférable de le réécrire sur SI , tenez-moi au courant, je suis extrêmement intéressé ....

La fitness peut augmenter simplement parce que le modèle a amélioré sa topologie et supprimé quelques neurones, pour une même précision.
D'après ce que j'ai compris des commentaires dans le code - c'est un portage de Lua. Et Lua est aussi un portage, car l'original était déjà en c++: http://nn.cs.utexas.edu?neat.
Le port à port est malheureux, beaucoup d'actions inutiles, il serait mieux que l'auteur de RNeat prenne le code C++ comme base, et applique les paquets génétiques R existants pour faire évoluer le réseau.

Raison: