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

 

Maxim Dmitrievsky:

Plus que 3 semaines avant ma ligne d'arrivée avec le NS :))) soit le graal, soit l'enfer avec eux. Faites vos jeux :))

Ce serait bien d'entendre les chances de gagner au début. Personne ne se contente de recevoir des ordres ici ;)

 

J'avais un besoin urgent de trouver le minimum d'une fonction lisse, j'ai donc décidé de comparer d'abord différents paquets pour voir lequel est le plus rapide. Pour le test, j'ai pris la fonction Rastrigin (la fonction la plus difficile à optimiser selon certains professeurs).

Rastrigin <- function(x){
  return(sum(x^2 - 10 * cos(2 * pi * x)) + 10 * length(x))
}


Pour le test, je l'ai pris avec 4 paramètres :

~ w^2 - 10 * cos(2 * pi * w)  +  x^2 - 10 * cos(2 * pi * x)  +  y^2 - 10 * cos(2 * pi * y)  +  z^2 - 10 * cos(2 * pi * z)   +  10 * 4


Les produits dérivés :

2 * w + 10 * (sin(2 * pi * w) * 2 * pi
2 * x + 10 * (sin(2 * pi * x) * 2 * pi
2 * y + 10 * (sin(2 * pi * y) * 2 * pi
2 * z + 10 * (sin(2 * pi * z) * 2 * pi


J'ai comparé GenSA, lbfgs, lbfgsb3, n1qn1 et diverses méthodes de la fonction standard optim().

Résultats :
le nombre d'appels aux fonctions de fitness (et de gradient), les paramètres trouvés et le résultat final où la recherche s'arrête.

n1qn1 fitness function calls: 448 ; parameters = 3.90227 e-18 3.90227 e-18 3.90227 e-18 3.90227 e-18 ; result = 0 
lbfgs fitness function calls: 14 ; parameters = -1.891749 e-10 -1.891749 e-10 -1.891749 e-10 -1.891749 e-10 ; result = 0 
lbfgsb3 fitness function calls: 12 ; parameters = -7.542216 e-15 -7.542216 e-15 -7.542216 e-15 -7.542216 e-15 ; result = 0 
GenSA fitness function calls: 66582 ; parameters = 1.517382 e-11 -5.657816 e-12 -2.292922 e-11 -3.257902 e-12 ; result = 0 
optim Nelder-Mead fitness function calls: 253 ; parameters = -2.981633 3.988813 0.9902444 -2.980489 ; result = 34.8497 
optim BFGS fitness function calls: 49 ; parameters = 8.731115 e-16 8.731115 e-16 8.731166 e-16 8.731157 e-16 ; result = 0 
optim CG fitness function calls: 918 ; parameters = 0.9949586 0.9949586 0.9949586 0.9949586 ; result = 3.979836 
optim L-BFGS-B fitness function calls: 81 ; parameters = 8.526118 e-13 8.526118 e-13 8.526118 e-13 8.526118 e-13 ; result = 0 
optim SANN fitness function calls: 10000 ; parameters = 750.3075 745.0596 743.626 753.8133 ; result = 2239327 

Les trois premières fonctions (n1qn1, lbfgs, lbfgsb3) utilisent un gradient trouvé analytiquement.

Le résultat = 0 est idéal, plus on s'éloigne de zéro, plus c'est mauvais.

Nous pouvons voir que la connaissance des dérivés est très bonne, lbfgsb3 a atteint le résultat parfait en 12 appels des fonctions de fitness.
Le meilleur de ceux qui définissent le gradient numériquement était la fonction standard optim avec la méthode BFGS, 49 appels de la fonction de fitness.

La conclusion est que les produits dérivés sont très bons. Idéalement, nous pourrions par exemple trouver des dérivés pour tous les poids et les mettre dans lbfgsb3 au lieu des backprops.
Mais tous ces résultats ne s'appliquent qu'aux fonctions lisses pour lesquelles on peut trouver des dérivées pour tous les paramètres. Si vous avez des paramètres de fonction qui changent aléatoirement le résultat même au moindre changement - la génétique, GenSA et d'autres algorithmes stochastiques sont meilleurs là.

J'ai joint un fichier avec le code, vous pouvez le tester sur vos fonctions.

Dossiers :
n1qn1.txt  4 kb
 

Je me demande si une telle série peut être prédite par un certain arima, ou si remonter à la moyenne est suffisant... j'ai réussi à obtenir des résultats impressionnants de stabilité (diagramme de cointégration), en travaillant les retours sur 2 spreads


 

Un retour à la moyenne peut même être négocié avec un swing. Mais comment pouvons-nous déterminer où se situe le prix moyen si la moyenne se déplace avec la tendance ? (La question est rhétorique - vous ne pouvez pas).

 
Dr. Trader:

Un retour à la moyenne peut même être négocié avec un swing. Mais comment pouvons-nous déterminer où se situe le prix moyen si la moyenne se déplace avec la tendance ? (La question est rhétorique - vous ne pouvez pas).

La moyenne ici est de 0, c'est une stratégie neutre.

nous devrions utiliser les statistiques) ce qui est décalé là est impossible à comprendre dans la boîte noire

En bref, presque terminé 2 e stratégie sur les 3 prévues (les résultats de la première ont déjà écrit, pas vkatilo)

si celui-ci ne fonctionne pas - le dernier sera laissé)

et ce sera la fin du MO

 
Maxim Dmitrievsky:

Je me demande si une telle série peut être prédite par un certain arima, ou il suffit de travailler pour le retour à la moyenne ... a réussi à obtenir des résultats stables impressionnants (diagramme de cointégration), les retours de travail plus de 2 spreads


La cointégration est un terme et n'a rien à voir avec votre photo.

L'applicabilité d'arim est déterminée par plusieurs tests, le principal étant arch, qui détermine s'il existe un effet d'arc dans les séries temporelles. S'il n'y a pas d'effet de voûte, ce qui représente environ 20%, alors le commerce, mais ... sur l'histoire, puisque cette section a déjà été adoptée ou presque ou...

 
SanSanych Fomenko:

La co-intégration est un terme et n'a rien à voir avec votre tableau.

L'applicabilité de l'arithmétique est déterminée par plusieurs tests, le principal étant arch, qui détermine s'il existe un effet d'arc dans les séries temporelles. S'il n'y a pas d'effet de voûte, ce qui représente environ 20%, alors le commerce, mais ... sur l'histoire, car cette section a déjà été passée ou presque passée ou...

définissons la cointégration pour la troisième fois... qu'est-ce que c'est et pourquoi ce n'est pas pertinent pour mon tableau ? :)

c'est une photo d'un site de test, je ne regarde pas du tout l'historique, tout y est toujours parfait

ou de quoi s'agit-il - développement de stratégies sur le MO ou analyse de différentes fonctions R, je crois que je suis le seul à avoir posté des résultats depuis quelques mois :)

 
Maxim Dmitrievsky:

la moyenne ici est de 0, c'est une stratégie neutre par rapport au marché.

Voulez-vous que le graphique vert lui-même s'échange ? Puis je vois, au début je pensais que c'était un indicateur pour le trading de l'eurusd.

Tout d'abord, nous devons déterminer s'il s'agit d'un processus aléatoire ou s'il a une mémoire comme les séries chronologiques normales.

S'il a une mémoire, la mashka et l'arima peuvent être utiles.
Mais si le graphe est complètement aléatoire, alors nous avons besoin de modèles pour les processus markoviens. Je ne suis pas doué pour ça, mais Alexander a dit quelque chose à propos du modèle de Wiener, vous pouvez commencer avec ça, par exemple.

 
Maxim Dmitrievsky:

définissons pour la troisième fois la cointégration... qu'est-ce que c'est et pourquoi ne s'applique-t-elle pas à mon tableau ? :)

cette photo provient déjà d'une parcelle d'essai, je ne regarde pas du tout l'histoire, tout y est toujours parfait

Il y a au moins deux séries temporelles en cointégration.

Mais ils ne sont pas tous.

Ces séries ne sont pas stationnaires.

Mais ce n'est pas tout.

Ces séries non stationnaires doivent être reliées de manière à ce que le résultat soit stationnaire.

Les décisions commerciales sont prises sur la base de cette série STATIONNAIRE qui garantit la possibilité même de faire une prévision.

 
Dr. Trader:

Voulez-vous négocier le graphique vert lui-même ? Puis je vois, au début je pensais que c'était un indicateur pour le trading de l'eurusd.

Nous devons d'abord déterminer s'il s'agit d'un processus aléatoire ou s'il a une mémoire comme une série chronologique normale.

S'il a de la mémoire - alors le mash et l'arima peuvent être utiles.
Mais si le graphe est complètement aléatoire, alors nous avons besoin de modèles pour les processus markoviens. Je ne suis pas doué pour ça, mais Alexander a parlé du modèle de Wiener.

Il faut donc déterminer s'il a une mémoire, c'est-à-dire qu'il est déterminé par ses queues ?

Raison: