Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 2630

 
Maxim Dmitrievsky #:
Algo creativo, no se sabe de antemano.
Las operaciones de una TS rentable deberían indicar un patrón. Si sólo utiliza el precio/tiempo, la selección/aproximación parece posible
Todo se puede aproximar, y el ST es una lógica clara en el código, sin aproximaciones
 
mytarmailS #:
Todo puede ser aproximado, pero la CT es una lógica clara en el código, sin aproximaciones.
No sabemos la lógica exacta, ahora que lo pensamos... no es la descompilación. Eso deja a los difusos, "a imagen y semejanza". Entrenadores de abibas
 
Maxim Dmitrievsky #:
No sabemos la lógica exacta, ya sabes... no es una descompilación. Eso deja a los difusos, "a imagen y semejanza". Entrenadores de abibas

Por lo tanto, si se toma la estrategia de intersección de dos coches y no se da una señal directa de la intersección para el modelador.

Es bastante bueno, incluso me sorprende, pero es un algoritmo primitivo...

azul para la señal original, rojo para el prefijo.

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     


Y si no lo normalizas...

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

Por lo tanto, si se toma la estrategia de intersección de dos coches y no se da una señal directa de la intersección para el modelador.

Es bastante bueno, incluso me sorprende, pero es un algoritmo primitivo...

azul para la señal original, rojo para el prefijo.


Y si no lo normalizas...

Así que está bien, tenemos que averiguar cómo analizar los informes y tratar de hacer un simple TC en ellos como su MAs, sí. Estoy un poco ocupado en este momento, pero es un tema divertido.
 
mytarmailS #:

Por lo tanto, si se toma la estrategia de intersección de dos coches y no se da una señal directa de la intersección para el modelador.

Es bastante bueno, incluso me sorprende, pero es un algoritmo primitivo...

El azul es la señal original, el rojo es el predictor.


Y si no lo normalizas...

No se puede saber de antemano qué Asesor Experto MA utiliza y qué períodos tiene. O se utiliza cualquier otro indicador.
Intente entrenar el modelo no en el MA (X) sino en las cotizaciones en bruto (x) por ejemplo en 100 barras (no sabe los períodos de MA de la caja negra, sólo puede adivinar cuántas barras se han utilizado).

Bueno, la Y es la que te da tu examinador.

 
elibrarius #:

No se puede saber de antemano qué, experto MA está utilizando y qué períodos. O cualquier otro indicador utilizado.

No me digas lo que puedo o no puedo hacer, di "no sé cómo puedes hacerlo". Eso es más honesto.

 
elibrarius #:


Intente entrenar el modelo con las cotizaciones en bruto (x) en lugar de con las MAhs (X)

El crudo tampoco está mal.

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

tampoco está mal en crudo

Eso es más interesante...
 
mytarmailS #:

Tampoco están mal los crudos.

¿Realmente necesita MO?

 

Mis resultados. Quien pueda descifrarlo, bien hecho, he olvidado lo que es.

Otro ejemplo de prueba, cruce de ma y precio. La entrada son los incrementos de varias últimas barras, la salida es la dirección del comercio (1-bay, 0-sell). Parámetros de la red subyacente: 1 Capa densa con tanh. 1 epoch, batch=32. win - número de entradas, per - periodo MA, total - tamaño de la muestra de entrenamiento. La red se entrena en 1 época para que no haya muestras repetidas durante el entrenamiento. La validación se basa en la muestra de entrenamiento invertida verticalmente (*-1). La prueba se realiza con una muestra independiente. Todos ellos son iguales al total. En per<=win la red muestra una alta precisión, lo que era necesario para demostrar que la red es capaz de buscar patrones ocultos.

Para redes pequeñas (<1000 neuronas) el cálculo en cpu es más rápido que en gpu. Con batch=8192 el cálculo tarda lo mismo. Este caso de prueba con 1 y 100 neuronas ocultas se calcula en el mismo tiempo. Para los recuentos de doble y simple precisión de la cpu en el mismo tiempo, los resultados son comparables. Los diferentes tipos de activación cuentan más o menos con el mismo tiempo y dieron resultados comparables. El tamaño de las ganancias no afecta mucho al tiempo. total=10^6 en batch=1 cuenta durante 18 minutos. La relación entre el lote y el tiempo es lineal.

Precisión del tamaño de la muestra. batch=1 , per=100, win=100. Primera columna - tamaño de la muestra (total), 2 - tiempo min.seg, 3 - precisión en la prueba, 4 - precisión en el entrenamiento, 5 - precisión en la validación.
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

Añadir ruido a la entrada. total=10^6, batch=32 , per=10, win=10. Primera columna - fracción de ruido de entrada, 2 - precisión en la prueba, 3 - precisión en la traza, 4 - precisión en la validación.

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 y error. total=10^6, batch=32 , per=100. precisión en la prueba, precisión en el tren, precisión en la validación.

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

victoria=60: 92,0 91,6 91,9

win=50: 88,6 88,2 88,6

victoria=20: 74,7 74,4 74,7

Gráficos de pesos. 1 neurona de entrada. ma(100) 100 entradas a la izquierda, ma(50) 100 entradas a la derecha