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

 
Yousufkhodja Sultonov:

Las MA están diseñadas por naturaleza para engañar a los que no entienden las leyes del mercado. Y todo el mundo ha caído en la trampa. Sorprendentemente, es un hecho. Mira a tu alrededor y te darás cuenta de que el MA es una propiedad de todas las series numéricas, independientemente de si son de mercado o aleatorias. Despertad a los comerciantes, no os dejéis engañar.

Yo lo llamaría paranoia).

Los MA son el filtro más común que no es culpable de nada. Cualquier método de mate es bueno donde y para donde sea aplicable.

 
Maxim Dmitrievsky:

¿cuál es la pregunta real sobre la búsqueda de características?

en nuestro caso sólo hay precio. Cualquier transformación de los precios es una regularidad a priori, en forma de una especie de "memoria" del proceso (indicadores construidos a lo largo de n períodos). Es decir, si no conocemos las regularidades, sólo podemos introducir el precio, incrementos con diferentes periodos para tener en cuenta los procesos de memoria.

¿qué puede ser, además de los incrementos de precio? o no, ¿qué está eligiendo ahí tan escrupulosamente, hay algo? :)

Hay un proceso de atvoregresión con orden, puedes hacer lo mismo a través de NS. Me parece que eso es lo único que se puede enseñar. Me refiero a tomar modelos econométricos y ampliarlos

IMHO... por eso ni siquiera intento recoger fichas :) y los nervios están bien (pero no realmente)

en otras palabras, qué podemos encontrar en el precio: tendencia, estacionalidad, ciclicidad, ruido

Tú mismo publicaste un ejemplo hace un par de páginas con una neurona que aprende a reconocer una espiral. Las dos características estándar requieren 3 capas ocultas de neuronas. Y si añades más funciones, una capa es suficiente.
Así que aquí también se puede alimentar a una neurona con cien incrementos pasados y procesarlo todo en una docena de capas ocultas, o conseguir unas buenas características caseras que una red de una sola capa de los años 90 puede manejar.

 

He encontrado otro paquete interesante para cribar predictores. Se llama FSelector. Ofrece una docena de métodos para filtrar los predictores, incluida la entropía.

Obtuve el archivo con los predictores y el objetivo dehttps://www.mql5.com/ru/forum/86386/page6#comment_2534058.


library(FSelector)
library(corrplot)

load("ALL_cod.RData")
trainTable <- Rat_DF1

PREDICTOR_COLUMNS_SEQ <- 1:27
TARGET_COLUMN_ID     <- 28

targetFormula <- as.simple.formula(colnames(trainTable)[PREDICTOR_COLUMNS_SEQ], colnames(trainTable)[TARGET_COLUMN_ID])

impMatrix <- matrix(NA, nrow = 0, ncol = length(PREDICTOR_COLUMNS_SEQ))

impMatrix <- rbind(impMatrix, colnames(trainTable)[PREDICTOR_COLUMNS_SEQ] %in% cfs(targetFormula, trainTable))
rownames(impMatrix)[nrow(impMatrix)] <- "cfs"
impMatrix <- rbind(impMatrix, chi.squared(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "chi.squared"
impMatrix <- rbind(impMatrix, colnames(trainTable)[PREDICTOR_COLUMNS_SEQ] %in% consistency(targetFormula, trainTable))
rownames(impMatrix)[nrow(impMatrix)] <- "consistency"
if(class(trainTable[,TARGET_COLUMN_ID]) != "factor"){
  impMatrix <- rbind(impMatrix, linear.correlation(targetFormula, trainTable)[[1]])
  rownames(impMatrix)[nrow(impMatrix)] <- "linear.correlation"
  impMatrix <- rbind(impMatrix, rank.correlation(targetFormula, trainTable)[[1]])
  rownames(impMatrix)[nrow(impMatrix)] <- "rank.correlation"
}
impMatrix <- rbind(impMatrix, information.gain(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "information.gain"
impMatrix <- rbind(impMatrix, gain.ratio(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "gain.ratio"
impMatrix <- rbind(impMatrix, symmetrical.uncertainty(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "symmetrical.uncertainty"
impMatrix <- rbind(impMatrix, oneR(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "oneR"
impMatrix <- rbind(impMatrix, random.forest.importance(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "random.forest.importance"
impMatrix <- rbind(impMatrix, relief(targetFormula, trainTable)[[1]])
rownames(impMatrix)[nrow(impMatrix)] <- "relief"

impMatrix

for(i in 1:nrow(impMatrix)){
  if(length(unique(impMatrix[i,]))==1){
    impMatrix[i,] <- 0
  }else{
    impMatrix[i,] <- -1 + (impMatrix[i,]-min(impMatrix[i,]))/(max(impMatrix[i,])-min(impMatrix[i,]))*2
  }
}

while(nrow(impMatrix) < ncol(impMatrix)){
  impMatrix <- rbind(impMatrix, 0)
}
while(ncol(impMatrix) < nrow(impMatrix)){
  impMatrix <- cbind(impMatrix, 0)
}

impMatrix <- as.matrix(impMatrix)
colnames(impMatrix) <- colnames(trainTable)[PREDICTOR_COLUMNS_SEQ]

corrplot(impMatrix)

La evaluación del predictor por cada método la mostré en el gráfico del final.

El azul es bueno, el rojo es malo (para el corrplot los resultados se han escalado a [-1:1], para la evaluación exacta ver los resultados de cfs(targetFormula, trainTable), chi.squared(targetFormula, trainTable), etc.)
Puedes ver que X3, X4, X5, X19, X20 están bien evaluados por casi todos los métodos, puedes empezar con ellos, y luego intentar añadir/quitar más.

Sin embargo, los modelos en rattle no pasaron la prueba con estos 5 predictores en Rat_DF2, de nuevo el milagro no se produjo. Es decir, incluso con los predictores restantes, tiene que ajustar los parámetros del modelo, hacer una validación cruzada, añadir/eliminar predictores usted mismo.

 
SanSanych Fomenko:

¿Podría ejecutar una ventana en el resultado de la fusión y dar gráficos:

  • valores de entropía
  • Resultados de adfTest
  • Resultados de ArchTest

Tomó sólo eurusd m1 para alrededor de enero de este año, y una ventana deslizante de 1 día.

Por lógica, si la entropía está creciendo, entonces se debe suspender la negociación, y seguir negociando con una entropía baja. Pero aquí tenemos una tendencia a baja entropía por alguna razón, aunque es más fácil operar en plano.

(se ha corregido una errata en el código adjunto, descárgalo de nuevo si ya has tenido tiempo de descargar el antiguo)

Archivos adjuntos:
 
Dr. Trader:

Hace un par de páginas publicaste un ejemplo con una red neuronal que aprendía a detectar una espiral. Las dos características estándar requieren 3 capas ocultas de neuronas. Y si añades más funciones, una capa es suficiente.
Así que aquí también se puede alimentar a una neurona con cien incrementos pasados y procesarlo todo en una docena de capas ocultas, o conseguir unas buenas características caseras que una red de una capa de los años 90 puede manejar.

Lo entiendo, pero la espiral no cambia en el tiempo... piensa que es un falso problema el que resuelves, cuando la espiral en el tiempo es ahora un cuadrado y ahora una elipse

y la validación cruzada no ayudará porque las transiciones de estado son aleatorias.

 
Dr. Trader:

Lógicamente, si la entropía aumenta, hay que dejar de operar, y seguir operando cuando la entropía es baja. Pero aquí, cuando la entropía es baja, por alguna razón está en tendencia, aunque es más fácil operar en plano, lo cual es inusual.


Por eso digo que te tomes tu tiempo.

Con una entropía alta, obtenemos la distribución normal con la negociación en contra de la tendencia.

A baja entropía - distribución de Pareto, tendencia, "memoria" - como quiera llamarlo.

Resulta que tienes algunas cosas preparadas en R, es más fácil para ti. Yo, por mi parte, tengo mucho trabajo que hacer ahora para dar cuenta de la no entropía, así que me he retirado de las discusiones del foro.

Mantengo mi opinión: la contabilidad de la entropía es la clave de todo.

 
Maxim Dmitrievsky:

y la validación cruzada no ayudará porque las transiciones de estado son aleatorias

Si las transiciones de estado son aleatorias, entonces el proceso es markoviano y todo este hilo del foro puede ser eliminado por inútil :)

Pero yo, por ejemplo, creo que el proceso no es markoviano. Alexander parece estar de acuerdo, él es mucho mejor que yo en las estadísticas, yo confiaría en él.

 
Dr. Trader:

Si las transiciones de estado son aleatorias, entonces el proceso es markoviano y todo este hilo del foro se puede borrar por inútil :)

Pero yo, por ejemplo, creo que el proceso no es markoviano. Alexander parece estar de acuerdo, conoce las estadísticas mucho mejor que yo, yo confiaría en él.

Ya escribí: el azar a nivel local, no se puede tener en cuenta a todos sin pasar a un gran retraso u otra escala, y ahí el proceso vuelve a ser predecible. Un PERO, la población general es desconocida y el número de traslados a otra escala es limitado. Por eso Alexander utiliza garrapatas. Así es, pero incluso no siempre funcionará cuando nos encontremos con la insuficiencia de la historia debido a su ausencia, y como consecuencia, la ausencia de una idea clara de los patrones de la PA investigada.

En una palabra, algunas transiciones a nivel local no pueden predecirse en absoluto, se requiere otro nivel de representación

 
Dr. Trader:

Si las transiciones de estado son aleatorias, entonces el proceso es markoviano, y todo este hilo del foro se puede borrar por inútil :)

Pero yo, por ejemplo, creo que el proceso no es markoviano. Alexander parece estar de acuerdo, conoce las estadísticas mucho mejor que yo, yo confiaría en él.

Aunque no uso redes neuronales, pero leí el hilo, porque Feynman estaba convencido de que es posible predecir el movimiento posterior de la partícula del estado A al estado B (exactamente de estado a estado, y no sólo extrapolar al infinito).

Para ello, utilizó como entrada los incrementos habituales entre los estados actual y anterior, y tuvo en cuenta un montón de parámetros adicionales. Shelepin L.A. fue el primero en empezar a usar la no entropía y murió por alguna razón... no ha puesto fin a la obra. Por lo tanto, nos corresponde a nosotros terminar este tema.

 

¡Sí! Se me olvidó decirlo.

Los estados se consideran un conjunto de datos que caracterizan a una partícula casi por completo. Es decir, se trata de un conjunto de datos, sencillamente - volumen de muestra, con sus características - curtosis, asimetría, no entropía, etc.

Es decir, con la confianza de R.Feynman es posible afirmar, que habiendo definido correctamente el volumen de la muestra para el par concreto, habiendo calculado en la historia los valores medios característicos de estos coeficientes para esta muestra, es posible predecir, que teniendo en la actualidad un cierto conjunto de parámetros, en un cierto intervalo de tiempo, el sistema pasará a un estado con sus parámetros de estado estacionario.

Esto es lo que espero de este hilo. Si necesita ayuda para determinar el tamaño adecuado de la muestra, póngase en contacto conmigo e intentaré ayudarle.

Razón de la queja: