Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2630

 
Maxim Dmitrievsky #:
Meio criativo, você não sabe de antemão.
Os negócios de um TS rentável devem indicar um padrão. Se só utiliza preço/tempo, então a seleção/aproximação parece possível
Qualquer coisa pode ser aproximada, e o TS é uma lógica clara no código, sem aproximações
 
mytarmailS #:
Qualquer coisa pode ser aproximada, mas o TC é uma lógica clara no código, sem aproximações.
Não sabemos a lógica exata, pensando bem... não é descompilação. Isso deixa confuso, "na imagem e semelhança". treinadores de abibas
 
Maxim Dmitrievsky #:
Não sabemos a lógica exata, você sabe... não é descompilação. Isso deixa confuso, "na imagem e semelhança". treinadores de abibas

Portanto, se você pegar a estratégia de cruzamento de dois carros e não der um sinal direto do cruzamento para o modelista.

É muito bom, até me surpreende, mas é um algoritmo primitivo...

azul para o sinal original, vermelho para o prefixo.

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     


E se você não normalizá-lo...

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 #:

Portanto, se você pegar a estratégia de cruzamento de dois carros e não der um sinal direto do cruzamento para o modelista.

É muito bom, até me surpreende, mas é um algoritmo primitivo...

azul para o sinal original, vermelho para o prefixo.


E se você não normalizá-lo...

Então está tudo bem, preciso descobrir como analisar os relatórios e tentar fazer um TC simples sobre eles como seus MA, sim. Estou um pouco ocupado no momento, mas é um tópico divertido.
 
mytarmailS #:

Portanto, se você pegar a estratégia de cruzamento de dois carros e não der um sinal direto do cruzamento para o modelista.

É muito bom, até me surpreende, mas é um algoritmo primitivo...

azul para o sinal original, vermelho para o prefixo.


E se você não normalizá-lo...

Você não pode saber antecipadamente o que o MA Expert Advisor usa e quais períodos ele tem. Ou quaisquer outros indicadores são utilizados.
Tente treinar o modelo não no MA (X) mas em aspas brutas (x) por exemplo em 100 barras (você não conhece os períodos de MA a partir da caixa preta, você só pode adivinhar quantas barras podem ter sido usadas).

Bem, o Y é aquele dado por seu examinador.

 
elibrarius #:

Você não pode saber com antecedência o que, MA especialista está usando e quais períodos. Ou quaisquer outros indicadores utilizados.

Não me diga o que posso e não posso fazer, diga "não sei como você pode fazer". Isso é mais honesto.

 
elibrarius #:


Tente treinar o modelo com aspas em bruto (x) em vez de MAhs (X)

cru também não é ruim.

 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 #:

nada mal em bruto também

Isso é mais interessante...
 
mytarmailS #:

Nada mal para os crus também.

Precisa realmente de MO?

 

Meus resultados. Quem consegue decifrá-lo, bem feito, esqueci o que é o quê.

Outro exemplo de teste, cruzamento de ma e preço. A entrada são incrementos de várias últimas barras, a saída é a direção comercial (1-bay, 0-sell). Parâmetros da rede subjacente: 1 Camada densa com tanh. 1 época, lote=32. ganho - número de entradas, por - período MA, total - tamanho da amostra de treinamento. A rede é treinada em 1 época para que não haja repetição de amostras durante o treinamento. A validação é baseada na amostra de treinamento invertida verticalmente (*-1). O teste é realizado em uma amostra independente separada. Todos eles são iguais ao total. Em per<=win a rede mostra alta precisão, o que era necessário para provar, a rede é capaz de procurar padrões ocultos.

Para redes pequenas (<1000 neurônios), o cálculo na cpu é mais rápido do que na gpu. Com batch=8192, o cálculo leva o mesmo tempo. Este caso de teste com 1 e 100 neurônios ocultos é computado ao mesmo tempo. Para cpu conta com dupla e única precisão ao mesmo tempo, os resultados são comparáveis. Diferentes tipos de ativação contam durante aproximadamente o mesmo tempo e deram resultados comparáveis. O tamanho do ganho não afeta muito o tempo. total=10^6 em lote=1 conta durante 18 minutos. A relação entre o lote e o tempo é linear.

Precisão do tamanho da amostra. batch=1 , per=100, win=100. Primeira coluna - tamanho da amostra (total), 2 - tempo min.seg., 3 - precisão no teste, 4 - precisão no trem, 5 - precisão na validação.
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

Adicionando ruído à entrada. total=10^6, lote=32 , per=10, win=10. Primeira coluna - fração de ruído de entrada, 2 - precisão no teste, 3 - precisão no rastreamento, 4 - precisão na validação.

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

Número de entradas e erro. total=10^6, lote=32 , per=100. precisão no teste, precisão no trem, precisão na validação.

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

Gráficos de pesos. 1 neurônio de entrada. ma(100) 100 entradas à esquerda, ma(50) 100 entradas à direita