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

 
mytarmailS:
Gracias por la aclaración, ahora lo entiendo perfectamente, ¿pueden ayudar los algoritmos genéticos en este caso? en lugar de RF, tengo bastantes ideas interesantes para implementar un objetivo, me gustaría probarlas...
Bien, podemos pensar en ello. Imagínese, por ejemplo, que en cada iteración la red neuronal no hace una retropropagación del error estándar basada en la desviación del objetivo de la predicción, sino que obtiene datos que en la versión anterior de las escalas reales difieren del ideal en tantos puntos. Y actualiza los pesos en función de esta información. Es decir, la información debe ser un flujo paralelo a la máquina. Tal vez, se pueda hacer.
 

¿es posible hacer esto en R?

Un poco sobre mí: no soy programador, R es mi primer lenguaje que estoy aprendiendo desde hace un mes y medio

 
mytarmailS:

¿es posible hacer esto en R?

Un poco sobre mí: no soy programador, R es mi primer lenguaje que estoy aprendiendo desde hace un mes y medio.

Este es un proceso aproximado de enseñanza de la NS con la alimentación de la información sobre los resultados del comercio. Bueno, podrías intentar escribir tu propia función y alimentarla como una función de fitness personalizada en algún paquete de R. Pero primero tenemos que averiguar qué paquete R lo permite. Probablemente habría que escribir el propio NS y hacerlo en los pluses en un paquete aparte. ( La propia R es lenta.

La cosa es que este es un caso muy inusual. Por lo general, las funciones de fitness no son personalizables, con una excepción que conozco. Como mucho, lo que he hecho es escribir mi propia función en el paquete caret, cuyo valor máximo se utiliza para seleccionar un conjunto de parámetros de entrenamiento durante la validación cruzada. Pero al mismo tiempo la propia máquina se entrena de forma estándar. Es decir, mi solución no es exactamente lo que necesito. ¿Lo ves?

 
Busqué en Google... Sí, tienes que escribirlo tú mismo, pero hombre, este enfoque estándar es tan limitado que resulta molesto...
 
mytarmailS:
Busqué en Google... Sí, tienes que escribirlo tú mismo, pero hombre, este objetivo estándar es un enfoque tan limitado, que es molesto...

Tendremos que seguir buscando:

http://stackoverflow.com/questions/25510960/how-to-implement-own-error-function-while-using-neuralnet-package-in-r

/go?link=https://stackoverflow.com/questions/36425505/own-error-function-including-weights-for-neuralnet-in-r

Parece que el paquete neuralnet te permite crear tu propia función de fitness, que debería ser diferenciable. Tendré que pensarlo... ¿Qué te parece?

how to implement own error function while using neuralnet package in R?
how to implement own error function while using neuralnet package in R?
  • stackoverflow.com
I am trying to implement a customized error function in package neuralnet in R. Normally ’sse’ and ’ce’ which stand for the sum of squared errors and the cross-entropy are used to calculate...
 

El segundo enlace dice que hay que reescribir el código del paquete.

Puedes usar el primer enlace para escribir tu propio error, pero necesitamos saber los pesos previos para implementarlo en el concepto que sugieres, ¿o me estoy perdiendo algo? Para ser sincero, tengo una idea muy vaga de cómo funciona una red neuronal

 

El entrenamiento de una red neuronal (propagación hacia atrás) suele proceder de la siguiente manera: se le introduce un ejemplo de entrenamiento, se le determina un resultado, se compara con el resultado deseado y se calcula un error. Entonces, la tarea consiste en reducir este error. Dado que todos los cálculos de la red neuronal son sólo órdenes de adición y multiplicación de datos de entrada con coeficientes, se puede calcular con precisión hasta qué punto es necesario cambiar los coeficientes para disminuir el error. En general se pueden encontrar coeficientes que reduzcan el error a cero en el primer paso, pero nadie lo hace, porque reduce el error de un ejemplo concreto, pero lo aumenta a sabiendas para todos los demás ejemplos.

Esta reducción gradual del error se realiza una a una utilizando todos los ejemplos de entrenamiento y pasándolos una y otra vez. Es decir, no se puede utilizar un determinado ratio de Sharpe como resultado de la operación requerida. El error se puede calcular por separado para cada ejemplo de entrenamiento. Puede utilizar su propia función para calcular el error, pero también se calculará por separado para cada ejemplo de entrenamiento y no para todos los ejemplos a la vez. No sé cómo dividir la estimación comercial completa en todos los ejemplos individuales.

Estoy de acuerdo en que operar por precios en zigzag o de cierre de barra no es lo más óptimo. Sería mucho mejor abrir y cerrar las operaciones teniendo en cuenta también el spread, el drawdown, el periodo de tiempo durante el cual la operación está abierta. Podríamos hacer un Asesor Experto que utilice medias móviles u otros indicadores, optimizarlo para obtener el máximo ratio de sharpe y utilizar estas operaciones en los datos de entrenamiento como resultado requerido. Pero haré algo así cuando consiga resultados estables al menos en zigzag.

 
Dr.Trader:

El entrenamiento de una red neuronal (propagación hacia atrás) suele proceder de la siguiente manera: se le introduce un ejemplo de entrenamiento, se le determina un resultado, se compara con el resultado deseado y se calcula un error. Entonces, la tarea consiste en reducir este error. Dado que todos los cálculos de la red neuronal son sólo órdenes de adición y multiplicación de datos de entrada con coeficientes, se puede calcular con precisión hasta qué punto es necesario cambiar los coeficientes para disminuir el error. En general se pueden encontrar coeficientes que reduzcan el error a cero en el primer paso, pero nadie lo hace, porque reduce el error de un ejemplo concreto, pero lo aumenta a sabiendas para todos los demás ejemplos.

Esta reducción gradual del error se realiza una a una utilizando todos los ejemplos de entrenamiento pasándolos una y otra vez. Es decir, no se puede utilizar un determinado ratio de Sharpe como resultado de la operación requerida. El error se puede calcular por separado para cada ejemplo de entrenamiento. Puede utilizar su propia función para calcular el error, pero también se calculará por separado para cada ejemplo de entrenamiento y no para todos los ejemplos a la vez. No sé cómo dividir toda la estimación del comercio en todos los ejemplos individuales.

Estoy de acuerdo en que operar por precios en zigzag o de cierre de barra no es lo más óptimo. Sería mucho mejor abrir y cerrar las operaciones teniendo en cuenta también el spread, el drawdown, el periodo de tiempo durante el cual la operación está abierta. Podríamos hacer un Asesor Experto que utilice medias móviles u otros indicadores, optimizarlo para obtener el máximo ratio de sharpe y utilizar estas operaciones en los datos de entrenamiento como resultado requerido. Pero haré algo así después de obtener resultados estables al menos en los zigzags.

Sí, el NS funciona de la manera que has descrito. Para cada muestra se calcula el error y, después de pasar por todo el conjunto, se obtiene el valor de la función de aptitud: error cuadrático medio, o error medio, o error absoluto medio. A partir de este valor, los pesos se actualizan en función del gradiente calculado en el algoritmo de retropropagación.

Aquí estamos discutiendo que debemos poner nuestra propia en lugar de la mencionada función de fitness basada en el comercio de señales de la máquina simulada. Así, para cada ejemplo procesado por NS, puede crear una operación virtual (si la señal de salida rompe un umbral predefinido). Y al final de todos los ejemplos podemos calcular algunas estadísticas integradas, por ejemplo la estadística de Sharpe. Y ya a partir de ella los pesos serán procesados por la distribución inversa.

 

¡Gracias por la detallada aclaraciónDr.Trader!

Sabes, probablemente lo mejor y más correcto sería enseñar las propias inversiones, incluso el mismo zigzag, es decir, dar tres estados 1) Vuelta en U hacia arriba

2) inversión a la baja

3) no es una vuelta en U

Pero si se trata de enseñarlo, es bastante difícil captar las inversiones, además del sesgo en el número de observaciones, las clases "no invertidas" serán decenas o tal vez cientos de veces más

¿Y qué predictores utiliza y cuáles son los resultados?

Acabo de empezar a utilizar el análisis espectral, las primeras pruebas me salieron mucho mejor que con los indicadores, lo pasé por rattle, el error de entrenamiento y prueba era de un 6% aproximadamente, pero cuando empecé a utilizar R el error subió al 30% si no me equivoco, San Sanich dice que es reentrenamiento, así que todavía no entiendo mucho

Además, hay una forma de averiguar qué periodos dominan en el mercado a través del análisis espectral y luego se pueden utilizar estos periodos en los indicadores, ya que serán indicadores adaptativos, pero no adaptados al historial.

 
mytarmailS:

El segundo enlace dice que hay que reescribir el código del paquete.

En el primer enlace puedes escribir tu propio error, pero seguimos necesitando saber los pesos previos para implementar el concepto que propones, ¿o me he perdido algo? Sinceramente tengo muy poco conocimiento de cómo funciona una red neuronal

Bueno, en primer lugar, no lo estoy sugiriendo. Estoy traduciendo tu intuición en una forma que puede ser codificada. Usted sugirió que la máquina debería encargarse de mantener la curva de negociación dentro de unos límites razonables. ) Esa es la opción para hacerlo.

En segundo lugar, el primer enlace muestra justo la forma de hacerlo. La única limitación, que también se menciona en la documentación. Además, no necesitamos pesos, los necesitamos específicamente para la persona que hizo la pregunta. No se pueden obtener pesos en una función. ¿Para qué necesitas pesas? ¿Por qué los mencionas en primer lugar?

Se puede utilizar básicamente cualquier función de error que se pueda diferenciar.