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

 
Maxim Dmitrievsky #:
C'est un peu créatif, on ne sait pas à l'avance.
Les transactions d'un TS rentable devraient indiquer un modèle. S'il n'utilise que le prix et le temps, alors la sélection et l'approximation semblent possibles.
Tout peut être approximé, et le TS est une logique claire dans le code, sans approximations.
 
mytarmailS #:
Tout peut être approximé, mais TC est une logique claire dans le code, sans approximations.
Nous ne connaissons pas la logique exacte, en y réfléchissant... ce n'est pas une décompilation. Ce qui laisse flou, "à l'image et à la ressemblance". formateurs d'abibas
 
Maxim Dmitrievsky #:
Nous ne connaissons pas la logique exacte, vous savez... ce n'est pas une décompilation. Ce qui laisse flou, "à l'image et à la ressemblance". formateurs d'abibas

Ainsi, si vous prenez la stratégie de l'intersection de deux voitures et que vous ne donnez pas un signe direct de l'intersection au modéliste.

C'est assez bon, je suis même surpris, mais c'est un algorithme primitif...

bleu pour le signal original, rouge pour le préfixe.

Reference
Prediction   0   1
         0 106   4
         1   1  89
                                          
               Accuracy : 0.975           
                 95% CI : (0.9426, 0.9918)
    No Information Rate : 0.535           
    P-Value [Acc > NIR] : <2 e-16          
                                          
                  Kappa : 0.9496     


Et si vous ne le normalisez pas...

Prediction   0   1
         0  96   0
         1   0 104
                                     
               Accuracy : 1          
                 95% CI : (0.9817, 1)
    No Information Rate : 0.52       
    P-Value [Acc > NIR] : < 2.2 e-16  
                                     
                  Kappa : 1          
x <- cumsum(rnorm(10000))

m5 <- TTR::SMA(x,5)
m15 <- TTR::SMA(x,15)

X <- matrix(ncol = 20,nrow = length(x))

for(i in 20:length(x)){
  ii <- (i-19):i
  X[i,] <- m5[ii] - m15[ii]
}


Yn <- (m5>m15)*1
Y <-  as.factor(Yn)

tr <- 50:9800
ts <- 9801:10000

library(randomForest)
rf <- randomForest(Y[tr]~., X[tr,])
pr <- predict(rf ,X[c(tr,ts),])

prN <- as.numeric(as.character(pr))

par(mar=c(2,2,0,0))
layout(1:3, heights = c(10,1,1)) #  Heights of the two rows
      
plot(tail(x,200),t="l",col=8)
lines(tail(m5[c(tr,ts)],200),col=2,lwd=1)
lines(tail(m15[c(tr,ts)],200),col=4,lwd=1)
plot(tail(Yn,200),t="h",col=4,lwd=2)
plot(tail(prN,200),t="h",col=2,lwd=2)


caret::confusionMatrix(predict(rf ,X[ts,]) , Y[ts])
 
mytarmailS #:

Ainsi, si vous prenez la stratégie de l'intersection de deux voitures et que vous ne donnez pas un signe direct de l'intersection au modéliste.

C'est assez bon, je suis même surpris, mais c'est un algorithme primitif...

bleu pour le signal original, rouge pour le préfixe.


Et si vous ne le normalisez pas...

Donc c'est bon, nous devons trouver comment analyser les rapports et essayer de faire un simple CT sur eux comme vos MAs, oui. Je suis un peu occupé en ce moment, mais c'est un sujet amusant.
 
mytarmailS #:

Ainsi, si vous prenez la stratégie de l'intersection de deux voitures et que vous ne donnez pas un signe direct de l'intersection au modéliste.

C'est plutôt bon, je suis même surpris, mais c'est un algorithme primitif...

bleu pour le signal original, rouge pour le préfixe.


Et si vous ne le normalisez pas...

Vous ne pouvez pas savoir à l'avance quel MA Expert Advisor utilise et quelles sont ses périodes. Ou tout autre indicateur est utilisé.
Essayez d'entraîner le modèle non pas sur la MA (X) mais sur les cotations brutes (x), par exemple sur 100 barres (vous ne connaissez pas les périodes de la MA de la boîte noire, vous pouvez seulement deviner combien de barres ont pu être utilisées).

Eh bien, le Y est celui donné par votre examinateur.

 
elibrarius #:

Vous ne pouvez pas savoir à l'avance ce que l'expert MA utilise et à quelles périodes. Ou tout autre indicateur utilisé.

Ne me dites pas ce que je peux et ne peux pas faire, dites "je ne sais pas comment vous pouvez le faire". C'est plus honnête.

 
elibrarius #:


Essayez d'entraîner le modèle sur les cotations brutes (x) au lieu de MAhs (X).

Le brut n'est pas mal non plus.

 Reference
Prediction   0   1
         0  72   2
         1   5 121
                                          
               Accuracy : 0.965           
                 95% CI : (0.9292, 0.9858)
    No Information Rate : 0.615           
    P-Value [Acc > NIR] : <2 e-16          
                                          
                  Kappa : 0.9255     
 
mytarmailS #:

pas mal non plus en brut

C'est plus intéressant...
 
mytarmailS #:

Pas mal non plus pour les crus.

A-t-il vraiment besoin de MO ?

 

Mes résultats. Celui qui peut le déchiffrer, bien joué, j'ai oublié ce qui est quoi.

Un autre exemple de test, le croisement du ma et du prix. L'entrée est l'incrément de plusieurs dernières barres, la sortie est le sens du trade (1-bay, 0-sell). Paramètres du réseau sous-jacent : 1 Couche dense avec tanh. 1 époch, batch=32. win - nombre d'entrées, per - période MA, total - taille de l'échantillon d'entraînement. Le réseau est formé en une seule époque, de sorte qu'il n'y a pas d'échantillons répétés pendant la formation. La validation est basée sur l'échantillon d'entraînement inversé verticalement (*-1). Le test fonctionne sur un échantillon indépendant distinct. Tous sont égaux au total. À per<=win, le réseau montre une grande précision, ce qui était nécessaire pour prouver que le réseau est capable de rechercher des modèles cachés.

Pour les petits réseaux (<1000 neurones) le calcul sur cpu est plus rapide que sur gpu. Avec batch=8192, le calcul prend le même temps. Ce cas de test avec 1 et 100 neurones cachés est calculé en même temps. Pour les comptages en double précision et en simple précision du cpu dans le même temps, les résultats sont comparables. Les différents types d'activation comptent pendant à peu près le même temps et ont donné des résultats comparables. La taille du lot n'affecte pas beaucoup le temps. total=10^6 à batch=1 compte pour 18 minutes. La relation entre le lot et le temps est linéaire.

Précision de la taille de l'échantillon. batch=1 , per=100, win=100. Première colonne - taille de l'échantillon (total), 2 - temps min.sec, 3 - précision sur le test, 4 - précision sur le train, 5 - précision sur la validation.
1м 18.49 99. 98.7 99.
100k 1.54 98.5 97.3 98.6
10k 0.11 97.8 88.4 98.1
1k 0.01 71.2 62.1 66.5

Ajout de bruit à l'entrée. total=10^6, batch=32 , per=10, win=10. Première colonne - fraction de bruit de l'entrée, 2 - précision sur le test, 3 - précision sur la trace, 4 - précision sur la validation.

0,001 99,8 98,1 99,8
0,01 99,6 98,2 99,6
0,1 96,8 96,1 96,8
1 74,9 74,2 75,1

Nombre d'entrées et erreur. total=10^6, batch=32 , per=100. précision sur le test, précision sur le train, précision sur la validation.

win=150 : 99.5 98.7 99.5

win=100 : 99.6 98.8 99.6

win=90 : 98.9 98.2 98.9

win=80 : 97.2 96.6 97.2

win=70 : 94.8 94.3 94.8

win=60 : 92.0 91.6 91.9

win=50 : 88.6 88.2 88.6

win=20 : 74.7 74.4 74.7

Graphes de poids. 1 neurone d'entrée. ma(100) 100 entrées à gauche, ma(50) 100 entrées à droite