Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 105
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sólo preveo 2 clases: "comprar" y "vender", lo que significa que siempre tendré alguna operación abierta. Yo trabajo con un solo modelo, no veo el sentido de hacer dos modelos que simplemente dan resultados opuestos.
Pero me gustaría pasar gradualmente a 3 clases: "comprar"/"cerrar todo y no operar"/"vender". Esto daría la oportunidad de operar con una estrategia más compleja. Lo he intentado un par de veces, pero he tenido problemas con el entrenamiento de los modelos a tres clases, especialmente si el modelo es regresivo seguido del redondeo del resultado a las clases.
Creo que vale la pena intentar crear dos modelos con las clases originales 1/0/-1 transformadas en 1/0/0 para el primer modelo(sólo compra), y 0/0/1 para el segundo modelo (sólo venta). Esto llevaría a clases desequilibradas en cada modelo (el número de ejemplos con una clase es mucho mayor que el otro), pero he encontrado buenas métricas para evaluar los modelos que funcionan en tales condiciones: F-score y kappa. Todavía no he hecho nada en ese sentido, pero ese plan parece bastante posible.
Los problemas en los métodos de esta rama no son sólo la no estacionariedad de las series temporales (diferentes escalas de los mismos patrones por precio y tiempo), sino también la variabilidad de los patrones. Es decir, las pautas que ayer auguraban un crecimiento, hoy pueden significar un posterior pinchazo o incluso una caída.
La enseñanza separada para la compra y la venta resuelve parcialmente estos problemas. Escribí hace unas páginas cómo, tengo dos rejillas, una de aprendizaje en las señales de compra (1;0) - comprar o no hacer nada, y otro en la venta (-1;0) - vender o no hacer nada. A la salida de estas dos rejillas, hay un interruptor que reúne las señales en un patrón (-1;0;1). El trabajo de este comité de rejillas resulta ser muy interesante: al principio buenas señales en la retroalimentación, poco a poco el número de señales disminuye, es decir más a menudo la respuesta es 0 en la salida (los patrones dejan de ser reconocidos y esto es mejor que las señales comerciales falsas), y después de algún tiempo comienzan las señales comerciales equivocadas (los patrones han cambiado). Por lo tanto, ya en la etapa en que el número de señales disminuye por debajo de un umbral determinado, puede y debe considerarse el comienzo de la necesidad de un nuevo entrenamiento con datos frescos.
Pero en realidad no existe tal "formación" y "práctica". Todo tipo de validaciones cruzadas y pruebas OOS no dan ni pueden dar el efecto que se espera de ellas. La cuestión es que tales trucos no son más que buscar y luego elegir aquellos valores que funcionan aproximadamente de forma satisfactoria tanto en la zona de entrenamiento como en la de prueba, es decir, este conjunto de parámetros ya existe inicialmente entre todas sus posibles variantes y equivale a elegir toda la zona de historia de una vez.
No obstante, utilizar dos modelos (en mi caso, dos mallas) es, en mi opinión, lo mejor que se puede aplicar entre los métodos de "aprendizaje automático" disponibles actualmente. No es un entrenamiento ni una formación, es una forma de optimizar el modelo.
Hoy en día no existe una verdadera formación. Reconocer patrones iguales o similares no es resultado del aprendizaje, sino del recuerdo. El entrenamiento debe implicar algún tipo de proceso de pensamiento (aunque sea primitivo), que permita razonar y sacar conclusiones al recibir nueva información, así como la capacidad de generar nueva información de forma independiente. El mercado requiere justamente un planteamiento de este tipo, un pensamiento que, por lo que sé, no existe en la actualidad. Y lo que utilizamos hoy es la memorización, no el pensamiento, por desgracia.
Pero, de hecho, no existe tal cosa como la "formación" y el "entrenamiento". Todo tipo de comprobaciones cruzadas y de OOS no producen ni pueden producir el efecto que se espera de ellas. La cuestión es que tales trucos no son más que buscar y luego seleccionar aquellos valores que aproximadamente funcionan satisfactoriamente tanto en la zona de entrenamiento como en la de prueba, es decir, este conjunto de parámetros ya existe inicialmente entre todas sus posibles variantes y equivale a seleccionar toda la zona de historia de una vez.
Hay modelos que superan la validación cruzada pero que no pasan la prueba con los nuevos datos. Y hay modelos que pueden pasar la validación cruzada y luego, de alguna manera, negociar algo en beneficio. Pero si un modelo no supera la validación cruzada, no tiene sentido intentar operar con él con nuevos datos.
En mi opinión, es un muy buen primer paso para seleccionar los predictores y los parámetros del modelo. A continuación, una prueba de avance para averiguar si el modelo (o una heurística para ajustar los parámetros del modelo y los predictores) puede funcionar con nuevos datos. Si no se puede, hay que cambiar algo.
Tienes dos neuronas - no obtuviste sus parámetros desde cero, ¿verdad? Las capas, la velocidad de aprendizaje, la inhibición, el control del peso y decenas de otros parámetros que tienen las neuronas. Debe haber hecho algún tipo de prueba de avance para determinar los parámetros apropiados, lo cual es inherentemente una validación cruzada también. No creo que se puedan coger dos neuronas con parámetros por defecto y empezar a operar con el beneficio.
No creo que se puedan coger dos neuronas con parámetros por defecto y empezar a operar a la vez con beneficios.
1. Hay modelos que superan la validación cruzada pero que no pasan la prueba con los nuevos datos.
2. Y hay modelos que pueden pasar la validación cruzada, y luego, de alguna manera, intercambiar algo en el plus.
Pero si el modelo no supera la validación cruzada, no tiene sentido intentar operar con él con los nuevos datos.
4. En mi opinión, este es un muy buen primer paso para seleccionar los predictores y los parámetros del modelo.
5. A continuación, la prueba de avance para averiguar si el modelo puede operar con los nuevos datos. Si no se puede, hay que cambiar algo.
6. Tienes dos neuronas - no obtuviste sus parámetros del suelo, ¿verdad? Las capas, la velocidad de aprendizaje, la inhibición, el control del peso y decenas de otros parámetros que tienen las neuronas. Debe haber hecho algún tipo de prueba de avance para determinar los parámetros apropiados, lo cual es inherentemente una validación cruzada también. No creo que se puedan coger dos neuronas con parámetros por defecto y empezar a operar con beneficios inmediatamente.
1. Sí, no significa que el modelo sea malo. Puede significar que el modelo no tiene "memoria suficiente" para la cantidad de datos dada o puede significar que no se ha encontrado el conjunto de parámetros que es apropiado para toda la parcela junto con las parcelas de entrenamiento y las de validación. El problema es que no hay forma de determinar con exactitud cuál es el problema del fallo de la prueba en los nuevos datos.
2. Sí. Significa "memoria suficiente". Se puede conseguir lo mismo en el punto 1 simplemente reduciendo la cantidad de datos de entrenamiento. El hecho de que hayamos obtenido algo positivo en los datos desconocidos se puede considerar una pura "suerte", porque hemos encontrado patrones, que son iguales o muy parecidos a lo que el sistema conoce y al mismo tiempo hemos tenido las reacciones exactas del mercado que ocurrieron antes de los patrones correspondientes. El problema es que los patrones cambian constantemente de forma gradual, y a veces abrupta, y no hay garantías para el futuro.
3. Sí. Pero no es mucho peor si se hubiera aprobado, por las razones expuestas anteriormente.
4. Sí, una buena. Pero no para dar confianza en la robustez del modelo en el futuro, sino sólo para conseguir pasar las validaciones y nada más.
5. La marcha hacia adelante es la única forma de validar el sistema. El único. En mi opinión, si se consigue crear un sistema que sea eficiente al menos en un 55-60% (es decir, una reducción del 30% o más de la eficiencia en comparación con las parcelas de "aprendizaje"), entonces se puede considerar que se ha alcanzado el éxito. Pero incluso eso sólo significará que un compromiso entre la velocidad de cambio de los patrones de mercado y la capacidad del sistema para recordar la cantidad necesaria de información, pero no significará que el sistema es "tonto" en un 30%, pero significará que el sistema no aprende el 30% de los patrones nuevos o cambiados de edad.
6. El enfoque de las dos neuronas que he mencionado no supone un "aprendizaje" como tal. Es la misma "memorización", sólo que aplicada de forma inteligente. Estoy olvidando patrones antiguos y no reconociendo los nuevos, como tú, pero no estoy operando en patrones desconocidos, el comercio se desvanece con el tiempo, y luego aparecen las señales falsas. Hago (hice antes) pruebas de valk-forward en las que el nuevo aprendizaje tenía lugar cuando el número de operaciones por unidad de tiempo disminuía por debajo del umbral permitido, por lo que obtuve diferentes longitudes de secciones de prueba en valk-forwards con las mismas secciones de "aprendizaje". Esto dio lugar a una disminución media de la eficiencia del 30%.
¿Por qué?
La neurona, como cualquier otro modelo, simplemente encontrará algunos patrones en los datos disponibles. Si estos patrones corresponden a algunos procesos internos en Forex, o simplemente son recogidos por la neurona según el principio "multiplica algo con algo, si sólo el resultado coincide" - nadie lo sabe, no hay garantía. Para que sea capaz de detectar los procesos internos del forex, su estructura (capas, conexiones) debe corresponder de alguna manera al forex, debe estar configurado específicamente para él, sólo entonces empezará a producir buenos resultados de forma consistente.
Por ejemplo, las redes neuronales convolucionales para clasificar imágenes son muy populares ahora. Su uso parece muy sencillo (descargar la biblioteca de Python, y ya está), pero la gente olvida que muchas universidades llevan décadas participando en concursos de "reconocimiento de imágenes", en los que luchan por cada porcentaje ganador. Cosas de moda como "pintar un cuadro como Van Gogh" o sustituir caras en un cuadro son el resultado de décadas de trabajo de las universidades, con todos sus estudiantes de grado y posgrado (y profesores, probablemente), que dedican mucho tiempo a ajustar los parámetros del modelo, o a desarrollar nuevos modelos.
En el caso del Forex también es posible, pero hay que dedicar el mismo esfuerzo. En este caso las ganancias son verdaderas ganancias de divisas, por eso no se alardea de las configuraciones de los modelos y no se publican para el acceso público, cada nuevo concursante tiene que empezar de nuevo.
No creo que se puedan coger dos neuronas con parámetros por defecto y empezar a operar a la vez con beneficios.
El aprendizaje por separado de la compra y la venta resuelve parcialmente estos problemas. Escribí hace unas páginas cómo, tengo dos rejillas, una de aprendizaje en las señales de compra (1;0) - comprar o no hacer nada, y otro en la venta (-1;0) - vender o no hacer nada.
Mi clasificador ternario también tiene dos mallas, pero con diferentes capas ocultas y ambas clasifican la previsión de la próxima dirección del precio, es decir, 1 o -1. Hay un interruptor en la salida, que en caso de que una de las rejillas de salida 1 y el otro -1 (se contradicen entre sí), a continuación, las salidas del interruptor 0 - no hacer nada.
Todo está claro con la compra y la venta para los valores de la variable dependiente, ya que se pueden determinar por el hecho - la dirección del movimiento del precio siguiendo el patrón. Pero aquí surge una pregunta complicada, ¿con qué condición sus clasificadores binarios marcan la variable dependiente en 0 - no hacer nada?
No existe la condición de hechos en la naturaleza, según mi opinión.
5. ...
6. ...
1. Sí. Esto no significa que el modelo sea malo. Podría significar que la memoria del modelo es insuficiente para la cantidad de datos suministrados,
2. porque se han producido patrones iguales o muy parecidos a los que el sistema conoce y, al mismo tiempo, se han producido exactamente las mismas reacciones del mercado ante los patrones correspondientes. El problema es que los patrones cambian constantemente de forma gradual, y a veces de forma repentina, y no hay garantías para el futuro.
1) Existe una red que puede preaprender si recibe datos que no conoce previamente, quizás te interese leer sobre ella, la red se llama SOINNhttps://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=soinn
2) Estoy cansado de escribir sobre ello, además prácticamente he demostrado que el mercado va en contra de mis propias estadísticas e incluso he explicado la mecánica, por qué ocurre, y toda la forma clásica de aprender no se puede aplicar a ello, pero a nadie le interesa, todos hacen lo mismo.
Mi clasificador ternario también tiene dos mallas, pero con diferentes capas ocultas y ambas clasifican el hecho de la próxima dirección del precio, es decir, 1 o -1. Hay un interruptor en la salida, que en caso de que una de las mallas dé 1 y la otra -1, el interruptor da 0 - nada que hacer.
Todo está claro con la compra y la venta, ya que se pueden identificar por el hecho - la dirección del movimiento del precio siguiendo el patrón. Pero aquí nos enfrentamos a una pregunta complicada, ¿con qué condición sus clasificadores binarios marcan la variable dependiente como 0 - no hacer nada?
De hecho, no existe tal condición como los hechos en la naturaleza, IMHO.
VENDER COMPRAR Interpretación
-1 0 vender
0 0 valla
0 1 comprar
-1 1 valla
Aquí está la tabla de cambios. Se puede ver en ella que las señales se producen cuando las señales de la red están ahí y no se contradicen. Tras el entrenamiento, se reconocen las pautas y se produce una operación con éxito, pero con el tiempo las lecturas empiezan a contradecirse (fuera 0 - valla) o ambas parrillas dejan de reconocer las pautas (fuera 0 - valla). Por lo tanto, con el tiempo disminuye el número de operaciones, es decir, el principio de "no estar seguro, no operar".
Pero tu pregunta parece ser otra: ¿cómo conseguir que la red pertinente compre/venda en lugar de quedarse sentada en la valla? - La respuesta es sencilla, un sistema de puntos. Se otorgan puntos por las respuestas correctas y se penalizan las incorrectas y las vallas. Hay que elegir la relación de puntos, también es una gran tarea, porque hay que conseguir un trabajo coordinado de las dos rejillas al final, pero el resultado merece la pena.
En mi opinión, los patrones son diferentes para la compra y la venta. Esa es la idea, como puede ser en su caso.