Agente comercial basado en aprendizaje por refuerzo profundo para Bitcoin que utiliza DeepSense Network para la aproximación de la función Q.
Para obtener detalles completos del conjunto de datos, el preprocesamiento, la arquitectura de red y la implementación, consulte la Wiki de este repositorio.
Para configurar una máquina virtual ubuntu con todas las dependencias para ejecutar el código, consulte assets/vm
.
Extraiga la imagen de Docker prediseñada directamente desde Docker Hub y ejecútela como
docker pull samre12/deep-trading-agent:latest
docker run -p 6006:6006 -it samre12/deep-trading-agent:latest
O
Cree la imagen de la ventana acoplable localmente ejecutando el comando y ejecute la imagen como
docker build -t deep-trading-agent .
docker run -p 6006:6006 -it deep-trading-agent
Esto configurará el repositorio para entrenar al agente y
monte el directorio actual en /deep-trading-agent
en el contenedor
Durante la creación de la imagen, se extrae y muestrea el historial de transacciones más reciente del intercambio para crear un conjunto de datos a escala por minuto de los precios de Bitcoin. Este conjunto de datos se encuentra en /deep-trading-agent/data/btc.csv
para iniciar la capacitación del agente, especifique los parámetros adecuados en un archivo de configuración (se proporciona un archivo de configuración de ejemplo en /deep-trading-agent/code/config/config.cfg
) y ejecute el código usando /deep-trading-agent/code/main.py
la capacitación admite el registro y el monitoreo a través de Tensorboard
vim
y screen
están instalados en el contenedor para editar los archivos de configuración y ejecutar tensorboard
vincule el puerto 6006 del contenedor al 6006 de la máquina host para monitorear el entrenamiento usando Tensorboard
¿Por favor proporcione un a este repositorio para respaldar el proyecto?
Preprocessor
está inspirado en Deep Q-Trading, donde resuelven un problema comercial simplificado para un solo activo.
Para cada unidad comercial, sólo se permite una de las tres acciones: neutral(1), larga(2) y corta(3) y se obtiene una recompensa dependiendo de la posición actual del agente. El agente Deep Q-Learning está capacitado para maximizar las recompensas totales acumuladas.
El modelo actual de Deep Q-Trading se modifica utilizando la arquitectura Deep Sense para la aproximación de la función Q.
La serie Bitcoin por minuto se obtiene modificando el procedimiento mencionado en este repositorio. Se muestrean las transacciones en el intercambio Coinbase para generar la serie de precios de Bitcoin.
Consulte assets/dataset
para descargar el conjunto de datos.
Preprocesamiento básico
Ignore por completo los valores faltantes, elimínelos del conjunto de datos y acumule bloques de valores continuos utilizando las marcas de tiempo de los precios.
Todos los bloques acumulados con un número de marcas de tiempo inferior a la duración histórica combinada del estado y el horizonte del agente se filtran, ya que no se pueden utilizar para el entrenamiento del agente.
En la implementación actual, se utilizan los precios de Bitcoin por minuto de las últimas 3 horas (180 minutos) para generar la representación del estado actual del agente.
Con el conjunto de datos existente (al momento de escribir este artículo), los siguientes son los registros generados durante el preprocesamiento del conjunto de datos:
INFO:root:Number of blocks of continuous prices found are 58863
INFO:root:Number of usable blocks obtained from the dataset are 887
INFO:root:Number of distinct episodes for the current configuration are 558471
Preprocesamiento avanzado
Procese los valores faltantes y concatene bloques más pequeños para aumentar el tamaño de los bloques de precios continuos.
La técnica estándar en la literatura para completar los valores faltantes de una manera que no afecte mucho el rendimiento del modelo es utilizar un relleno exponencial sin decaimiento.
(Por implementar)
La versión "1.1.0" de Tensorflow se utiliza para la implementación de la red Deep Sense .
La implementación se adapta desde este repositorio de Github con algunas simplificaciones en la arquitectura de la red para incorporar el aprendizaje sobre una única serie temporal de datos de Bitcoin.
La implementación y el preprocesamiento se inspiran en esta publicación de Medium. La implementación real de Deep Q Network está adaptada de DQN-tensorflow.