Predicción de precios FX utilizando algoritmos de aprendizaje automático de reconocimiento de imágenes de última generación

He pasado los últimos días trabajando en una pregunta simple de AlgoTrading: ¿se pueden usar los mejores algoritmos de reconocimiento de imágenes de su clase, que ahora tienen una precisión del 99%, para predecir el precio “ganador” y “perdedor” configuraciones de gráficos en lugar de gatos y perros?

Este ejercicio también se realizó como parte del trabajo que estoy haciendo en los cursos fast.ai. Actualmente estoy retomando la clase en su nueva versión v2 (usando PyTorch en lugar de Keras), así que pensé que sería un buen puente entre mis intereses y los materiales del curso.

Al final de L esson 1, Jeremy sugiere que tomes tus propias imágenes que deben ser ordenadas correctamente y que intentes que el algoritmo prediga la clase. Destaca especialmente que el algoritmo es adecuado para cosas como perros y gatos, y no necesariamente para otros tipos de imágenes (algo de lo que hablaremos más adelante en la publicación).

Por lo tanto, seguí adelante y construí una canalización completa (excluyendo la parte del motor comercial) en Python:

– Obtiene datos de precios de divisas (estoy usando Oanda.com)

: luego lo traza de acuerdo con “viewPorts” específicos (60 minutos de datos de precios mostrados como una línea, con incrementos de datos de 1 minuto)

– guarda cada trazado como un archivo .png, nombrándolo según su clase (comprar, vender o retener) y también lo coloca en la carpeta correcta dentro de la carpeta “tren” o “válida”

: también tiene en cuenta los excelentes consejos de Rachel sobre cómo configurar correctamente el tren y los conjuntos de datos válidos

: luego, los datos se ejecutan a través del modelo de reconocimiento de imágenes fastAI Lesson1

Todo el código se puede encontrar en mi Github, presentado en Jupyter Notebooks con explicaciones para cada paso y sección de código.

CONCLUSIÓN

En esta etapa, la tasa de precisión es aleatoria en el mejor de los casos (~ 50%), lo cual es de esperar para las características específicas de mi conjunto de datos (datos FX granulares con poco trabajo de eliminación de ruido). Lo supe desde el principio, pero fue un ejercicio útil de todos modos.

Espero que ayude a cualquiera que intente realizar un experimento similar.