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

 
elibrarius:

Il y a un site génial qui archive presque tout l'internet.

super !!! merci

 

À mon avis, il n'y a guère d'intérêt à prédire les séries 100-200-500 jours à l'avance. Trop de choses peuvent se produire... pour changer radicalement la série et les forces qui influencent son mouvement.

Pouvez-vous répéter ce code (meilleur que celui de l'article 3, il est plus stable) pour les prévisions M1-M15 à 1-10 heures d'avance ? Même une heure suffit pour battre le spread et réaliser un bénéfice.
Si cela réussit, vous pouvez alors appliquer la méthode au travail.

 
sibirqk:

D'après ce que j'ai compris, les auteurs ne révèlent pas trop de choses sur l'algorithme lui-même, faisant des maximes comme :

Par conséquent, la méthode GenericPred utilise deux règles de base :

R1 : Efforcez-vous toujours de maintenir la valeur d'une mesure non linéaire aussi stable que possible pendant la prédiction(Fig. 3).

R2 : La nouvelle valeur doit être choisie parmi un ensemble de valeurs potentielles générées à partir d'une distribution de probabilité.

La prédiction doit être poursuivie étape par étape, car la valeur prédite à l'étape actuelle est nécessaire pour déterminer la plage de changement valide pour l'étape suivante.


D'après ce que je peux deviner, une composante linéaire logistique est d'abord sélectionnée, puis à chaque étape une composante non linéaire est modélisée, le critère principal étant la stabilité d'un ensemble de caractéristiques stochastiques de la série. En général, c'est vague, mais le résultat est impressionnant.

À mon avis, l'approche est quelque peu similaire à celle utilisée dans le package "prophet" de R.

J'ai regardé d'un peu plus près - je vois que je me suis un peu trompé. Ils font une série de métriques non linéaires glissantes à partir de séries originales (ils écrivent sur la dimension fractale et les indices de Lyapunov). Cette nouvelle série qu'ils considèrent (sur la base d'observations pratiques) comme similaire à SB. Et ils multiplient cette série par une méthode de type Monte Carlo à l'avenir et prennent une variante qui se rapproche le plus de l'ensemble initial.

Le secret est une transformation spécifique des séries initiales en séries de mesures, et plus important encore - la transformation inverse.

Dans l'ensemble, tout cela semble suspect (tout d'abord, le style de présentation des résultats) et ne donne guère envie d'approfondir la question.

 
Aleksey Nikolayev:

En regardant d'un peu plus près - je vois que je me suis quelque peu trompé. Ils font une série de métriques non linéaires glissantes à partir de la série originale (ils écrivent sur la dimensionnalité fractale et les indices de Lyapunov). Cette nouvelle série qu'ils considèrent (sur la base d'observations pratiques) comme similaire à SB. Et ils multiplient cette série par une méthode de type Monte-Carlo à l'avenir et prennent une variante qui se rapproche le plus de l'ensemble initial.

Le secret est une transformation spécifique des séries initiales en séries de mesures, et plus important encore - la transformation inverse.

Dans l'ensemble, tout cela paraît suspect (en premier lieu, le style de présentation des résultats) et ne suscite guère l'envie d'approfondir la question.

Cela ressemble à des excréments nauséabonds, pour paraphraser).

Si vous calculez le cram, il sera pire que la prédiction naïve du prix de la dernière barre.

 
Aleksey Nikolayev:

Le secret reste le type de transformation spécifique de la série originale en une série de métriques et, plus important encore, la transformation inverse.

Il y a un code !

 
Aleksey Nikolayev:

Eh bien, nous ne sommes pas autorisés à entrer dans les serveurs des DC et des ECN) Nous devons tout inventer nous-mêmes).

Même s'ils nous laissent entrer, cela ne fera pas grand-chose) La rapidité d'obtention des prix et leur certaine justesse ne changeront pas l'essentiel. Mais la tendance est à la croissance de la capacité des algorithmes de recherche de prix et d'estimation des données FA, cette dernière étant malheureusement beaucoup plus lente. Mais la tendance est là))) Et celui qui sera le premier à être capable de combiner les résultats sera au sommet pour un moment)))).

 

article de 2014. J'ai certainement lu sa traduction russe ou un compte rendu de celle-ci dans un ouvrage populaire de "trader-enseignant".

Je me souviens vaguement que cela se résumait au fait que lorsqu'il y a une tendance, la prévision est bonne ; lorsqu'il y a un changement de tendance, la prévision est fausse. Ils ne sont pas allés assez loin)

 

Le sujet du ministère de la Défense est descendu au niveau de la DSP et de l'Arim, c'est amusant.

bien que les auteurs de l'article n'aient même pas pu utiliser Arima ou Garch correctement, de sorte qu'ils ne montrent pas une ligne droite.

Ecrivez plus sur les ondes sinusoïdales et ainsi de suite.
 
mytarmailS:

Le code est là !

Je ne sais pas ce qui n'allait pas chez l'auteur de l'article quand il a écrit le code de la troisième partie, mais le code était "cassé" à trois endroits, tin.....

Je l'ai réparé.

library(quantmod)
library(fractaldim)


getSymbols("SPY",src="yahoo", from="2019-01-01")


N <- 10  #  Predict the last N bars

mainData <- SPY$SPY.Close



colnames(mainData) <- c("data")
endingIndex <- length(mainData$data)-(N+1)

TEST <- mainData[1:endingIndex]
total_error <- 0
error_per_prediction <- matrix(ncol = 1,nrow = 0)

#These  are the fractal dimension calculation parameters
#see  the fractaldim library reference for more info

method <- "rodogram"
Sm <- as.data.frame(TEST, row.names = NULL)
delta <- c()

#  calculate delta between consecutive Sm values to use as guesses
for(j in 2:length(Sm$data)){
  delta <- c(delta, (Sm$data[j]-Sm$data[j-1])/Sm$data[j-1])
}

Sm_guesses <- delta

#do 100 predictions of next values in Sm
for(i in 1:N){
  
  #update  fractal dimension used as reference
  V_Reference <- fd.estimate(Sm$data, method=method)$fd
  minDifference = 1000000
  
  #  check the fractal dimension of Sm plus each different guess and
  #  choose the value with the least difference with the reference
  for(j in 1:length(Sm_guesses)){
    
    new_Sm <- rbind(Sm, Sm_guesses[j]*Sm$data[length(Sm$data)]+Sm$data[length(Sm$data)])
    new_V_Reference <- fd.estimate(new_Sm$data, method=method)$fd
    
    if (abs(new_V_Reference - V_Reference) < minDifference ){
        Sm_prediction <- Sm$data[length(Sm$data)]+Sm_guesses[j]*Sm$data[length(Sm$data)]
        minDifference <- abs(new_V_Reference - V_Reference)
    }
  }
  
  print(i)
  #add  prediction to Sm
  Sm <- rbind(Sm, Sm_prediction)
 
 
}

id <- endingIndex:(endingIndex+N)

pred <- Sm$data[id]
real <- as.data.frame(mainData$data[id], row.names = NULL)

plot(pred, type="l",col=2,ylim = range(pred,real),lty=3)
lines(real,lwd=2)

Sync par honeybunny

 
Maxim Dmitrievsky:

Le sujet du MoD est descendu au niveau du COC .......

Quand on ne sait pas grand-chose, il n'y a que des merveilles...