Agent de trading basé sur l'apprentissage par renforcement profond pour Bitcoin utilisant DeepSense Network pour l'approximation de la fonction Q.
Pour des détails complets sur l'ensemble de données, le prétraitement, l'architecture réseau et la mise en œuvre, reportez-vous au Wiki de ce référentiel.
Pour configurer une machine virtuelle Ubuntu avec toutes les dépendances pour exécuter le code, reportez-vous à assets/vm
.
Extrayez l'image Docker prédéfinie directement depuis Docker Hub et exécutez-la en tant que
docker pull samre12/deep-trading-agent:latest
docker run -p 6006:6006 -it samre12/deep-trading-agent:latest
OU
Créez l'image Docker localement en exécutant la commande et exécutez l'image en tant que
docker build -t deep-trading-agent .
docker run -p 6006:6006 -it deep-trading-agent
Cela configurera le référentiel pour la formation de l'agent et
monter le répertoire actuel dans /deep-trading-agent
dans le conteneur
lors de la création de l'image, l'historique des dernières transactions de l'échange est extrait et échantillonné pour créer un ensemble de données à l'échelle minute des prix Bitcoin. Cet ensemble de données est placé dans /deep-trading-agent/data/btc.csv
pour lancer la formation de l'agent, spécifiez les paramètres appropriés dans un fichier de configuration (un exemple de fichier de configuration est fourni dans /deep-trading-agent/code/config/config.cfg
) et exécutez le code à l'aide de /deep-trading-agent/code/main.py
la formation prend en charge la journalisation et la surveillance via Tensorboard
vim
et screen
sont installés dans le conteneur pour éditer les fichiers de configuration et exécuter tensorboard
lier le port 6006 du conteneur au 6006 de la machine hôte pour surveiller la formation à l'aide de Tensorboard
Veuillez donner un à ce référentiel pour soutenir le projet ?.
Preprocessor
s'inspire de Deep Q-Trading où ils résolvent un problème de trading simplifié pour un seul actif.
Pour chaque unité de trading, une seule des trois actions : neutre(1), long(2) et short(3) est autorisée et une récompense est obtenue en fonction de la position actuelle de l'agent. L'agent Deep Q-Learning est formé pour maximiser le total des récompenses accumulées.
Le modèle Deep Q-Trading actuel est modifié en utilisant l'architecture Deep Sense pour l'approximation de la fonction Q.
La série Bitcoin par minute est obtenue en modifiant la procédure mentionnée dans ce référentiel. Les transactions sur la bourse Coinbase sont échantillonnées pour générer la série de prix Bitcoin.
Reportez-vous à assets/dataset
pour télécharger l’ensemble de données.
Prétraitement de base
Ignorez complètement les valeurs manquantes, supprimez-les de l'ensemble de données et accumulez des blocs de valeurs continues en utilisant les horodatages des prix.
Tous les blocs accumulés avec un nombre d'horodatages inférieur à la longueur de l'historique combiné de l'état et de l'horizon de l'agent sont ensuite filtrés car ils ne peuvent pas être utilisés pour la formation de l'agent.
Dans la mise en œuvre actuelle, les prix Bitcoin par minute des 3 dernières heures (180 minutes) sont utilisés pour générer la représentation de l’état actuel de l’agent.
Avec l'ensemble de données existant (au moment de la rédaction), voici les journaux générés lors du prétraitement de l'ensemble de données :
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
Prétraitement avancé
Traitez les valeurs manquantes et concaténez des blocs plus petits pour augmenter la taille des blocs de prix continus.
La technique standard dans la littérature pour remplir les valeurs manquantes d'une manière qui n'affecte pas beaucoup les performances du modèle consiste à utiliser un remplissage exponentiel sans décroissance.
(À mettre en œuvre)
La version Tensorflow "1.1.0" est utilisée pour la mise en œuvre du réseau Deep Sense .
La mise en œuvre est adaptée de ce référentiel Github avec quelques simplifications dans l'architecture réseau pour intégrer l'apprentissage sur une seule série temporelle de données Bitcoin.
La mise en œuvre et le prétraitement sont inspirés de cet article Medium. La mise en œuvre réelle du Deep Q Network est adaptée de DQN-tensorflow.