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

 
sibirqk:

Si no es un secreto, ¿en qué principios se basa la serie artificial? ¿Es sólo una onda sinusoidal aproximada mezclada con el ruido, o es más complicado que eso?

Como hay varias preguntas en mi post, debería responderlas todas a la vez.

Este es el foro para el comercio, los sistemas de comercio automatizados y las pruebas de las estrategias de comercio.

Cómo utilizar el aprendizaje automático en el trading: teoría y práctica (trading y no sólo)

Yuriy Asaulenko, 2019.02.17 21:01

He intentado utilizar Python para entrenar una red neuronal. El paquete es scikit-learn, el propio NS es sklearn.neural_network.MLPRegressor. Más de 100 neuronas, capas ocultas -7, entradas -19, salida 1. La tarea consiste en predecir un proceso aleatorio.

La tarea es artificial, realizada sobre un generador de ruido y para que este ruido pueda ser teóricamente predecible. Lo probé para unos cuantos recuentos por delante.

Resultado de la comparación de la previsión con la real para 5 mil puntos elegidos al azar:

X es la previsión, Y es el valor real. Todos están muy cerca de una línea recta de 45 grados. Es decir, la predicción es casi perfecta (en la muestra artificial).

El aprendizaje es muy rápido: 24 épocas. En el tiempo, unos 10 segundos.

Debo decir que me sorprendió mucho. Me esforcé por ocultar los datos. Me sorprende que lo haya encontrado. En general, cerca del misticismo).

Conclusiones: El NS sklearn.neural_network.MLPRegressor es bastante utilizable. Todavía no he probado el clasificador.

Ya he intentado algo con el mercado, sin resultados hasta ahora. No busca, dice que no hay nada, aunque la tarea es de la misma clase que la que he generado.

Debo decir de entrada que no he inventado la máquina de movimiento perpetuo ni he hecho ningún truco, así que si lo he hecho será puramente por mi ignorancia.

Al principio, un poco de teoría. Los procesos aleatorios pueden predecirse, incluso lanzar una moneda. Todo depende de la formulación del problema de predicción. Por ejemplo, el pronóstico "lloverá mañana" es correcto en un 90%. Sin embargo, no se dice si lloverá por la mañana, por la tarde o a última hora de la noche, o si puede llover todo el día, porque no se obtiene una previsión fiable.

Es posible predecir las series temporales - es posible bajo ciertas condiciones. Una de esas posibles condiciones es la naturaleza limitada del espectro de la PA: cuanto más amplio sea el espectro, menor será el intervalo de previsión, y cuanto más estrecho sea, mayor será el intervalo de previsión.

Las series temporales del mercado tienen un espectro infinito, por lo que no se puede predecir el precio con 5 minutos o una hora de antelación. No me he propuesto esa tarea.

Ahora hay que preparar los datos para el entrenamiento.

1. obtenemos una serie del generador de números aleatorios (RNG) y la transformamos en una forma cercana a la del mercado. Estas series tienen un espectro ilimitado y no es realista predecir sus valores.

2. pasamos la serie por el filtro de paso bajo (LPF). Hemos recibido una serie aleatoria que tiene un espectro limitado y la posibilidad de predecir para n-cuentas por adelantado, sin embargo esta serie no es muy similar a la del mercado.

3. Generamos una serie con M=0 utilizando el RNG y la añadimos a la serie después del LPF, tras sujetar una pandereta. Volvemos a obtener una serie que se aproxima a la del mercado. Utilizaremos esta serie para la formación.

4. Como función objetivo tomamos la serie del paso 2 pasada por el LPF y desplazada por N muestras hacia atrás que da el pronóstico por N muestras hacia adelante.

A continuación, alimenta las series de entrada y de destino al NS, entrena y comprueba los resultados del entrenamiento. A continuación, repita los pasos 1-4, alimentando la serie del paso 3 al NS y compare la salida del NS con una serie desplazada por N muestras en el paso 4.

Eso es todo. No hay maravillas. Todo esto se puede hacer sin NS. Lo que me sorprendió fue que el NS lo hizo en segundos, y en sólo 24 ciclos de reloj de aprendizaje. Y eso con mucho ruido, ni siquiera se ve el componente de baja frecuencia ahí. Increíble.

Por qué no funcionó con la RV del mercado. Cualquier LPF tiene un retardo importante y su curva se desplaza hacia la derecha con respecto a la RV. Es decir, tenemos una señal LF ya retrasada en cada punto de la serie, y por tanto el intervalo de predicción es mayor que el permitido, y la predicción se vuelve irreal. Ni siquiera podemos construir un objetivo real para entrenar.

 

Yuriy Asaulenko:

El concepto de espectro sólo se define para un proceso estacionario. El precio no lo es, aunque sólo sea porque la dispersión aumenta con el tiempo.

 
Aleksey Nikolayev:

El concepto de espectro sólo se define para un proceso estacionario. El precio no lo es, aunque sólo sea por el aumento de la dispersión en el tiempo.

Esto es del ciclo de "un pequeño anciano en una casa de campo y un pequeño anciano en Kiev".
Ni hablar.
 
Yuriy Asaulenko:
Esto es del ciclo, hay un anciano en un jardín, y un tío en Kiev.
Ni hablar.

De acuerdo, no voy a impedir que vendas tambores Stradivarius.

 
Aleksey Nikolayev:

De acuerdo, no te impediré vender tambores Stradivarius.

Bueno, vale, me apiadaré. )) Casi todas las señales de radio son procesos no estacionarios, pero tienen un espectro. La noción de espectro no tiene nada que ver con la estacionalidad.
Deberías ir a la sucursal de T&P, a los fantasiosos).
 

Obtención de precios en Python vía socket de forma casi instantánea (50k registros) en 10 líneas de código

y en el lado mt5 20

no necesito libs improvisados para r. ¿por qué es tan difícil hacerlo uno mismo? Gracias por los sockets nativos en mt5.

A continuación, puede añadir fácilmente cualquier tipo de información, ya sean señales para abrir operaciones o cualquier otra cosa.

 
Maxim Dmitrievsky:

Obtención de precios en Python vía socket de forma casi instantánea (50k registros) en 10 líneas de código

y en el lado mt5 20

no necesito libs improvisados para r. ¿por qué es tan difícil hacerlo uno mismo? Gracias por el hecho de que los sockets nativos funcionan en mt5.

Ya lo creo).

Veo que han cambiado a Spyder. Deberían hacerlo, es mejor que retocar el cuaderno.

Por si acaso. La retícula de un gráfico se realiza mediante plt.grid().

 
Yuriy Asaulenko:
Bueno, vale, me da pena. )) Casi cualquier señal de radio es un proceso no estacionario, sin embargo, tiene un espectro.
Deberías ir a la rama de Tip, a los fantasiosos).

Los radioaficionados confunden un proceso aleatorio con su aplicación.

 
Aleksey Nikolayev:

Los radioaficionados confunden un proceso aleatorio con su aplicación.

No voy a discutir con los trolls.

 
Yuriy Asaulenko:

Sí, claro).

Veo que has cambiado a Spyder. Así es, es mejor que andar con el U-notepad.

ZS La retícula del gráfico se realiza mediante plt.grid().

he tenido que retocar el spyder para ponerlo en bare python, sin anaconda.

antes tenía vscode, pero agota la batería, así que tengo que buscar el enchufe.