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

 
mytarmailS:

Aquí está incluso este chico sin sentido hablando, mira desde el minuto 10

https://www.youtube.com/watch?v=KUdWTnyeBxo&list=PLDCR37g8W9nFO5bPnL91WF28V5L9F-lJL&index=3

En el vídeo, no se trata de aplicar exactamente una serie de Fourier, sino de utilizar alguna función para procesar los datos y transferirlos a otro espacio (transformación del núcleo). Se sugiere convertir las imágenes a la paleta de colores HSL, el sonido al histograma de frecuencias. Todo esto cambiará los datos, pero pueden ser fácilmente restaurados por la función inversa si es necesario. Esta conversión debe tener algún sentido lógico, para que las clases después de la conversión puedan agruparse más fácilmente entre sí en el espacio multidimensional, para simplificar la clasificación. Si después de cualquier transformación las clases estarán aún más dispersas en el espacio que antes - no hay nada bueno en esta acción, sólo será peor.

No es necesario utilizar exactamente Fourier, ya que no se aconseja. Alexey, por ejemplo, sugiere tomar los deltas entre barras, no los valores brutos. Yury en libVMR utilizó diferentes transformaciones matemáticas, es interesante también, mira sus fuentes en java. Puedes descomponer los datos usando el método de componentes principales, y alimentarlos en el componente neuronal, sobre esto SanSanych y yo hemos compartido algunos artículos y ejemplos. Lo que quieres hacer tiene cientos de soluciones, Fourier es sólo una de ellas.

O bien, puedes usar neuronas con docenas de capas, y funcionarán por sí solas sobre los datos en bruto, sin transformaciones del núcleo. Pero habrá muchos problemas de regulación, validación cruzada, etc.

Además, ninguno de estos métodos se librará del problema de la basura de entrada. Basura de entrada -> basura de post-conversión -> basura de salida -> ciruela de fronttest.

 
mytarmailS:

Una pregunta: ¿es posible medir las similitudes entre las funciones mediante la amplitud, la fase y la frecuencia?

¡¡¡ESO ES!!! No me interesa nada más...

Todo el resto escrito sobre Fourier es una consecuencia de la respuesta de CC y no es relevante para mi pregunta

Si las funciones son periódicas, se puede. Si no es periódico, habrá errores al comparar los bordes (al principio - valor 0 del argumento, y al final del período - valor 2*PI del argumento) de las dos funciones.
 
Dr.Trader:

En el vídeo no se trata de aplicar exactamente las series de Fourier, sino de procesar los datos en alguna función para transferirlos a otro espacio (transformación del núcleo).

O simplemente puedes usar neuronas con decenas de capas y que funcionen por sí solas sobre los datos brutos sin necesidad de transformaciones del núcleo.

Las transformaciones del núcleo en este vídeo se seleccionan manualmente mediante la visualización de los pares de predictores. Es decir, se necesita un especialista humano que encuentre visualmente los pares apropiados y seleccione las transformaciones del núcleo adecuadas para ellos.

Dr.Trader:


O simplemente puedes tomar una neurona con docenas de capas, que funcionará por sí misma en los datos en bruto sin ninguna transformación del núcleo.

El vídeo dice que no sólo no funcionará, sino que se confundirá aún más. Además, los métodos de propagación inversa de errores no ajustan prácticamente los pesos en las capas alejadas de la capa de salida: la señal no llega allí, y si llega, es demasiado débil.


Dr.Trader:


Yuri utilizó en libVMR diferentes transformaciones matemáticas, es interesante también, echa un vistazo a su código fuente en java


No son varios, sino que están compilados algorítmicamente por el método de factorización de grupos de argumentos (GMDH) de A.G. Ivakhnenko. Si tomas al azar, es decir, sin ninguna estructura, obtendrás una mierda.


 
Yury Reshetov:
Si las funciones son periódicas, se puede. Si no es periódico, habrá errores al comparar los bordes (al principio - valor 0 del argumento, y al final del período - valor 2*PI del argumento) de dos funciones.

Ya veo, seguirá habiendo distorsión en los extremos y cuanto más cerca del borde más fuerte, lo siento, no encaja....

Dr. Trader.

¿cómo está entrenada su red neuronal?

 

Encontré esto en un sitio web, pero ya no funciona por alguna razón

Tal vez a alguien le interese:

".... Siguiendo tus recomendaciones construí varios modelos de robots, los robots están aprendiendo y reconocen algunas cosas con los nuevos datos, pero los resultados, por desgracia, todavía están lejos de lo que esperaba.

.... Primero he aplicado la aproximación polinómica-armónica a los filtros de paso bajo para obtener el primer conjunto de características secundarias, un filtro para la tendencia a corto plazo y el segundo para la tendencia a largo plazo. Toma las frecuencias, las amplitudes cos y sin y los coeficientes P como características secundarias. ... La red aprendió, pero no tuvo generalización.

...El siguiente paso fue un nuevo modelo: aplicamos un filtro de paso bajo (utilicé un filtro Butterworth de 2º orden) al precio de cierre, aplicamos una aproximación polinómica-armónica, transformamos A*cos(wx)+B*sin(wx) a la forma M*sin(wx+f) y tomamos M y f como atributos secundarios.

.... Y con este modelo conseguí construir una red que tenía muy buenas propiedades de generalización: reconocía correctamente casi todos los datos nuevos.

La aproximación polinómica-armónica lleva mucho tiempo, así que decidí hacer otro modelo: un conjunto de filtros de paso de banda con igual distribución de frecuencias, aplicarlos al filtro LF de precios de cierre y luego aplicarles la transformada de Hilbert. También conseguí hacer una red para el modelo de mercado artificial que reconocía con éxito los nuevos datos.

Después he aplicado este modelo a las cotizaciones reales:

- filtramos el precio de cierre con un filtro LF adaptativo.

- construir un conjunto de filtros de paso de banda para identificar las ondas del mercado.

- aplicar la transformada de Hilbert.

- primer conjunto de atributos secundarios: valores del filtro de paso de banda, valores instantáneos de amplitud y de fase.

- construimos un filtro de paso bajo de precio cercano.

- el segundo conjunto de atributos secundarios - desviación relativa de los precios de cierre y de cierre de la última vela, niveles de soporte y resistencia del valor del filtro LF, volumen relativo en una barra (en relación con el valor medio).

- crear una muestra de entrenamiento.

El resultado es el siguiente: la red aprende pero funciona mal con los datos nuevos. En alguna parte predice los mínimos con precisión, y en otra se olvida de lo que hay que hacer. En comparación con lo que hacía antes, el resultado parece ser de un nivel cualitativamente diferente. Sí. Una cosa más para aclarar, he seguido las reglas generales: número de características de la red de entrada (características secundarias en este caso) < tamaño de la muestra de entrenamiento/10, número de neuronas en una capa oculta que no exceda el número de entradas de la red...". Espero que estos extractos de la carta le den una idea de los posibles enfoques de la recuperación de características.

 
mytarmailS:

Ya veo, seguirá habiendo distorsión en los extremos y cuanto más cerca del borde más fuerte, lástima que no encaje....

La cuestión de si encaja o no es muy trivial. En primer lugar, descomponga la función en series de Fourier y, a continuación, recupérela a partir de las series mediante una transformación inversa. Y comparar la función inicial antes de la descomposición y la restaurada. Si la función reconstruida es fundamentalmente diferente de la función original, es evidente que este método no funcionará.

Para las funciones no periódicas se recomienda utilizar las transformadas wavelet. Yo no lo he probado. Pero a juzgar por la forma en que una imagen es comprimida primero por las ondículas y luego restaurada con algunas distorsiones, pero no perceptibles visualmente en comparación con las distorsiones de las transformadas de Fourier, es bastante obvio que las ondículas son más adecuadas para las series no periódicas en comparación con las transformadas de Fourier. Dado que no tengo experiencia práctica en la aplicación de wavelets a los BP citados, no puedo compartir información útil sobre qué wavelets son las más adecuadas en este caso. Y hay un carro y una pequeña carga de ellos.

mytarmailS:

¿Cómo va tu red neuronal?

¿Depende del tipo de tarea y de los datos? Si le pasas una muestra de números al azar, murmurará: "Basura que entra, basura que sale". Y si le das una muestra de predictores significativos, producirá valores de generalización. No se tarda mucho en entrenar, al menos para una muestra de una docena de predictores y unos cuantos miles de ejemplos.
 
Yury Reshetov:

La cuestión de si funcionará o no es bastante trivial. En primer lugar, descomponga la función en una serie de Fourier y, a continuación, reconstrúyala a partir de la serie resultante mediante una transformación inversa. Y comparar la función original antes de la descomposición y la función reconstruida. Si la función reconstruida es fundamentalmente diferente de la función original, es obvio que este método no funcionará.

Probablemente lo haga.... Primero os cuento lo que estoy haciendo en general y lo que tengo que resolver, y luego me decís vuestras sugerencias al respecto, porque creo que os estoy confundiendo a todos...
 

Un poco de prehistoria....

Empecé por buscar patrones en la historia utilizando el siguiente principio:

1) tenemos el precio actual - sean las últimas 20 velas

2) vamos a la historia y buscamos una situación similar en el pasado (la proximidad se comprobó con la correlación de Pearson y Euclides)

3) cuando encontramos una situación de este tipo, miramos cómo ha terminado: con crecimiento o con declive

4) cuando hemos encontrado muchos análogos de este tipo es posible recoger las estadísticas con cierta prevalencia, por ejemplo hemos encontrado 10 análogos

8 de los cuales terminaron en crecimiento y 2 - en declive, aquí está una predicción de lo que sucederá con el precio :)

Es decir, he hecho algo parecido al "método de recopilación de análogos - previsión sin modelo" de Ivakhnenok,pero mi método es mucho más primitivo

Pues bien, este enfoque ha resultado no funcionar debido a una serie de razones

1) cuantas más velas haya en el vector requerido, menos análogos se podrán encontrar en la historia, en la práctica si se toman todos los precios OHLC y la precisión de la correlación de Pearson >0,93, un vector de 3 velas será el límite, mientras que una previsión normal necesita un vector mucho mayor

2) En la práctica, prácticamente no hay situaciones de precios idénticos en el mercado....

3) Resulta que no podemos aumentar el vector, ya que perderíamos mucha precisión, pero aunque pudiéramos, no encontraríamos un análogo en un vector mayor, ya que no hay situaciones idénticas

La solución se ha encontrado.....

 
Yury Reshetov:

¿Depende de qué tareas y datos? Si le pasas una muestra de números al azar, murmura: "Basura que entra, basura que sale". Y si le das una muestra de predictores significativos, produce valores de generalización. No se tarda mucho en entrenar, al menos para una muestra de una docena de predictores y unos cuantos miles de ejemplos.

¡¡¡¡Saludos!!!! Utilizo LibVMR pero parece que es una versión antigua, porque sigue apareciendo el error "Bad Data". Tengo entendido que hay una nueva versión. ¿Dónde puedo descargarlo? ¿Si es posible?
 
mytarmailS:

Un poco de prehistoria....

Empecé por buscar patrones en la historia utilizando el siguiente principio:

1) tenemos el precio actual - sean las últimas 20 velas

2) Vamos a la historia como un bucle y buscamos una situación similar en el pasado (la proximidad se midió por la correlación de Pearson y Euclides)

¿No está claro? ¿Está tomando los precios como OHLC para los patrones o algún tipo de transformación de los mismos?

La cuestión es que si se toma el OHLC como tal, un patrón similar pero 1.000 pips más alto o más bajo del que se está comparando se diferenciará en la distancia euclidiana más que un patrón completamente disímil pero 10 pips más alto o más bajo del que se está comparando. Y la diferencia será de dos órdenes de magnitud, por lo que el error de comparación también será de dos órdenes de magnitud.