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

 
fxsaber #:

Yo no hago comparaciones, yo proporciono un código que cada uno para su caso puede medir.

La longitud de la cadena de 100 es la longitud del patrón. Usted probablemente no necesita más que eso.

15000 muestras es memoria limitada debido al tamaño cuadrático de la matriz de correlación. Cuantas más muestras, mejor. Por eso escribí un programa casero donde puede haber un millón de ellas.

No tengo ni ganas ni tiempo para dedicarme a la comparación objetiva. Lo hice para mis propias tareas y compartí el código de trabajo. Quien lo necesite lo verá.

Variantes de aceleración - matriz de salida deben ser almacenados en uchar. Por regla general, cambiamos los porcentajes en incrementos de 1% y mirar algo. uchar - sólo hasta +- 128. Usted puede modificar su auto-diseño para uchar, y alglib también, el código está disponible. Matrices totales pueden ser 8 veces más grande con la misma memoria.

 
Aleksey Vyazmikin #:

¿Alguien ha intentado alguna vez trabajar con "valores atípicos"? Y no estoy hablando de valores atípicos como un error, sino más bien eventos raros.

Es curioso, pero resultó que en algunas cadenas de la muestra el valor atípico se fija en más del 50% de los predictores....

Resulta que la inclusión de estos valores atípicos en los modelos es bastante voluntaria.

Por lo tanto, parece que no es sólo para NS que esto es crítico....

Cisnes blancos/negros... fxsaber escribió sobre ellos en su blog. He tenido tales variantes entre muchas variantes: el comercio de alrededor de una semana cada par de años. En general, el experto se sienta y espera el movimiento. Pero este es un rendimiento ideal en el probador. En la vida real, los deslizamientos (son enormes durante el movimiento) pueden arruinarlo todo.

 
Forester #:

Cisnes blancos/negros..... fxsaber escribió sobre ellos en su blog. Entre muchas variantes he tenido la siguiente: el comercio de alrededor de una semana cada dos años. En general, el experto se sienta y espera el movimiento. Pero este es un rendimiento ideal en el probador. En la vida real, los deslizamientos (son enormes durante el movimiento) pueden arruinarlo todo.

Intenté eliminar líneas de la muestra en las que había muchos valores atípicos.

Y, el entrenamiento cambió radicalmente.

Si antes en la prueba hubo buenos resultados en promedio en más, y en el examen - casi todos en menos - esto es de 100 modelos, a continuación, la limpieza de los valores atípicos cambiado el resultado - los resultados en la prueba se deterioró mucho (beneficio medio cercano a cero), y en el examen por el contrario - una gran cantidad de modelos se convirtió en más.

Todavía no estoy listo para decir que esto es una regularidad, voy a tratar de comprobarlo en otras muestras.

Además, la cuestión de la mejor manera de determinar el valor atípico sigue abierta para mí. Ahora me limito a tomar hasta un 2,5% para cada lado, siempre que los rangos no superen este límite.

 
En general, la sensación es que hay un ciclo de un par de años tras el entrenamiento, a través del cual los modelos empiezan a encontrar de repente algunos patrones en los nuevos datos.
 
Aleksey Vyazmikin #:

He intentado eliminar las filas de la muestra en las que hay muchos valores atípicos.

Y, la formación cambió radicalmente.

Si antes en la prueba hubo buenos resultados en promedio más, y en el examen - casi todos en menos - esto es de 100 modelos, a continuación, la limpieza de los valores atípicos cambiado el resultado - los resultados en la prueba se convirtió en mucho peor (beneficio medio cercano a cero), y en el examen por el contrario - muchos modelos se convirtió en más.

No estoy listo para decir que esto es una regularidad todavía, voy a tratar de comprobar en otras muestras.

Además, la cuestión de la mejor manera de determinar el valor atípico sigue abierta para mí. Ahora sólo tomo hasta un 2,5% para cada lado, siempre que los rangos no superen este límite.

Si se toma sólo el 2,5% (u otro), el número de valores atípicos depende de la distribución, y eso no está bien.

Es mejor tomar un cuantil con 100 parcelas y no eliminar antes del 1% y después del 99%, sino sustituirlo por valores del 1% y del 99%. No se puede eliminar nada.

 
fxsaber #:
NumPy parece tener un algoritmo diferente de ALglib, ya que difiere mucho en rendimiento. Pero está claro que en toda la enorme comunidad Python hubo algún algoritmista muy fuerte que dedicó una cantidad decente de tiempo a estudiar este tema.

El código fuente está abierto, puedes echarle un vistazo. La función para calcular la correlación, en la parte derecha hay [fuente], después de hacer clic en él se le llevará al código. Nos interesan las líneas 2885-2907. En la línea 2889 se utiliza la covarianza, después de hacer clic en cov, todas las menciones de cov en el código aparecerán a la derecha, después de hacer clic en la línea con def cov... saltará a la función de covarianza, y así sucesivamente. MQL lenguaje tipo C, todos los lenguajes tipo C son ~90% similares, puedes entender C#, Java, Python, JavaScript sin mucho problema.

 
СанСаныч Фоменко #:

Si se toma sólo el 2,5% (u otro), entonces el número de suprimidos depende de la distribución, y eso no está bien.

Es mejor tomar un cuantil con 100 parcelas y no borrar antes del 1% y después del 99%, sino reemplazar con valores de 1% y 99%. No se puede borrar nada.

Tomo un porcentaje de los datos, no un porcentaje del rango. Así que si hay muchos datos (es denso), la parada será rápida en la escala de rango.

Saltar de la media y la varianza ha demostrado ser poco eficaz.

Sólo explorado la cuestión de la sustitución por otros valores (pero lo hice sólo para la cuantificación), me gustó la opción de sustitución por valores aleatorios del subconjunto restante, teniendo en cuenta la probabilidad.

 
Aleksey Vyazmikin #:

Tomo un porcentaje de los datos, no un porcentaje del rango. Así que si hay muchos datos (es denso), parar será rápido en la escala de rango.

Saltar de la media y la varianza ha demostrado ser poco eficaz.

Sólo explorado la cuestión de la sustitución por otros valores (pero lo hice sólo para la cuantificación), me gustó la opción de sustitución por valores aleatorios del subconjunto restante, teniendo en cuenta la probabilidad.

Los cuantiles son probabilidades. Así que eliminamos/reemplazamos los datos cuya probabilidad de caer en el intervalo sea inferior al 1%/mayor del 99% u otros valores. No se pueden cortar cantidades - tenemos distribuciones sesgadas y con colas.

Escriben que el valor de sustitución es mejor tomarlo como una predicción de esa cantidad por el MOE. Pero eso me parece un poco exagerado.

 
СанСаныч Фоменко #:

Las cantidades son probabilidades. Así que eliminamos/reemplazamos los datos cuya probabilidad de caer en el rango de menos del 1%/más del 99% u otras cantidades. No podemos cortar cantidades: tenemos distribuciones sesgadas y con colas.

Escriben que el valor de sustitución es mejor tomarlo como una predicción de esa cantidad por el MOE. Pero eso me parece un poco exagerado.

La cuestión es que a menudo es difícil determinar la distribución en el autómata.

A menudo será supuestamente lognormal, pero eso es sólo debido a los valores atípicos - no hay ninguna lógica para que sea así.

Y si tomas un cuantil, significa cortar sobre todo el rango, lo que no será suficiente para eliminar los valores atípicos.


En la segunda muestra obtuve un resultado muy extraño - estaba aprendiendo enérgicamente sin ninguna manipulación, pero después de eliminar las filas con valores atípicos el efecto del aprendizaje se hizo casi igual a cero.

Ahora he activado el ritmo de aprendizaje lento - lo pondré durante la noche - a ver si da algo.

Por lo demás, resulta que todo el proceso de aprendizaje se basa en memorizar valores atípicos, al menos con los predictores públicos que utilizo en el experimento.

 
Aleksey Vyazmikin #:

Exactamente la cuestión es que a menudo es difícil determinar la distribución en un automático.

A menudo será supuestamente lognormal, pero esto es sólo debido a las emisiones - no hay ninguna lógica para que sea así.

Y si se toma un cuantil, significa cortar sobre todo el rango, lo que será insuficiente para eliminar los valores atípicos.


En la segunda muestra obtuve un resultado muy extraño - estaba aprendiendo enérgicamente sin ninguna manipulación, pero después de eliminar las filas con valores atípicos, el efecto del aprendizaje se hizo casi igual a cero.

Ahora he activado el aprendizaje lento - lo pondré durante la noche - veré si da algo.

Por lo demás, resulta que todo el proceso de aprendizaje se basa en memorizar valores atípicos, al menos con los predictores públicos que utilizo en el experimento.

Ejecuté el modelo hasta EA en invierno (publiqué los resultados en este hilo) y obtuve el resultado contrario: los errores de clasificación, y eran inferiores al 20%, los captaban los valores atípicos. Como resultado, el 80% de las predicciones correctas fueron anuladas por estos errores.

Una cosa tengo clara: hay que deshacerse de los valores atípicos. Y el resultado real del modelo es sin valores atípicos.