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

 
Alexey Burnakov:

Esto es un gran problema. Es algo casi imposible de resolver sin perjudicar el aprendizaje.
La cuestión es que cuanto más se mira al pasado, más se depende de las observaciones vecinas.

Si se alimenta a la máquina con observaciones no especificadas, se pierde lo más importante: el requisito de independencia de las observaciones. Después, el aprendizaje será drásticamente inadecuado. Y las estadísticas no funcionan.

Y para evitarlo hay que adelgazar las observaciones de manera que el desfase de la mirada máxima hacia atrás sea menor o igual al paso de las observaciones de adelgazamiento. ¿Y esto a qué llevaría? Reducción de cien veces el tamaño de la muestra de entrenamiento.

Hay que llegar a un compromiso. Profundidad de la mirada frente al número de ejemplos de la muestra.

Estoy de acuerdo en que es un problema, llevo semanas encaneciendo...

lo que significa que cuanto más se mira hacia atrás, más dependientes son las observaciones vecinas. ...no tiene sentido...

Y sobre el acuchillado por favor, tampoco lo entiendo...

 
mytarmailS:

Estoy de acuerdo en que es un problema, llevo unas semanas encaneciendo...

que quieres decir que cuanto más miras hacia atrás, más adicto eres a las observaciones del barrio. No está claro...

Y lo de los tajos por favor acláralo... yo tampoco lo entiendo....

Bien. Utilizando su propio ejemplo.

Para dos barras adyacentes en el tiempo se dibujarán histogramas de precios pasados casi 100% idénticos. Es decir, los dos ejemplos de entrenamiento serán muy similares sólo porque son adyacentes en el tiempo. Esto contradice la propiedad básica de los procesos estadísticos en los que las observaciones son independientes. La máquina no aprenderá patrones cronológicamente invariables, sino que aprenderá los repetitivos (casi los mismos). Imagina que entrevistas a Vasya 200 veces en una encuesta de opinión y que intentas extender los conocimientos que encuentras a 1000 personas diferentes.
 
Alexey Burnakov:
Bien. En su ejemplo.

Para dos barras adyacentes en el tiempo, se dibujarán histogramas de precios pasados casi 100% idénticos. Es decir, los dos ejemplos de entrenamiento serán muy similares sólo porque son adyacentes en el tiempo. Esto contradice la propiedad básica de los procesos estadísticos en los que las observaciones son independientes. La máquina no aprenderá patrones cronológicamente invariables, sino que aprenderá los repetitivos (casi los mismos). Imagina que entrevistas a Vasya 200 veces en una encuesta de opinión y que intentas extender los conocimientos que has encontrado a 1000 personas diferentes.

Ooh!!! eso es diferente, ahora todo está clarísimo :)

1) Puede reducir el tamaño de la ventana varias veces, entonces las secciones serán menos similares en cada corte

2) Puedes aumentarlas pausas al máximo, lo que también eliminaría un poco elalisado

PRICE <- cumsum(rnorm(300))+1000
layout(1:2)
plot(PRICE,t="l",ylab = "цена" , xlab = "индексы",lwd=2)
Max <- max(PRICE)
Min <- min(PRICE)
range.vector <- seq(Min, Max, length.out=200)
H <- hist(PRICE, breaks = range.vector)
          

 
mytarmailS:

Ooh!!! Eso es diferente, todo tiene perfecto sentido ahora :)

1) Puede reducir el tamaño de la ventana varias veces, entonces las secciones serán menos similares en cada corte

2) Podrías maximizar laspausas, lo que también eliminaría un poco desuavidad

Yo lo hago así. Pseudocódigo:

Ejemplo1 = p[0]
paso = 720
random = [0;50]
Ejemplo 2 = p[paso+aleatorio]

donde el retraso máximo hasta el pasado = 720

Significa que estoy cortando de tal manera que las observaciones no se superponen.

El mismo principio es necesario para evitar la dependencia del objetivo de mirar hacia adelante.
 

Lo primero que hay que determinar es: qué tipo de horizonte de previsión necesita. Esto determinará la profundidad de la historia que debe investigar.

Observe los gráficos de tendencia con una profundidad histórica de 3000, 1000, 300 y 150 barras (AUDUSD/H1).

> library("PolyTrend", lib.loc="K:/RRO/R-3.3.1/library")
> trend3000 <- PolyTrend(price[ ,4], alpha = 0.05)
> require(magrittr)
Loading required package: magrittr
> trend1000 <- PolyTrend(price[ ,4] %>% tail(., 1000), alpha = 0.05)
> trend300 <- PolyTrend(price[ ,4] %>% tail(., 300), alpha = 0.05)
> trend150 <- PolyTrend(price[ ,4] %>% tail(., 150), alpha = 0.05)
> plot(trend3000, t="l")
> plot(trend1000, t="l")
> plot(trend300, t="l")
> plot(trend150, t="l")


He insertado las imágenes en orden inverso.

Y para 3000 barras la dirección es "Up".

Trend type: 3 (cubic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Para los más cortos

#  trend1000
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#  trend300
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#trend150
 PolyTrend classification:

Trend type: 3 (cubic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Si me interesa el horizonte de previsión de 24 barras (un día) no necesito mirar 3000 barras hacia atrás. 300 bares serían suficientes.

Buena suerte






 

Me parece cuestionable la idea de predecir 24 pasos por delante.

Tanto en la clasificación como en la regresión siempre se debe predecir exactamente UN paso adelante, pero por ejemplo en H1, H4 y D1. Al operar en H1 obtendremos predicciones de 4 y 24 pasos adelante para H1.

Lo ideal es que la TF se haga artificialmente a partir del cociente subyacente. En mi ejemplo cargamos H1 y no tomamos otros de la terminal. Utilizando este enfoque no obtendremos D1 vinculado a las 00:00, sino estrictamente 24 horas por delante de la hora actual

 
SanSanych Fomenko:

Me parece cuestionable la idea de predecir 24 pasos por delante.

Tanto en la clasificación como en la regresión debemos predecir siempre exactamente UN paso adelante, pero por ejemplo en H1, H4 y D1. Al operar en H1 obtendremos predicciones de 4 y 24 pasos adelante para H1.

Lo ideal es que la TF se haga artificialmente a partir del cociente subyacente. En mi ejemplo cargamos H1 y no tomamos otros de la terminal. Utilizando este enfoque no obtendremos D1 vinculado a las 00:00, sino estrictamente 24 horas por delante de la hora actual

Depende de lo que estemos pronosticando. Por ejemplo, una previsión de tendencia de 24 horas es bastante satisfactoria (la curva es muy suave). Es decir, cuando se necesita ver la FORMA de la curva sin ningún requisito especial de precisión.

Por lo demás, tu ejemplo es absolutamente correcto (como principio). Y la opción de la ventana deslizante (24 horas) también es muy factible. Depende mucho de los detalles.

Buena suerte

 

Una pregunta rápida...

He estado haciendo una distribución de precios, es decir, un vector regular, y obtengo una especie de perfil de mercado, pero ¿puedo construir un perfil de volumen real, es decir, vincular el precio con el volumen en la distribución?

 
mytarmailS:

Una pregunta rápida...

He estado haciendo una distribución de precios, es decir, un vector regular, y tengo una especie de perfil de mercado, pero ¿es posible construir un perfil de volumen real, es decir, conectar el precio con el volumen en la distribución?

Hay indicadores que toman el precio y el volumen y construyen un gráfico general. Y se puede calcular la distribución para ello. Por ejemplo, el Oscilador Chaikin o algunos indicadores más en la carpeta Indicadores/Volúmenes. Pero en forex serán volúmenes de ticks, no reales. Aunque se correlacionen, sigue siendo malo, es mejor buscar volúmenes bursátiles reales.

 
Dr.Trader:

Hay indicadores que toman el precio y el volumen y construyen un gráfico general. Y puedes leer la distribución de la misma. Por ejemplo, el Oscilador Chaikin o algunos indicadores más en la carpeta Indicadores/Volúmenes. Pero en forex, serán volúmenes de ticks en lugar de reales. Aunque se correlacionan, sigue siendo malo, es mejor buscar volúmenes bursátiles reales.

No opero en forex, ni siquiera estoy familiarizado con Metatrader :)

Me gustaría experimentar con diferentes perfiles en P, sólo que no entiendo cómo construir una distribución de dos vectores

No tienen que ser los volúmenes, es un comienzo, se puede poner cualquier cosa en el perfil pero tiene que estar conectado con el precio y eso significa dos vectores