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

 
Tengo una pregunta para Yuri. Al calcular los resultados de un modelo trinario, cuando introduzco manualmente los datos, los resultados muestran a veces un símbolo de guión. Es decir, tengo 0, 1 y un guión. ¿Qué significa un guión?
 

He intentado clasificar el zigzag, sí, pero no el punto de pivote, sino toda la tendencia que muestra el zigzag, el resultado es 0 si la tendencia actual del zz es bajista, y 1 si la tendencia es alcista. Las tendencias zz parecen bastante desequilibradas, pero no por eso las he abandonado. Lo que no me gusta es que el modelo necesita una precisión muy alta. Si el modelo comete uno o dos errores en la tendencia y convierte una operación en el momento equivocado, aunque sólo sea por una barra, suele acarrear pérdidas adicionales más el pago de una comisión cada vez con el spread. El modelo sólo será rentable si abre la operación, espera el final de la tendencia y la invierte. Sin un solo error dentro de cada tendencia.

Si predice la siguiente barra en lugar de la tendencia, entonces cada error supondrá una menor pérdida de dinero.


No hago ningún balance, al pronosticar la próxima barra la dispersión de las clases es mínima tal y como está, no creo que un +-10% de alguna clase influya mucho en los resultados.

Aquí en el artículo escriben que el equilibrio puede ser sustituido por la estimación correcta del modelo (medida F o R-Precisión). Este es el análogo ruso del artículo que SanSanych enlazó antes.

http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html

...

Sin embargo, esta métrica [precisión] tiene una particularidad que hay que tener en cuenta. Da a todos los documentos el mismo peso, lo que podría ser incorrecto si la distribución de los documentos en el conjunto de entrenamiento se desplaza hacia una o más clases. En este caso, el clasificador tiene más información sobre estas clases y, en consecuencia, dentro de ellas tomará decisiones más adecuadas. En la práctica, esto lleva a una situación en la que se tiene, digamos, un 80% de precisión, pero dentro de una clase concreta, el clasificador funciona de forma desproporcionada al no definir correctamente ni siquiera un tercio de los documentos.

Una forma de salir de esta situación es entrenar el clasificador en un corpus de documentos especialmente entrenado y equilibrado. La desventaja de esta solución es que se quita información al clasificador sobre la frecuencia relativa de los documentos. Esta información, en igualdad de condiciones, puede ser muy útil para tomar la decisión correcta.

Otra salida es cambiar el enfoque de la evaluación formal de la calidad.

Precisión y exhaustividad

La precisión y la recuperación son métricas que se utilizan para evaluar la mayoría de los algoritmos de extracción de información. A veces se utilizan por sí mismos, otras veces como base de métricas derivadas como la medida F o la precisión R. La esencia de la precisión y la exhaustividad es muy sencilla.

La precisión de un sistema dentro de una clase es la proporción de documentos que realmente pertenecen a esa clase, en relación con todos los documentos que el sistema ha asignado a esa clase. La exhaustividad es la proporción de documentos que pertenecen a la clase encontrada por el clasificador en relación con todos los documentos de esta clase en la muestra de prueba.

....

Medida F

Está claro que cuanto mayor sea la precisión y la exhaustividad, mejor. Pero en la vida real la máxima precisión y la exhaustividad no son alcanzables al mismo tiempo y hay que buscar un equilibrio. Por eso nos gustaría tener algún tipo de métrica que combine información sobre la precisión y la exhaustividad de nuestro algoritmo. En este caso nos será más fácil decidir qué implementación lanzar en producción (la que más tiene es mejor). Esta es exactamente una métrica de este tipo: la medida F1.

La medida F esuna media armónicaentre la precisión y la exhaustividad. Tiende a cero si la precisión o la exhaustividad tienden a cero.


etc. En el artículo hay varios gráficos interesantes.

 
Dr.Trader:

He intentado clasificar el zigzag, sí, pero no el punto de pivote, sino toda la tendencia que muestra el zigzag, el resultado es 0 si la tendencia actual del zz es bajista, y 1 si la tendencia es alcista. Las tendencias zz parecen bastante desequilibradas, pero no por eso las he abandonado. Lo que no me gusta es que el modelo necesita una precisión muy alta. Si el modelo comete uno o dos errores en la tendencia y revierte una operación en el momento equivocado, aunque sea sólo por una barra, suele provocar pérdidas adicionales, además de pagar una comisión por el spread cada vez. El modelo sólo será rentable si abre la operación, espera el final de la tendencia y la invierte. Sin un solo error dentro de cada tendencia.

Si predice la siguiente barra en lugar de la tendencia, entonces cada error supondrá una menor pérdida de dinero.


No hago balanceo, para la predicción del próximo bar la dispersión de clases es mínima y no creo que el +-10% de una clase influya mucho en el resultado.

Aquí en el artículo escriben que el equilibrio puede ser sustituido por la estimación correcta del modelo (medida F o R-Precisión). Este es el análogo ruso del artículo que SanSanych enlazó antes.

http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html

etc., hay varios gráficos agradables en el artículo

Un pequeño consejo. Cualquier sistema conduce a un único fenómeno. ¡¡Es una señal!! El conjunto de todas las condiciones conduce a un hecho consumado, que es el punto de decisión. Por lo tanto, cualquier sistema, por complejo que sea, conduce a señales de compra o de venta. Por eso se recomienda clasificarlos. Cruce de vagones. El cruce se produjo, hay una señal de compra, cruzando en la dirección opuesta, hay una señal de venta, y no hay una tercera. Por lo tanto, para una clasificación correcta debemos hacerlo por separado para la venta y por separado para la compra. Así, podemos duplicar un intervalo de entrenamiento y mantener el nivel de generalización. Al principio mis modelos rara vez superaban el 40-50% de generalización, pero después entendí qué hacer con los datos. Para qué sirve el modelo obtenido tras la clasificación. Sobre los mismos datos ahora obtengo modelos no inferiores al 70% de media 80-90% y en el futuro, sobre datos desconocidos los errores son de 1-2 sobre 10-12. Esto es suficiente para ganar dinero. Pero tomo el 30% del intervalo de entrenamiento como intervalo de confianza. Es decir, tomo 100 señales de compra y 100 señales de venta y en 30 o 50 señales se puede trabajar sin reentrenar el modelo. En las primeras versiones del predictor se optimizaban 6 entradas en unos 40 minutos, lo que no era muy conveniente, y ahora hace 9 entradas en 10 minutos. Y esto no ha hecho más que aumentar la calidad del modelo. Ahora el problema es dónde encontrar tantas entradas. Pero no estamos en la oscuridad. Todavía tenemos algo que ofrecer al predictor :-)
 
Mihail Marchukajtes:
Tengo una pregunta para Yuri. Al calcular los resultados de un modelo trinario, cuando introduzco manualmente los datos, los resultados muestran a veces un símbolo de guión. Es decir, tengo 0, 1 y un guión. ¿Es eso lo que significa un guión?

Lo mismo que la famosa frase socrática "sé lo que no sé". El clasificador ternario, al responder con un menos, dice que en el conjunto de entrenamiento no había ejemplos similares al patrón que se está clasificando y, por lo tanto, no puede atribuirlo inequívocamente a ninguna clase, es decir, no puede dar una respuesta afirmativa al patrón presentado. Admite honestamente que carece de competencia en algunas áreas de conocimiento, en lugar de tratar de responder positivamente con cara de suficiencia a preguntas de las que no conoce las respuestas.

 
Yury Reshetov:

Es lo mismo que la famosa frase socrática "sé lo que no sé". Un clasificador ternario que responda con un menos nos dice que no había ejemplos en la muestra de entrenamiento similares al patrón que se está clasificando, por lo que no puede clasificarlo de forma inequívoca, es decir, no puede dar una respuesta afirmativa al patrón que se presenta.

Hm. Dígame si existe la posibilidad, en un futuro previsible, de descargar un modelo ternario a un archivo, para poder utilizarlo posteriormente en MKUL. Así como binario, pero cuando se introduce a mano, existe la posibilidad de cometer un error y todo eso.....
 
Mihail Marchukajtes:
Hm. Bueno, ya veo... Dígame, ¿existe la posibilidad en un futuro próximo de cargar un modelo ternario en un archivo, para poder utilizarlo posteriormente en MKUL? Además del binario, y al introducirlo a mano, existe la posibilidad de equivocarse y todo eso.....
Estoy trabajando en ello ahora. Es decir, el generador de código aún no está terminado y por el momento sólo da las fuentes de uno de los clasificadores binarios y no del clasificador ternario completo.
 
Yury Reshetov:

Lo mismo que la famosa frase de Sócrates "sé lo que no sé". El clasificador ternario, al responder con un menos, dice que en la muestra de entrenamiento no había ejemplos similares al patrón que se está clasificando, por lo que no puede atribuirlo inequívocamente a ninguna clase, es decir, no puede dar una respuesta afirmativa al patrón presentado. Admitir honestamente su falta de competencia en algunas áreas de conocimiento, en lugar de intentar responder positivamente con una cara de suficiencia a preguntas sobre las que no conoce las respuestas.

A juzgar por la imagen adjunta, ¿he entendido bien el punto? A la izquierda, un clasificador binario; a la derecha, un clasificador ternario (la zona blanca es "menos")

Si es así, creo que la idea es buena, por alguna razón no lo he visto antes, ¿podríais aconsejar algunos artículos sobre el clasificador ternario?



Terminé esto más tarde:

Intuitivamente, esta tarea es bastante sencilla. Supongamos que hay 2 predictores (X e Y), lo que significa que tenemos que trabajar en un espacio bidimensional (como en las imágenes de arriba). Entonces tenemos que encerrar tal espacio bidimensional que incluye todas las clases "comprar" (relleno azul). A continuación, encierre un segundo espacio que incluya todas las clases de "venta" (en rojo). Los dos espacios vallados no deben superponerse. Para clasificar nuevos datos, basta con mirar en qué espacio cercado cae el punto deseado. Si no llega a ninguna parte (blanco en la imagen de la derecha) - entonces está claro, que el modelo no puede decir nada sobre ese punto y la operación no debe ser ejecutada en este momento.

Con 3 predictores habrá un espacio tridimensional donde las clases estarán encerradas por unas formas volumétricas tridimensionales. Etc, cuantos más predictores, más multidimensionales son las formas.

¿Existen estos modelos? Normalmente los clasificadores encuentran algún tipo de hiperplano en el espacio que separa las clases. Pero aquí necesitamos dos hiperfiguras cerradas.

 

Mihail Marchukajtes:

...

En las primeras versiones del predictor se optimizaban 6 entradas en unos 40 minutos, lo que resultaba extremadamente incómodo, pero ahora 9 entradas lo hacen en 10 minutos. Y esto sólo aumentó la calidad del modelo. Ahora el problema es dónde encontrar tantas entradas. Pero no estamos en la oscuridad. Todavía tenemos algo que ofrecer al predictor :-)
Sí, yo también intento clasificar estrictamente la compra/venta. Pero, ¿cómo has conseguido las 6 entradas originales, las has tomado de alguna estrategia conocida? Los insumos adecuados son una de las cosas más importantes. Por el contrario tengo miles de entradas (precios e indicadores de más de cien barras) y necesito cribarlas dejando un par de docenas porque en tantas entradas cualquier modelo se sobreentrena.
 
Dr.Trader:

A juzgar por la imagen adjunta, ¿he entendido bien el punto?


Clasificador binario a la izquierda; clasificador ternario a la derecha (el área blanca es "menos")

Si es primitivo para dummies, servirá como ayuda visual.

Dr.Trader:
Si es así, creo que es una buena idea, por alguna razón no me he topado con ella antes, ¿podríais aconsejar algunos artículos sobre el clasificador ternario?

Si Google no está prohibido, puedes buscar por la frase "ternary classifier machine learning".

 
Yury Reshetov:

Si no estás vetado en google, puedes buscar "ternary classifier machine learning".

En otras palabras, "busca el primer enlace de Google que lleve a mi sitio web" :)

Lo encontré, tienes un comité de dos modelos, no es lo que entendí y escribí arriba.

Razón de la queja: