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

 
Bonjour, je suis nouveau dans le domaine de l'apprentissage automatique et j'ai une question, pourquoi essayez-vous tous de prédire la direction du prix, soit en zigzaguant, soit simplement en incrémentant la prochaine bougie, il y a beaucoup de chaos sur le marché, il faut inclure un couloir dans lequel le prix pourrait "gigoter". Il me semble plus efficace de prendre le résultat de la négociation comme cible. Par exemple, pendant la formation, nous considérons une courbe de profit idéale et l'objectif sera marqué comme ne s'écartant pas de l'idéal de plus de 15% ou, alternativement, nous prenons le facteur de récupération et ne le laissons pas tomber en dessous de n , de tels objectifs seront plus flexibles pour les données du marché. Et le plus intéressant est de savoir comment implémenter la fonction sous cette forme, par exemple pour la même forêt aléatoire ?
 
mytarmailS:
Bonjour, je suis nouveau dans le domaine de l'apprentissage automatique et j'ai une question, pourquoi essayez-vous tous de prédire la direction du prix, soit en zigzaguant, soit simplement en incrémentant la prochaine bougie, il y a beaucoup de chaos sur le marché, vous devriez inclure un certain couloir dans lequel le prix pourrait "s'agiter". Il me semble plus efficace de prendre le résultat de la négociation comme cible. Par exemple, pendant la formation, nous considérons une courbe de profit idéale et l'objectif sera marqué comme ne s'écartant pas de l'idéal de plus de 15% ou, alternativement, nous prenons le facteur de récupération et ne le laissons pas tomber en dessous de n , de tels objectifs seront plus flexibles pour les données du marché. Et le plus intéressant est de savoir comment mettre en œuvre une fonction de ce type, par exemple pour une forêt aléatoire ?
Bonjour, pourriez-vous dessiner cette cible graphiquement pour la rendre plus claire ?
 
 

Bonjour !

Le côté gauche est juste un type de prix, le côté droit noir représente la courbe d'équilibre idéale (tout ce qui peut être gagné), le vert représente une certaine fourchette (corridor) de la courbe d'équilibre idéale que nous ne devrions pas dépasser dans notre commerce, le gris représente l'équilibre d'un type de commerce réel).

L'essence de l'objectif n'est donc pas de prédire les prix et l'objectif sous la forme d'un vecteur 11100001111100 , et de trouver un état dans lequel la ligne grise ne dépassera pas la ligne verte.

Je ne comprends pas moi-même comment le faire, c'est pourquoi j'aimerais en discuter).

 
mytarmailS:

Bonjour !

Le côté gauche est juste un type de prix, le côté droit noir représente la courbe d'équilibre idéale (tout ce qui peut être gagné), le vert représente une certaine fourchette (corridor) de la courbe d'équilibre idéale que nous ne devrions pas dépasser dans notre commerce, le gris représente l'équilibre d'un type de commerce réel).

L'essence de l'objectif n'est donc pas de prédire les prix et l'objectif sous la forme d'un vecteur 11100001111100 , et de trouver un état dans lequel la ligne grise ne dépassera pas la ligne verte.

Je suis peut-être un peu confus mais je ne sais pas comment faire).

L'angle de pente de la ligne dans le commerce des erreurs sera moins qu'idéal. Vous avez représenté le commerce en gris, où très probablement l'augmentation du lot fait un retour à l'angle prévu.

C'est-à-dire qu'il s'agit de négocier pour prédire la direction du prix, mais lorsque l'erreur est accumulée, le système commence en quelque sorte à travailler dans la direction positive plus souvent.

Nous avons examiné trois options de cibles ici.
1) fermeture d'une position dans l'intervalle de temps
2) conclusion d'une affaire lorsque le niveau est brisé (tp/cl)
3) direction générale de la tendance, où la clôture de la transaction n'est pas explicitement définie. Cela peut être par temps ou par tp/cl.

Dans ce cas, la variante 3 est la plus vague en ce qui concerne le critère de sortie.
 
Alexey Burnakov:
L'angle de pente de la ligne dans les échanges d'erreurs sera moins qu'idéal. Vous avez décrit une transaction de ligne grise où l'augmentation du lot reviendra très probablement à l'angle prévu.

C'est-à-dire qu'il s'agit d'une négociation sur la prédiction de la direction du prix, mais lorsque l'erreur est accumulée, le système commence en quelque sorte à travailler intensivement dans le plus plus souvent.
Je ne comprends pas.) il n'y a pas de lot, il n'y a pas de système qui travaille dur), c'est une date générée au hasard... Le fait d'imaginer la cible devrait fonctionner mieux que le zigzag, à mon humble avis, bien sûr, mais comment mettre cela en œuvre, je ne sais pas, j'ai pensé que quelqu'un pourrait me le dire.
 
mytarmailS:
Je ne comprends pas :)) il n'y a pas de lot, il n'y a pas de système qui fonctionne amélioré), c'est une date générée au hasard... je viens d'imaginer une cible qui devrait fonctionner mieux que le zigzag à mon humble avis bien sûr, mais comment l'implémenter je ne sais pas, j'ai pensé que quelqu'un pourrait me le dire

Je ne vous comprends pas non plus.

Votre courbe grise revient à négocier avec un lot variable pour revenir toujours à une ligne à forte pente.

C'est comme une martin qui a toujours un angle de la ligne d'échange.

En réalité, il n'est pas réaliste d'opérer de cette manière. Avec des erreurs (trades perdants), votre courbe réelle sera beaucoup plus proche de zéro.

La manière dont l'objectif est réalisé n'est pas non plus claire. Ce type de série temporelle n'est possible que lorsque la transaction revient toujours dans le positif après l'accumulation de négatifs. Il n'est guère possible de mettre cela en place une formation, du moins pas de manière standard.

 

Ce n'est pas un système, c'est juste une illustration ;)) Il n'y a pas de commerce ici.

Désolé, je dois être mauvais pour exprimer mes pensées.

voici le code

PRIX <- cums(rnorm(200))+1000

par(mfrow=c(1,2))

plot(PRICE,t="l",,lwd=2)

PD <- c(0,diff(PRICE))

BAL <- PD

for(i in 1:length(PD)){

if(BAL[i] < 0) BAL[i] <- BAL[i]/-1

}

BAL <- cumsum(BAL)

lowBAL <- BAL - 50

plot(BAL,t="l",lwd=3)

plot(lowBAL,t="b",col="green")

realBAL <- BAL+rnorm(200,sd=20)

lines(realBAL,t="l",col="grey")


Recommençons, il y a une fonction cible standard, c'est un vecteur qui dénote la direction du mouvement, vous pouvez le décrire par un zigzag ou juste la prochaine fermeture de bougie, le vecteur est habituellement transformé en 1110000111 ou -1-1-11111

Je peux le faire de cette façon, mais je pense que de telles approches sont défectueuses.

Je propose de le faire : laisser l'algorithme pendant l'entraînement imiter le trading (graphique gris) et le comparer au rendement idéal qui pourrait être attendu (graphique noir) ; c'est-à-dire que l'algorithme n'essaie pas de prédire le prochain prix et essaie juste de ne pas dépasser la ligne verte. C'est tout ce que j'ai essayé de montrer sur le graphique.

Question : Est-il possible de le réaliser, car tous les algorithmes que j'ai vu (neuronal, RF...) veulent un vecteur cible de 11100011

 
mytarmailS:

Ce n'est pas un système, c'est juste une illustration ;)) Il n'y a pas de commerce ici.

Désolé, je dois être mauvais pour exprimer mes pensées.

voici le code

PRIX <- cums(rnorm(200))+1000

par(mfrow=c(1,2))

plot(PRICE,t="l",,lwd=2)

PD <- c(0,diff(PRICE))

BAL <- PD

for(i in 1:length(PD)){

if(BAL[i] < 0) BAL[i] <- BAL[i]/-1

}

BAL <- cumsum(BAL)

lowBAL <- BAL - 50

plot(BAL,t="l",lwd=3)

plot(lowBAL,t="b",col="green")

realBAL <- BAL+rnorm(200,sd=20)

lines(realBAL,t="l",col="grey")


Recommençons, il y a une fonction cible standard, c'est un vecteur qui dénote la direction du mouvement, vous pouvez le décrire par un zigzag ou juste la prochaine fermeture de bougie, le vecteur est habituellement transformé en 1110000111 ou -1-1-11111

Je peux le faire de cette façon, mais je pense que de telles approches sont défectueuses.

Je propose de le faire : laisser l'algorithme pendant l'entraînement imiter le trading (graphique gris) et le comparer au rendement idéal qui pourrait être attendu (graphique noir) ; c'est-à-dire que l'algorithme n'essaie pas de prédire le prochain prix et essaie juste de ne pas dépasser la ligne verte. C'est tout ce que j'ai essayé de montrer sur le graphique.

La question : est-il possible de le réaliser, car tous les algorithmes que j'ai vus (neuronaux, RF...) veulent un vecteur cible de 11100011 sous la forme d'un vecteur cible ?

Merci. Je vous ai compris tout de suite. C'est juste qu'il n'est pas possible de l'implémenter par défaut.

Prenez la forêt aléatoire. Je suppose que vous connaissez cette méthode d'apprentissage automatique.

Ce truc ne peut fonctionner que dans un sens. Si nous avons une variable de sortie binaire, la forêt de décision pour chacune des entrées cherchera simplement et stupidement une région de valeurs où l'asymétrie d'une des classes de sortie est statistiquement plus grande. Et ceci est fait de manière itérative pour toutes les variables.

Si vous voulez que la machine tienne compte de l'écart entre la précision des transactions réelles et l'idéal, vous devez vous assurer que la forêt de décision est choisie en conséquence, et non en fonction de l'asymétrie des classes. Cela doit tenir compte de la variation dynamique de l'écart par rapport au commerce idéal, qui n'est pas non plus réalisable par la norme. Pour ce faire, la machine doit être alimentée de manière dynamique en données sur la transaction parfaite. Pour ce faire, il est nécessaire de réécrire la méthode. Les outils standard ne peuvent tout simplement pas le faire.

Il existe des fonctions de gradient. Dans le cas d'une forêt standard, le gradient est fixé à sa manière. Si vous devez optimiser l'écart du métier par rapport à l'idéal, il s'agira d'un gradient complètement différent. Je ne pense pas pouvoir l'écrire personnellement sur mes genoux.

 
Merci pour la clarification, je vous comprends parfaitement maintenant, les algos génétiques peuvent-ils aider ici ? Au lieu de RF, j'ai quelques idées intéressantes pour mettre en œuvre un objectif, j'aimerais les essayer.
Raison: