L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 2642

 
Maxim Dmitrievsky #:
Combinée à d'autres méthodes, elle pourrait donner des résultats.
Qu'est-ce que c'est ?
 
mytarmailS #:
Qu'est-ce qu'il y a ?
Je ne l'ai pas encore fait. J'ai une logique compliquée, je dois trouver où la mettre.
 

c'est le genre de signe que j'ai reçu. Corréler parce que la base est constituée d'incréments d'ordres de grandeur proches


exemple de formule : prix - MA(n) * std(n) * coef, où MA et std - moyenne mobile et écart-type d'ordre arbitraire et coefficient de nivellement, plus il est élevé - plus la série est stationnaire. Dans le cas présent, il s'agit de 50000.

Pour une raison quelconque, ma MO montre une meilleure stabilité que sur les incréments.

avec un coefficient de 20.

Il s'avère que c'est quelque chose de similaire à la différence fractionnaire, mais qui compte instantanément.

Peut-être que quelqu'un peut penser à d'autres options

 
Maxim Dmitrievsky #:

c'est le genre de signe que j'ai obtenu. Corrélé, parce que la base est constituée d'incréments d'ordres de grandeur proches.

Que sont ces courbes en général ?

Maxim Dmitrievsky #:

peut-être que quelqu'un proposera d'autres options

Nous y voilà, la régression symbolique à la rescousse

 
mytarmailS #:

Qu'est-ce qui se passe avec les balles courbes de toute façon ?

Eh bien, la régression symbolique vient à la rescousse.

La formule est écrite.
Suggérez une variante pour rapprocher les citations de la série stationnaire en utilisant cf
 
Maxim Dmitrievsky #:
La formule s'écrit
Suggérer une variante pour rapprocher les citations de la série stationnaire au moyen de la méthode cf.

Je vais lancer quelque chose, je vais vous montrer un exemple plus simple sans SR.

 
mytarmailS #:

Je vais simplement créer quelque chose et vous montrer un exemple plus simple sans SR.

On ne peut pas se contenter d'une seule variante, il faut construire des attributs, les vérifier et s'entraîner sur leur base.

Mais les signes ne sont pas stupides, ils doivent au moins avoir une certaine signification, sinon on peut continuer indéfiniment.
 
Maxim Dmitrievsky #:

Avec le SR, il faut plus de temps pour coder et planifier, alors pour des raisons de simplicité, de rapidité et de clarté, je l'ai simplifié...

Au lieu de créer une formule en temps réel, je crée un "résultat de formule" - une courbe - que j'utilise ensuite comme cible pour le modèle.


Je crée une fonction de fitness qui maximise la corrélation entre le prix et le résultat du modèle, mais le résultat du modèle a une limite : il ne peut être compris qu'entre -1 et 1.

En d'autres termes, nous obtenons une série qui devrait être en corrélation avec le prix, mais qui est "bridée" dans les limites des valeurs statiques. Si vous avez besoin d'une véritable statsionarité selon Dickie Fuller et ainsi de suite, il vous suffit de modifier la fonction d'aptitude pour qu'elle corresponde à vos besoins.



créer des données et entraîner le modèle à l'aide de la génétique

par(mar=c(2,2,2,2))
#  для простоты Создаю цену 
P <- cumsum(rnorm(300))
plot(P,t="l")

hankel <- function(x,n) embed(x, n)[ ,n:1]
#  Создаю данные для обучения Х ,скользящее окно виде матрицы
X <- t(apply(hankel(P,11),1,function(x) cumsum(diff(x))))
P <- tail(P,nrow(X))

#  Делаю разметку индексов для трейн и тест и валидации
tr <- 1:100
ts <- 1:200
al <- 1:nrow(X)

library(randomForest)
#  Создаю фитнес сункцию , подбираем генетикой для фореста такой таргет чтобы 
#  на выходе был максимально коррелированый с ценой ряд
fit <- function(Y){
set.seed(123)
rf <- predict(  randomForest(Y~.,X[tr,],ntree=100) ,   X[ts,])
return( cor(rf, P[ts]) )}

library(GA)
GA <- ga(type = "real-valued", 
         fitness =  fit,
         lower = rep(-1,100), 
         upper = rep(1,100), 
         popSize = 100,
         maxiter = 100,
         run = 40)
plot(GA)
GA_Y <- tail(GA@solution,1)[1,]

tester le modèle.

#  Получаем нашу модель которая делает то что нужно
set.seed(123)
rf <- predict(  randomForest(GA_Y~.,X[tr,],ntree=100) ,   X[al,])

layout(1:2)
plot(P,t="l",main="original price") ; abline(v=c(100,200),lty=2,col=c(3,4))
plot(rf,t="l",main="model out") ; abline(v=c(100,200),lty=2,col=c(3,4))
abline(h=0,col=3,lty=3)

layout(1:2)
plot(P,t="l",main="original price") ; abline(v=c(100,200),lty=2,col=c(3,4))
plot(cumsum(rf),t="l",main="model out cumsum") ; abline(v=c(100,200),lty=2,col=c(3,4))

Les lignes verticales séparent les phases d'entraînement, de test et de validation.


Comme vous pouvez le voir sur l'image, le modèle a appris à prendre le prix en entrée, et la sortie est une série statistique qui est en corrélation avec le prix.

Pour plus de clarté, nous pouvons faire une somme cumulative de la sortie du modèle.


comme ce site )))) Et vous n'avez pas besoin d'inventer quoi que ce soit, tout peut être fait automatiquement.

 
mytarmailS #:

Avec SR, vous avez besoin de plus de temps pour le code et la planification, c'est pourquoi, pour des raisons de simplicité, de rapidité et de clarté, j'ai simplifié les choses.

Au lieu de créer une formule en temps réel, je crée un "résultat de formule" - une courbe - que j'utilise ensuite comme cible pour le modèle.


Je crée une fonction de fitness qui maximise la corrélation entre le prix et le résultat du modèle, mais le résultat du modèle a une limite : il ne peut être compris qu'entre -1 et 1.

En d'autres termes, nous obtenons une série qui devrait être en corrélation avec le prix, mais qui est "bridée" dans les limites des valeurs statiques. Si nous avons besoin de la statsionarité réelle selon Dickie Fuller et d'autres, il nous suffit de modifier la fonction d'aptitude pour qu'elle corresponde à ce dont nous avons besoin.



créer des données et entraîner le modèle avec la génétique

valider le modèle

Les lignes verticales indiquent la séparation entre l'entraînement, le test et la validation.


Comme vous pouvez le voir dans l'image, le modèle a appris à prendre le prix en entrée, et la sortie est une série statistique qui est en corrélation avec le prix.

Pour plus de clarté, nous pouvons faire une somme cumulative à partir de la sortie du modèle.


comme ceci )))) Et vous n'avez pas besoin de penser à quoi que ce soit, tout peut être fait sur la machine.

Intéressant, j'essaierai d'y réfléchir plus tard, c'est un bloody mary aujourd'hui, c'est difficile de réfléchir.
 
Maxim Dmitrievsky #:
Intéressant, j'essaierai d'y réfléchir plus tard, on a un bloody mary aujourd'hui, c'est difficile de réfléchir.

Je me demande combien de lignes cela prendrait en python.....

probablement des milliers en µl))))))))))))))))))))))))))))