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

 

Maxim Dmitrievsky:

Faltan 3 semanas para mi llegada a la meta con la NS :))) o el grial o el infierno con ellos. Hagan sus apuestas :))

Al principio, sería bueno escuchar las probabilidades de ganar. Aquí nadie se limita a recibir órdenes ;)

 

Necesitaba urgentemente encontrar el mínimo de una función suave, así que decidí primero comparar diferentes paquetes para ver cuál es más rápido. Para la prueba tomé la función Rastrigin (la función más difícil de optimizar según algunos profesores).

Rastrigin <- function(x){
  return(sum(x^2 - 10 * cos(2 * pi * x)) + 10 * length(x))
}


Para la prueba la tomé con 4 parámetros:

~ w^2 - 10 * cos(2 * pi * w)  +  x^2 - 10 * cos(2 * pi * x)  +  y^2 - 10 * cos(2 * pi * y)  +  z^2 - 10 * cos(2 * pi * z)   +  10 * 4


Derivados:

2 * w + 10 * (sin(2 * pi * w) * 2 * pi
2 * x + 10 * (sin(2 * pi * x) * 2 * pi
2 * y + 10 * (sin(2 * pi * y) * 2 * pi
2 * z + 10 * (sin(2 * pi * z) * 2 * pi


He comparado GenSA, lbfgs, lbfgsb3, n1qn1 y varios métodos de la función estándar optim().

Resultados:
paquete, el número de llamadas a la función de aptitud (y gradiente), los parámetros encontrados y el resultado final donde se detiene la búsqueda.

n1qn1 fitness function calls: 448 ; parameters = 3.90227 e-18 3.90227 e-18 3.90227 e-18 3.90227 e-18 ; result = 0 
lbfgs fitness function calls: 14 ; parameters = -1.891749 e-10 -1.891749 e-10 -1.891749 e-10 -1.891749 e-10 ; result = 0 
lbfgsb3 fitness function calls: 12 ; parameters = -7.542216 e-15 -7.542216 e-15 -7.542216 e-15 -7.542216 e-15 ; result = 0 
GenSA fitness function calls: 66582 ; parameters = 1.517382 e-11 -5.657816 e-12 -2.292922 e-11 -3.257902 e-12 ; result = 0 
optim Nelder-Mead fitness function calls: 253 ; parameters = -2.981633 3.988813 0.9902444 -2.980489 ; result = 34.8497 
optim BFGS fitness function calls: 49 ; parameters = 8.731115 e-16 8.731115 e-16 8.731166 e-16 8.731157 e-16 ; result = 0 
optim CG fitness function calls: 918 ; parameters = 0.9949586 0.9949586 0.9949586 0.9949586 ; result = 3.979836 
optim L-BFGS-B fitness function calls: 81 ; parameters = 8.526118 e-13 8.526118 e-13 8.526118 e-13 8.526118 e-13 ; result = 0 
optim SANN fitness function calls: 10000 ; parameters = 750.3075 745.0596 743.626 753.8133 ; result = 2239327 

Las tres primeras funciones (n1qn1, lbfgs, lbfgsb3) utilizan un gradiente encontrado analíticamente.

El resultado = 0 es ideal, cuanto más lejos de cero peor.

Vemos que el conocimiento de las derivadas es muy bueno, lbfgsb3 ha alcanzado el resultado perfecto en 12 llamadas de las funciones de aptitud.
El mejor de los que definen el gradiente numéricamente fue la función estándar optim con el método BFGS, 49 llamadas de la función de aptitud.

La conclusión es que los derivados son muy buenos. Lo ideal sería, por ejemplo, encontrar derivados para todos los pesos y ponerlo en lbfgsb3 en lugar de backprops.
Pero todo este resultado de la prueba se aplica sólo a las funciones suaves para las que se pueden encontrar derivadas para todos los parámetros. Si los parámetros de la función cambian aleatoriamente el resultado incluso al más mínimo cambio - la genética, GenSA y otros algoritmos estocásticos son mejores allí.

He adjuntado un archivo con el código, puedes probarlo en tus funciones.

Archivos adjuntos:
n1qn1.txt  4 kb
 

Me pregunto si una serie así se puede predecir con alguna arima, o basta con trabajar para un retorno a la media... logró obtener resultados impresionantemente estables (diagrama de cointegración), trabajando retornos más de 2 spreads


 

Una vuelta a la media puede incluso negociarse con un columpio. Pero, ¿cómo podemos determinar dónde está el precio medio si la media se desplaza con la tendencia? (La pregunta es retórica: no se puede).

 
Dr. Trader:

Una vuelta a la media puede incluso negociarse con un columpio. Pero, ¿cómo podemos determinar dónde está el precio medio si la media se desplaza con la tendencia? (La pregunta es retórica: no se puede).

La media aquí es 0, es una estrategia neutral

deberíamos utilizar la estadística) lo que se desplaza allí es imposible de entender en la caja negra

En resumen, casi terminado 2 ª estrategia de los 3 previstos (los resultados de la primera ya han escrito, no vkatilo)

si este no funciona - se dejará el último )

y este será el fin del modus operandi

 
Maxim Dmitrievsky:

Me pregunto si una serie así puede ser predicha por alguna arima, o basta con trabajar para volver a la media... consiguió resultados impresionantemente estables (diagrama de cointegración), trabajando retornos de más de 2 spreads


La cointegración es un término y no tiene nada que ver con su imagen.

La aplicabilidad de arim viene determinada por varias pruebas, la principal de las cuales es arch, que determina si existe un efecto arco en las series temporales. Si no hay efecto arco, que es alrededor del 20%, entonces el comercio, pero ... en la historia, ya que esta sección ya ha sido aprobada o casi aprobada o...

 
SanSanych Fomenko:

La cointegración es un término y no tiene nada que ver con su imagen.

La aplicabilidad de la aritmética viene determinada por varias pruebas, la principal de las cuales es el arco, que determina si existe un efecto arco en la serie temporal. Si no hay efecto arco, que es alrededor del 20%, entonces el comercio, pero ... en la historia, ya que esta sección ya ha sido aprobada o casi aprobada o...

definamos la cointegración por tercera vez... ¿qué es y por qué no es relevante para mi imagen? :)

es una foto de un sitio de prueba, no miro la historia en absoluto, todo es siempre perfecto allí

o de qué se trata - el desarrollo de estrategias en el MO o el análisis de diferentes funciones de R, creo que soy el único que se molestó en publicar cualquier resultado durante unos meses :)

 
Maxim Dmitrievsky:

la media aquí es 0, es una estrategia de mercado neutral

¿Quieres que el propio gráfico verde opere? Luego veo, al principio pensé que era un indicador para operar con el eurusd.

Primero tenemos que averiguar si se trata de un proceso aleatorio o si tiene memoria como las series temporales normales.

Si tiene memoria, la mashka y la arima pueden ser útiles.
Pero si el gráfico es completamente aleatorio, entonces necesitamos modelos para procesos markovianos. No soy bueno en esto, pero Alexander dijo algo sobre el modelo de Wiener, puedes empezar con él, por ejemplo.

 
Maxim Dmitrievsky:

vamos a definir por tercera vez la cointegración... ¿qué es y por qué no se aplica a mi cuadro? :)

esta es una foto ya de una parcela de prueba, no miro la historia en absoluto, todo es siempre perfecto allí

Hay al menos dos series temporales en cointegración.

Pero no son todos.

Estas series no son estacionarias.

Pero esto no es todo.

Estas series no estacionarias deben conectarse de forma que el resultado sea estacionario.

Las decisiones comerciales se toman en base a esta serie ESTACIONARIA que garantiza la posibilidad misma de hacer una previsión.

 
Dr. Trader:

¿Quiere negociar el propio gráfico verde? Luego veo, al principio pensé que era un indicador para operar con el eurusd.

Primero tenemos que averiguar si es un proceso aleatorio o si tiene memoria como una serie temporal normal.

Si tiene memoria - entonces tanto mash como arima pueden ser útiles.
Pero si el gráfico es completamente aleatorio, entonces necesitamos modelos para procesos markovianos. No soy bueno en esto, pero Alexander dijo algo sobre el modelo Wiener.

Entonces, tenemos que determinar si tiene memoria, es decir, si está determinada por sus colas?