Crear un robot comercial utilizando el aprendizaje automático en el análisis de series de tiempo

Este no es un artículo técnico; no hay un análisis detallado de los métodos y la teoría. Es solo que de alguna manera me dejé llevar por el aprendizaje automático y, como muchas personas que son nuevas en este tema, decidí hacer un bot comercial. Sin embargo, esto se ha convertido en algo más que un proyecto de capacitación. Eso es lo que quiero contar sobre todo esto.

Un poco sobre el aprendizaje automático


El aprendizaje automático (Machine Learning; en lo sucesivo denominado MO), de una forma u otra, es una parte integral de la industria de la Inteligencia Artificial (Inteligencia Artificial; en adelante AI), ciencia y tecnología, que permite que los sistemas informáticos "inteligentes" simulen el comportamiento humano. Esta industria también incluye el concepto de aprendizaje profundo, que afecta las redes neuronales y la imitación del pensamiento humano.

La disciplina académica de la IA se estudia como una máquina, es decir. computadora, resuelva problemas que están sujetos solo a la mente humana. Esto puede ser una tarea como comprender el texto leído, o determinar los movimientos en un juego de damas, o resolver un rompecabezas. MO debe desarrollar algoritmos que ayuden a la computadora a sacar conclusiones basadas en la información recibida. El combustible para todo en este caso son los datos.

imagen
(c) Oracle

En la era de la información, la información y los datos son los más valiosos. Todo lo que hacemos, fuera de línea o en línea, genera nuevos datos: ya sea texto, audio, datos de video, mediciones sensoriales, dispositivos "inteligentes" y el intercambio de datos entre ellos. Las oportunidades para recopilar datos grandes y nuevos están aumentando rápidamente debido a la disponibilidad de dispositivos de hardware, el desarrollo de infraestructura en la nube y, debido al uso masivo de estas tecnologías, una caída en su costo. El conocimiento, o la información, es poder: el axioma es verdadero pero hay un "pero".

La posesión de grandes volúmenes de información aún no beneficia a su titular. Pero es a través de los algoritmos y métodos de MO que Big Data comienza a tener sentido y beneficio. Más específicamente, los sistemas MO notan patrones y construyen conclusiones basadas en muchos factores en el sistema de datos, sin ser programados para ello.

Las principales aplicaciones de MO hoy en día son el reconocimiento de objetos, la visión por computadora, el análisis de datos, el control de calidad (monitoreo) y el análisis predictivo.

Entonces, sabemos que el aprendizaje automático se basa en algoritmos de procesamiento de datos y en los datos en sí. Acerca de los métodos MO, puede profundizar en una serie separada de artículos. Describirlos sería comparable a enumerar posibles tecnologías en el desarrollo web y su aplicación si cada una de estas tecnologías tiene sus ventajas y desventajas.

Solo se debe tener en cuenta que con el tiempo, los algoritmos y métodos de procesamiento de datos mejoran, y cada vez hay más datos, lo que mejora la calidad del procesamiento de datos.

De los tipos de datos, me gustaría prestar atención a la serie temporal en el ejemplo de un proyecto personal: el comercio automatizado de criptomonedas.

Análisis de series temporales


Una serie de tiempo es un tipo de datos que se pueden representar como secuencias de mediciones ordenadas en instantes de tiempo no aleatorios.

Hay dos objetivos principales del análisis de series de tiempo:
determinar la naturaleza de una serie y pronosticar (predecir valores futuros de una serie de tiempo a partir de valores presentes y pasados). Esto implica la identificación y descripción del modelo de serie, y la interpretación de datos, lo que nos permite derivar el valor futuro de la serie.

Usando métodos MO para tales datos, podemos encontrar patrones más profundos en los datos. Como resultado, obtenemos un pronóstico más "inteligente" de los valores futuros.

A diferencia del análisis de muestras de datos aleatorios, el análisis de series de tiempo se basa en el supuesto de que los valores secuenciales en el archivo de datos se observan a intervalos regulares. En otros métodos, no somos importantes y, a menudo, no estamos interesados ​​en vincular las observaciones con el tiempo.

En otras palabras, para el análisis es importante que el evento X ocurriera en el momento Y. Por ejemplo, el tipo de cambio, somos importantes en la selección, donde el precio está vinculado a un punto específico en el tiempo. Si interrumpe el orden de las fechas en una serie de fecha-precio, entonces no tendrá sentido.

Por ejemplo, usando series de tiempo financieras, el algoritmo MO puede hacer un pronóstico sobre el crecimiento o la disminución de la rentabilidad. Al procesar archivos de audio, donde las series temporales se expresarán mediante cambios en el tono en relación con el tiempo, puede analizar el significado del discurso. Dados los datos meteorológicos, se pueden derivar pronósticos meteorológicos complejos a través del MO y las series temporales.

Si los algoritmos del MO analizan, por ejemplo, las imágenes de los sellos, entonces no nos importa el momento ni el orden en que llegan las imágenes.

Usando criptomonedas como ejemplo


En mi proyecto, traté de responder a la pregunta de si es posible construir un sistema de negociación completamente automático basado en métodos de aprendizaje automático. Para hacer esto, encontré y recopilé datos históricos sobre precios de bitcoin, volúmenes de transacciones, así como pedidos realizados y retirados.

Después de un tiempo, a través de prueba y error, llegué a una cierta comprensión de cómo deberían interpretarse estos datos, qué arquitectura de red neuronal usar, cómo etiquetar los datos, etc. En particular, el entrenamiento se lleva a cabo con una granularidad de 10 segundos, y el precio en el futuro se usa como el valor resultante.

Ahora el algoritmo usa varios modelos entrenados en diferentes momentos, porque Constantemente mejoré el algoritmo de aprendizaje y le agregué nuevos datos recopilados. Para la implementación, se utilizó el lenguaje de programación Python con las bibliotecas Keras, Scipy, Pandas.

El script para ejecutar operaciones comerciales coloca órdenes en la plataforma de operaciones de Bitmex durante todo el día. Cuando una señal parece abrir una posición y completar la transacción relevante, el script esperará hasta que el precio alcance los niveles de Take Profit o Stop Loss, o hasta que la transacción expire (Time To Live).


El archivo de registro principal que muestra el procesamiento de datos en tiempo real

El algoritmo de procesamiento de datos se basa en análisis de datos técnicos, historial comercial, pedidos anteriores, pedidos y noticias relacionadas con la criptomoneda (a través del procesamiento del lenguaje natural o procesamiento del lenguaje natural - PNL).

La métrica de éxito principal es la precisión basada en el número de pedidos Take Profit en relación con el número total de pedidos. En total, el pronóstico se considera exitoso cuando se alcanza la orden Take Profit, mientras que el modelo reconoce que Stop Loss y Time to Live no tienen éxito.

Precisión = (Número de pedidos de tipo Take profit) / (Número total de pedidos)

La negociación se considera rentable cuando se alcanza una precisión del 67%.
MesExactitud
Enero 202072%
Febrero 202070%
Marzo 202060%
Abril 202070%

A continuación se presentan las transacciones presentadas visualmente con una solución de software de este tipo.


Los triángulos verdes son transacciones exitosas (Tome ganancias logradas), los triángulos rojos no tienen éxito (Stop loss, Time to Live). Los triángulos que miran hacia arriba son ofertas de compra, los triángulos que miran hacia abajo son ofertas de venta.

En custodia


El comercio automatizado es solo una de las aplicaciones más obvias posibles del análisis de series de tiempo. Si hablamos de negocios, pronosticar diferentes indicadores basados ​​en los datos recopilados puede ser de importancia crítica. Con base en tales pronósticos, ahora se pueden tomar decisiones comerciales importantes, y en el futuro el volumen de decisiones tomadas automáticamente solo crecerá.

Realizar tales cálculos es un proceso bastante intensivo en recursos. Afortunadamente, la potencia informática de los sistemas informáticos aumenta constantemente. Además, la rama moderna de la informática que estudia la IA tiene como objetivo crear algoritmos que utilicen de manera más efectiva los recursos informáticos disponibles para identificar patrones en los datos acumulados.

La derivación y construcción de pronósticos es imposible sin el uso de series de tiempo. Es este tipo de datos el que subyace a los pronósticos que ayudan a los ejecutivos a tomar decisiones que son vitales para los negocios. Sin lugar a dudas, el análisis de series de tiempo y su procesamiento por los algoritmos MO es una parte integral de los procesos comerciales del futuro.

All Articles