Hipótesis de Fourier - página 11

 
equantis >> :

Así es, vale la pena mantener...

Para cerrar el tema me gustaría mostrar una imagen con resultados típicos:

Azul - precio

Rojo - previsión realizada por el programa con la transformación del coseno desde 0

púrpura - la misma curva, pero calculada a partir del punto de partida de la previsión (100)

Verde - previsión simple basada en la curva de precios (he utilizado la función de predicción incorporada)



Como ya he escrito, el truco está en identificar el modelo. El problema es realmente complicado, no se puede resolver sólo a ojo. Y conceptualmente, si se me permite decirlo, la "predicción en el dominio de la frecuencia" se utiliza en algunas tareas, pero muy específicas.

 
grasn писал(а) >>

Como he escrito antes, el truco está en identificar el modelo. El problema es realmente complicado, no se puede resolver sólo a ojo. Y conceptualmente, si se me permite decirlo, la "predicción en el dominio de la frecuencia" se utiliza en algunas tareas, pero muy específicas.

He pasado casi un mes para desmontar con PF y todo en vano. He intentado predecir cualquier cosa, series temporales, medias móviles, indicadores, pero todos los resultados eran 50-50 (o así).

Intenté implementar tu idea con la transformación discreta del coseno. Desgraciadamente, después de la transformación inversa del coseno, obtuve la siguiente imagen: en la señal restaurada, la última barra (por la que se hizo realmente la predicción) sólo repitió la penúltima barra (la última del conjunto de entrenamiento) con un cierto error pequeño.

Por si acaso, describiré un breve algoritmo de lo que estaba haciendo:

  1. Tomó un conjunto de datos de prueba comenzando con START = 1:FRAME
  2. Se ha seleccionado una ventana WIND para cada conjunto de datos (es decir, el muestreo se ha realizado en el rango START:START+WIND)
  3. Para cada ventana, hizo una transformación de coseno.
  4. Todos los resultados se combinaron en una matriz de tamaño FRAME x WIND en la que las columnas contenían los coeficientes de conversión del coseno para cada frecuencia y las filas contenían los coeficientes de una frecuencia para cada conjunto de datos de prueba
  5. Para cada columna de coeficientes se entrenó una pequeña red neuronal que, basándose en cuatro valores anteriores, predijo muy bien el próximo cambio de la sinusoide en 1 bar. Se recurrió a la red neuronal porque la predicción AR daba resultados muy pobres.

  1. Produjo un conjunto de coeficientes predichos para el conjunto de datos predichos, donde la última barra era el valor deseado. Se realizó una transformada inversa del coseno sobre los coeficientes predichos.

Ahora una pausa... por desgracia, no hay milagros - la barra predicha con un pequeño error repitió la penúltima barra de la secuencia de prueba. Al analizar el resultado descubrí que la primera barra había cambiado un poco, mientras que todas las demás permanecían sin cambios, sólo desplazadas una posición (como debería ser). Pero el último compás simplemente repitió el penúltimo en lugar de las predicciones. (Véase la imagen de arriba).

Tal vez este resultado pueda ser útil para algunos matemáticos, pero para la tarea de predicción del EURUSD resultó ser inútil. Ay. Todavía. )))

 
equantis >> :

Estuve casi un mes tratando de arreglar las cosas con la PF y todo fue en vano. Intenté predecir todo: series de tiempo, media móvil, indicadores, y todos los resultados de las predicciones fueron 50-50 (más o menos).

Intenté implementar tu idea con la transformación discreta del coseno. Desgraciadamente, después de la transformación inversa del coseno, obtuve la siguiente imagen: en la señal restaurada, la última barra (por la que se hizo realmente la predicción) sólo repitió la penúltima barra (la última del conjunto de entrenamiento) con un cierto error pequeño.

Por si acaso, describiré un breve algoritmo de lo que estaba haciendo:

  1. Tomó un conjunto de datos de prueba comenzando con START = 1:FRAME
  2. Se ha seleccionado una ventana WIND para cada conjunto de datos (es decir, el muestreo se ha realizado en el rango START:START+WIND)
  3. Para cada ventana, hizo una transformación de coseno.
  4. Todos los resultados se combinaron en una matriz de tamaño FRAME x WIND en la que las columnas contenían los coeficientes de conversión del coseno para cada frecuencia y las filas contenían los coeficientes de una frecuencia para cada conjunto de datos de prueba
  5. Para cada columna de coeficientes se entrenó una pequeña red neuronal que, basándose en cuatro valores anteriores, predijo muy bien el próximo cambio de la sinusoide en 1 bar. Se recurrió a la red neuronal porque la predicción AR daba resultados muy pobres.

  1. Produjo un conjunto de coeficientes predichos para el conjunto de datos predichos, donde la última barra era el valor deseado. Se realizó una transformada inversa del coseno sobre los coeficientes predichos.

Ahora una pausa... por desgracia, no hay milagros - la barra predicha con un pequeño error repitió la penúltima barra de la secuencia de prueba. Al analizar el resultado descubrí que la primera barra había cambiado un poco, mientras que todas las demás permanecían sin cambios, sólo desplazadas una posición (como debería ser). Pero el último compás simplemente repitió el penúltimo en lugar de las predicciones. (Véase la imagen de arriba).

Tal vez este resultado pueda ser útil para algunos matemáticos, pero para la tarea de predicción del EURUSD resultó ser inútil. Ay. Todavía. )))

Y no he dicho que vaya a haber un milagro. Hay algunas incertidumbres:

Se entrenó una pequeña red neuronal para cada columna con coeficientes, que predijo muy bien el próximo cambio de 1 bar en la sinusoide basándose en los cuatro valores anteriores. Se recurrió a la red neuronal porque la predicción AR daba resultados muy pobres.

No estoy seguro de que una NS sobre 4 números de una serie tan compleja pueda predecir muy bien el futuro. Muy dudoso. Y si lo predice, ¿por qué hay una discrepancia tan grande? ¿Y qué tiene que ver la "onda sinusoidal" con esto? En cuanto al modelo AR, cada curvatura, es en realidad un proceso AR, muy cercano a él en sus propiedades. La identificación de un modelo de este tipo es complicada, se utilizan muchos métodos (curiosamente, más complicados que NS): retroceso y predicción, criterio de Akiache, "maleta", funciones de transferencia autorregresivas, criterios de concordancia y de máxima verosimilitud (y sus variantes), correlación mutua, aproximación estocástica, filtrado (se utiliza también para la identificación del modelo).


Al menos la idea es tan buena como la tuya. :о) Si no funcionó - no funcionó, y sucede, lo siento sinceramente por su tiempo, no puedo ayudar a devolverlo. Pero, por cierto, aquí https://forum.mql4.com/ru/24888/page9 por si acaso te advirtió. Hay muchas sutilezas en este modelo, algunas de las cuales he omitido modestamente. Una de esas sutilezas es que no tiene sentido predecir un recuento único con ese modelo, simplemente no tiene sentido. Sencillamente, no obtendrá la precisión que desea, y nunca lo hará. Hay que predecir en un sentido "estadístico". Así es, en términos literarios.


 

Grasn, de todos modos, ¡muchas gracias por la idea! El proceso fue agradable y no se perdió tiempo)) ¡Y el resultado aún está por llegar!

grasn писал(а) >>

No estoy seguro de que NS en 4 números de una serie tan compleja pueda predecir bien el futuro. Lo dudo mucho. Y si es así, ¿por qué hay una discrepancia tan grande? ¿Y qué tiene que ver la "onda sinusoidal" con esto?

1. Si consideramos el cambio de cada coeficiente DCT, como has escrito, se parece mucho a una especie de "curva-sinusoide" (con frecuencia correspondiente al número de orden del coeficiente, especialmente para las oscilaciones de alta frecuencia), que cambiará su amplitud con el tiempo. He intentado usar AR para predecir "de frente", más o menos como en tu ejemplo en Matcad.

Si consideramos la predicción de "curvulina" para 1 bar, entonces AR (al menos yo he probado todas las fórmulas que tengo en Matlab) da resultados muy inexactos, especialmente para "curvulina-sinusoides" con periodos impares (aunque puede que no los haya probado todos). En este caso una simple red neuronal (en Matlab se implementa con la función newlind (creo que ni siquiera es una red neuronal, sino sólo un solucionador de un conjunto de ecuaciones lineales), al predecir 1 punto, da muy buenos resultados (visualmente).

2. Me parece bastante bien, de 50 barras predice exactamente (casi exactamente) 48 barras y las mueve 1 posición a la izquierda, cometiendo sólo 1 error (no sé por qué) y el último (lo siento, lo estaba haciendo todo para). Al parecer, los "microerrores" de la predicción en cada "curva" se suman en la conversión inversa de esta manera.

Intenté "engañar" al algoritmo tratando de ocultar el último compás dentro del segmento de prueba (hice un simple desplazamiento circular), pero aun así eran el último y el primer compás los que estaban mal.

3. Por cierto, intentó predecir no sólo el cierre (como la serie más mal predicha), sino también el alto/bajo/abierto, y la diferencia e incluso los mínimos-máximos del zigzag. (Como ejemplo de serie, con un eje temporal distorsionado). Como el resultado es el mismo, la conclusión es obvia: este método sólo desplaza N-2 barras hacia la izquierda en 1 barra "de frente", pero no predice los zigzags.

En cuanto al modelo AR, cada curva es de hecho un proceso AR, muy cercano a él por sus propiedades. La identificación de un modelo de este tipo es complicada, se utilizan muchos métodos (curiosamente, más complicados que el NS): inversión y predicción, criterio de Akiache, "maleta", funciones de transferencia autorregresivas, criterios de concordancia y máxima verosimilitud (y sus variantes), correlación mutua, aproximación estocástica, filtrado (que también se utiliza para la identificación del modelo).

¡Gracias una segunda vez - muchos nombres nuevos - más para probar!

Hay muchas sutilezas en este modelo, algunas de las cuales he omitido humildemente. Una de esas sutilezas es que no tiene sentido predecir una sola muestra con ese modelo, simplemente no tiene sentido. Sencillamente, no obtendrá la precisión que desea, y nunca lo hará. Hay que predecir en un sentido "estadístico". Así es, en términos literarios.

Gracias una tercera vez, vamos a intentarlo en un sentido "estadístico"))

 

Me alegro de ser de ayuda. Buena suerte :o)


Por cierto, intentaré publicar un pronóstico en el hilo de 'Pruebas del sistema de predicción en tiempo real' aquí cerca. Si lo consigo para el lunes, si no lo publicaré más tarde. Así que, "ponte en contacto".

 
2 grasn:

1. Se me ha ocurrido una idea: si aplico la transformada del coseno dos veces (primero en la sección de prueba y luego en cada una de las "curvas" tan parecidas a las ondas sinusoidales), ¿no "mejorará" esto las propiedades predictivas del proceso? Intentaré contaros los resultados mañana.

2. Por supuesto, en el caso de la predicción a largo plazo de cierto tipo de procesos AR será mejor, aunque la superposición de dos sinusoides bien puede ser interpolada por una red neuronal.

3. ¿He entendido bien (he leído tu post en alguna parte), que para este método es mejor predecir ln(Xi/Xi-1) en lugar de Close mismo?

 
equantis >> :

1. Se me ha ocurrido una idea: si aplico la transformada del coseno dos veces (primero en la sección de prueba y luego en cada una de las "curvas" tan parecidas a las ondas sinusoidales), ¿no "mejorará" esto las propiedades predictivas del proceso? Intentaré contaros los resultados mañana.

2. Por supuesto, en el caso de la predicción a largo plazo de cierto tipo de procesos AR será mejor, aunque la superposición de dos sinusoides bien puede ser interpolada por una red neuronal.

3. ¿He entendido bien (he leído tu post en alguna parte), que para este método es mejor predecir ln(Xi/Xi-1) en lugar de Close mismo?

1. Hay que probarlo.

2. la cuestión es que la dinámica por frecuencias no tiene periodos, es un proceso complicado y no una superposición de ondas sinusoidales en absoluto

3. sí, esta es una de las opciones para llevar a una fila estacionaria.

Razón de la queja: