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

 
Dr. Trader:
Continuez à ne pas vous fier à l'importance lorsque vous l'utilisez pour le forex. L'Iris est une donnée très simple, il existe des modèles directs entre les données disponibles et les classes. Il suffit à la RF de trouver un ensemble minimal de prédicteurs sur lesquels les classes d'iris peuvent être définies et le tour est joué.

Il me semble que cela ne fonctionne pas pour le marché uniquement parce que les prédicteurs sont pourris, s'il y avait des prédicteurs normaux, cela fonctionnerait comme avec l'iris avec un taux d'erreur de 95 %.

 

Avec les iris, c'est simple : si un pétale a une longueur comprise entre untel et untel, c'est la classe 1, et s'il a une largeur comprise entre untel et untel, c'est la classe 2, etc. Ce que fait la RF, c'est qu'elle trouve les intervalles de valeurs prédictives qui correspondent le mieux aux valeurs cibles.

Je n'ai même pas besoin de forêt pour cette tâche, un arbre suffit pour une précision de 90% :

 Rule number: 2 [Species=setosa cover=33 (31%) prob=1.00]
   Petal.Length< 2.6

 Rule number: 7 [Species=virginica cover=35 (33%) prob=0.00]
   Petal.Length>=2.6
   Petal.Length>=4.85

 Rule number: 6 [Species=versicolor cover=37 (35%) prob=0.00]
   Petal.Length>=2.6
   Petal.Length< 4.85

Autrement dit, si une certaine classe correspond à un certain intervalle de valeurs prédicteurs ou à leurs combinaisons, et que ces intervalles ne se chevauchent pas, alors l'arbre ou la forêt résoudra tout à 100%.

Les dépendances sur le Forex sont beaucoup plus compliquées, et une forêt a besoin de dizaines de prédicteurs pour décrire les valeurs cibles. La forêt trouvera sûrement de tels intervalles de prédicteurs et leurs combinaisons qui décrivent les valeurs cibles, mais il s'agira simplement de combinaisons sélectionnées, sans aucune logique ni analyse. Ce que la forêt va prendre pour décider - le bruit, ou un prédicteur vraiment important - est une question de chance. La forêt pour le forex ne fonctionnera correctement que si elle élimine à l'avance les prédicteurs inappropriés et ne laisse que ceux qui sont nécessaires à l'apprentissage. Le problème est que les prédicteurs nécessaires doivent être identifiés ou trouvés d'une manière ou d'une autre, et la forêt n'est d'aucune aide à cet égard.

Je n'ai pas encore réussi à le faire.

La plupart du temps, il a fallu trier les prédicteurs avec valeur propre = 0 après cov() de la table d'entraînement (je suppose que seuls les prédicteurs spécialement corrélés sont appropriés). Après 24 heures, il s'agissait de former le modèle ForeCA lui-même, qui n'a pas été formé à cause d'une erreur :

unit-variance: Mean relative difference: 3.520041 e-06
Error in check_whitened(out$score, FALSE) : Data must be whitened:
         Each variable must have variance 1.

Le paquet est très exigeant sur les prédicteurs, beaucoup de restrictions de toutes sortes. Je ne sais même pas ce que signifie la dernière erreur, je vais y regarder de plus près.

Je finirai ça plus tard :
Google dit qu'il n'est pas nécessaire de supprimer les prédicteurs. Vous pouvez les transformer de manière à ce qu'elles ne soient plus corrélées, la matrice de covariance aura alors un rang complet, ce qui est nécessaire pour ForeCA. Pour le blanchiment, il y a quelques fonctions dans le paquet lui-même (cela n'a pas fonctionné tout de suite, vous devez les découvrir), plus la théorie dans les liens ci-dessous.
Pour utiliser correctement le paquet ForeCA, vous devez d'abord comprendre et apprendre à le faire :
http://stats.stackexchange.com/questions/23420/is-whitening-always-good
http://courses.media.mit.edu/2010fall/mas622j/whiten.pdf

 
Dr. Trader:

1) La forêt forex ne fonctionnera correctement que si vous éliminez à l'avance les prédicteurs inadaptés et ne laissez que les prédicteurs nécessaires pour la formation. Le problème est que les bons prédicteurs doivent être identifiés ou trouvés, et la forêt n'est d'aucune aide à cet égard.

2) Le paquet est très exigeant pour les prédicteurs, il y a de nombreuses limitations. Je ne sais même pas ce que signifie la dernière erreur, je vais y regarder de plus près.

1) J'ai proposé ce que je pense être une assez bonne idée pour faire une telle sélection, mais personne n'est intéressé, et je ne peux pas l'implémenter moi-même.

2) Je ne peux pas le faire moi-même. 2) Vous pouvez seulement réduire la quantité de données, sinon vous le saurez vous-même).

 

J'ai déjà posté ce message mais personne n'a réagi, je vais réessayer.

J'ai déjà posté ce message mais personne n'a réagi, je vais réessayer. Il existe une notion dans BP appelée dynamic time warping (DTW), vous pouvez l'utiliser pour rendre le graphique des prix plus lisible et donc plus reconnaissable pour l'algorithme.

data_driven_time_warp <- function (y) {
  cbind(
    x = cumsum(c(0, abs(diff(y)))),
    y = y
  )
}

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

i <- seq(1,length(y),by=10)
op <- par(mfrow=c(2,1), mar=c(.1,.1,.1,.1))
plot(y, type="l", axes = FALSE)
abline(v=i, col="grey")
lines(y, lwd=3)
box()
d <- data_driven_time_warp(y)
plot(d, type="l", axes=FALSE)
abline(v=d[i,1], col="grey")
lines(d, lwd=3)
box()
par(op)

et tout semble être cool, mais ce qui est triste c'est qu'à la suite de cette transformation, nous obtenons deux coordonnées x et y temps(synthétique) et valeurs

d
                x        y
  [1,]   0.000000 1001.393
  [2,]   1.081118 1002.474
  [3,]   2.799970 1004.193
  [4,]   3.706653 1005.100
  [5,]   3.867351 1005.260
  [6,]   4.654784 1004.473
  [7,]   5.000202 1004.127
  [8,]   6.665623 1005.793
  [9,]   7.415255 1005.043
 [10,]   7.956572 1005.584
 [11,]   8.403185 1005.138
 [12,]   9.352230 1004.189
 [13,]   9.913620 1004.750
 [14,]  10.249985 1004.414

la question est de savoir comment retourner cette transformation en un vecteur pour qu'elle ne perde pas ses propriétés

voici à quoi cela ressemble - en haut ordinaire, en bas dtw

DTW

 
mytarmailS:

1) J'ai suggéré ce que je pensais être une idée suffisamment bonne pour faire une telle sélection, mais personne n'est intéressé, et je ne peux pas la mettre en œuvre moi-même.

2) Réduire uniquement la quantité de données ou vous le savez vous-même)

Que suggérez-vous ? Il s'avère que j'ai manqué... Puis-je répéter votre idée ?
 
SanSanych Fomenko:
Que suggérez-vous ? Il s'avère que j'ai manqué quoi ? Puis-je répéter votre idée ?
Regardez où j'ai écrit sur le clustering, je l'ai expliqué en détail.
 
mytarmailS:

laquestion est de savoir comment ramener cette transformation à un vecteur normal sans perdre ses propriétés

Alors, des idées sur ce sujet ?
 

J'ai fait un autre exemple avec ForeCA, en archivant un petit tableau pour le test et le code pour travailler avec.
Cette fois, j'ai bien fait les choses.
Vous pouvez utiliser votre propre tableau avec des données d'entraînement pour le modèle, l'essentiel étant qu'il s'agisse d'une matrice, sans facteurs (pour l'entraînement avec lm, vous pouvez utiliser la régression uniquement). Le nombre de lignes doit être beaucoup plus élevé que le nombre de prédicteurs, sinon il y aura des erreurs dans ForeCA.
J'ai des valeurs cibles de 0 et 1, avec d'autres la précision ne sera pas déterminée correctement, si cela, veuillez corriger le code dans RegressionToClasses01(regr) pour votre cas à l'endroit où le résultat de la régression est arrondi aux classes.
trainData - données pour la formation
trainDataFT - données pour le test frontal

Résultat :
lm sur les données brutes : 75% de précision sur les données d'entraînement et 57% sur les nouvelles données.
lm sur l'ensemble des 14 composants de foreCA : 75% sur les données d'entraînement et 61% sur les nouvelles données. Légèrement mieux, mais dans ce cas +4% ne représente que +1 résultat correct, le tableau est assez petit :)

En d'autres termes, si les prédicteurs sont déjà présélectionnés, la situation ne devrait pas être pire après ForeCA, peut-être même ajouter quelques points de pourcentage à la précision.

J'ai également ajouté un graphique avec la dépendance de la précision en fonction du nombre de composants ForeCA. Il semble que plus le nombre de composants est élevé, plus les résultats sont précis. Nombre maximal autorisé de composantes = nombre de prédicteurs.


Dossiers :
 

La deuxième partie de l'expérience est.

J'avais 14 prédicteurs sélectionnés précédemment, j'en ai ajouté 14 autres avec des valeurs aléatoires. Le nombre maximal autorisé de composants ForeCA est désormais de 28.

La précision de prédiction avec les 28 composants sur les données d'entraînement dans les deux cas (avec et sans foreCA) est de 76%, la précision sur les nouvelles données dans les deux cas est de 57%.

Je ne pense pas que foreCA ait fait face à des prédicteurs de mauvaise qualité, je n'ai pas vu le miracle attendu.

 
mytarmailS:
Et alors ?
Ça ressemble à un graphique Renko. Les rencos sont en quelque sorte dessinés sur les barres dans le terminal mt5, vous avez besoin d'un algorithme similaire ici.
Raison: