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

 
Andrey Dik:

Ici, j'ai expliqué exactement ce que je fais :

En détail : sur la barre actuelle, le signal d'achat, comme acheter, compter le plus petit nombre de barres vers l'avant dans le futur et vérifier si le commerce sera rentable, si oui, comme fermer, si non - compter une barre de plus vers l'avant et vérifier à nouveau. De cette façon, nous atteignons le nombre maximum de barres et les fermons définitivement. Il s'agit d'un mécanisme d'apprentissage.

Qu'est-ce qui n'est pas clair ? Ce n'est pas un fantasme, c'est exactement ce que je fais maintenant. La fonction cible est de maximiser les profits avec des drawdowns minimaux. Je m'entraîne en utilisant ma propre génétique.

Qu'est-ce que nous enseignons ? Il est possible de la mettre en œuvre simplement, n'est-ce pas ?
 

SanSanych Fomenko:
1. qu'enseignons-nous ?

2. N'est-il pas possible de le mettre en œuvre comme ça ?

1.la fonction cible est de maximiser les profits avec des retraits minimaux. J'enseigne avec l'aide de ma génétique.

2. Oui, très simple.

 
Quelqu'un sait-il comment trouver la langue dans laquelle le paquet R est écrit ?
 
mytarmailS:
Quelqu'un sait-il comment trouver la langue dans laquelle le paquet R est écrit ?

Documentation. Ouvert à partir de l'aide en R :

  • Écriture d'extensions R
  • Internes R

En outre, il existe une description détaillée de la manière de travailler avec Cp

 

Messieurs, une nouvelle tâche de ma part :

Voici un jeu de données au format .R : https://drive.google.com/open?id=0B_Au3ANgcG7CcjZVRU9fbUZyUkE

Il y a environ 40 000 lignes et 101 colonnes dans le jeu. La colonne la plus à droite est la variable cible. A gauche, il y a 100 entrées.

Je vous suggère d'essayer de construire un modèle de régression prédisant la valeur de la 101e colonne en fonction des 100 colonnes restantes, sur les 20 000 premières observations.

Sur les 20 000+ observations restantes, le modèle construit devrait montrer un R^2 d'au moins 0,5.

Je révèle ensuite la manière dont les données sont générées et je donne ma solution.

L'indice est la série de données temporelles. L'entrée est de 100 échantillons, prédits 1 avant. Il ne s'agit pas de prix, de cotations ou de leurs dérivés.

Alexey

 
Je peux également envoyer ces données en format csv. Il serait intéressant d'entendre l'avis des coryphées sur la signification des prédicteurs.

Encore une fois, les données sont purement synthétiques et pour le plaisir.
 

J'ai essayé de trouver l'importance des prédicteurs à travers le paquet vtreat. Mais le paquet n'est pas capable de rechercher les relations entre les prédicteurs, il ne prend en compte que les relations directes entre le prédicteur et la cible, ce qui n'est pas très adapté à cette tâche.

treatments <- designTreatmentsN(dat_ready[1:20000,], colnames(dat_ready)[1:100], tail(colnames(dat_ready),1))
treatments$scoreFrame #важность  предикторов определяется через колонку "sig"
treatments$scoreFrame[order(treatments$scoreFrame$sig),] #предикторы  отсортированы по важности

En jugeant de l'importance de vtreat - lag_diff_51 et lag_diff_52 sont les plus utiles. Petit à petit, j'ai ajouté d'autres prédicteurs de la liste reçue et j'ai regardé la croissance du R^2 sur les données d'entraînement pour la forêt. A la fin, je me suis arrêté à ces prédicteurs - 51, 52, 53, 54, 55, 17, 68, très probablement ils sont utilisés pour calculer la cible. R^2 sur les données d'entraînement avec eux > 0.9, mais sur les tests et les validations tout est mauvais. Maintenant, je dois essayer différentes opérations mathématiques avec ces prédicteurs, sélectionner des formules et ainsi de suite, de sorte que lors de la validation croisée, le R^2 augmente également. Je ne le chercherai plus :)

Je l'ai terminé plus tard :
J'ai expérimenté un peu plus, j'ai fait un tas de nouveaux prédicteurs à partir de ceux existants, avec différentes opérations mathématiques. vtreat et forest aiment beaucoup ces deux combinaisons : sum(51,52) et average(51,52). Mais je n'ai jamais réussi à obtenir une formule pour la valeur cible. Et les modèles formés sur ces prédicteurs ne peuvent pas non plus prédire quoi que ce soit de manière adéquate.

 

100 entrées ? C'est fort.

Pourquoi pas un millier ?

Vous n'avez absolument aucune idée de ce qu'est un réseau nerveux.

 
Dr. Trader:

J'ai essayé de trouver l'importance des prédicteurs à travers le paquet vtreat. Mais le paquet n'est pas capable de rechercher les relations entre les prédicteurs, il ne prend en compte que les relations directes entre le prédicteur et la cible, ce qui n'est pas très adapté à cette tâche.

En jugeant de l'importance de vtreat - lag_diff_51 et lag_diff_52 sont les plus utiles. Petit à petit, j'ai ajouté d'autres prédicteurs de la liste reçue et j'ai regardé la croissance du R^2 sur les données d'entraînement pour la forêt. A la fin, je me suis arrêté à ces prédicteurs - 51, 52, 53, 54, 55, 17, 68, très probablement ils sont utilisés pour calculer la cible. R^2 sur les données d'entraînement avec eux > 0.9, mais sur les tests et les validations tout est mauvais. Maintenant, je dois essayer différentes opérations mathématiques avec ces prédicteurs, sélectionner des formules et ainsi de suite, de sorte que lors de la validation croisée, le R^2 augmente également. Je ne le chercherai plus :)

Je l'ai terminé plus tard :
J'ai expérimenté un peu plus, j'ai fait un tas de nouveaux prédicteurs à partir de ceux existants, avec différentes opérations mathématiques. vtreat et forest aiment beaucoup ces deux combinaisons : sum(51,52) et average(51,52). Mais je n'ai jamais réussi à obtenir une formule pour la valeur cible. Et les modèles formés sur ces prédicteurs ne peuvent pas non plus prédire quoi que ce soit de manière adéquate.

Marchant à proximité, mais passant par là. Tout n'a pas été souligné. Il existe des corrélations linéaires entre les sorties et les entrées. Mais ils n'aident pas beaucoup.

Vous avez surentraîné la forêt. Il est préférable de regarder le CV. Je vous dirai le secret des données plus tard. C'est censé être simple. Il y a beaucoup de redondance dans les entrées.
 

De plus, 0,9 est un surentraînement. Un R^2 supérieur à 0,6 sur un ensemble de formation est un maximum réaliste.

Une dernière chose : n'oubliez pas les interactions. Les connexions uniques peuvent mener dans une fausse direction.

J'essaie moi-même de résoudre ma propre tâche. J'ai appliqué une seule couche de NS. Le test R^2 ne dépasse pas 0,148. Ça ne correspond pas...