Auf Deep Reinforcement Learning basierender Handelsagent für Bitcoin unter Verwendung des DeepSense-Netzwerks zur Q-Funktionsnäherung.
Ausführliche Informationen zum Datensatz, zur Vorverarbeitung, zur Netzwerkarchitektur und zur Implementierung finden Sie im Wiki dieses Repositorys.
Informationen zum Einrichten einer virtuellen Ubuntu-Maschine mit allen Abhängigkeiten zum Ausführen des Codes finden Sie unter assets/vm
.
Ziehen Sie das vorgefertigte Docker-Image direkt vom Docker-Hub und führen Sie es als aus
docker pull samre12/deep-trading-agent:latest
docker run -p 6006:6006 -it samre12/deep-trading-agent:latest
ODER
Erstellen Sie das Docker-Image lokal, indem Sie den Befehl ausführen und das Image dann ausführen als
docker build -t deep-trading-agent .
docker run -p 6006:6006 -it deep-trading-agent
Dadurch wird das Repository für die Schulung des Agenten eingerichtet und
Hängen Sie das aktuelle Verzeichnis in /deep-trading-agent
im Container ein
Während der Image-Erstellung wird der aktuelle Transaktionsverlauf der Börse abgerufen und abgetastet, um einen Datensatz der Bitcoin-Preise im Minutenmaßstab zu erstellen. Dieser Datensatz wird unter /deep-trading-agent/data/btc.csv
abgelegt
Um das Training des Agenten zu starten, geben Sie geeignete Parameter in einer Konfigurationsdatei an (eine Beispielkonfigurationsdatei finden Sie unter /deep-trading-agent/code/config/config.cfg
) und führen Sie den Code mit /deep-trading-agent/code/main.py
aus /deep-trading-agent/code/main.py
Das Training unterstützt die Protokollierung und Überwachung durch Tensorboard
vim
und screen
werden im Container installiert, um die Konfigurationsdateien zu bearbeiten und tensorboard
auszuführen
Binden Sie Port 6006 des Containers an 6006 des Host-Computers, um das Training mit Tensorboard zu überwachen
Bitte geben Sie diesem Repository ein, um das Projekt zu unterstützen.
Preprocessor
ist von Deep Q-Trading inspiriert, wo sie ein vereinfachtes Handelsproblem für einen einzelnen Vermögenswert lösen.
Für jede Handelseinheit ist nur eine der drei Aktionen: Neutral (1), Long (2) und Short (3) zulässig und es wird eine Belohnung abhängig von der aktuellen Position des Agenten erhalten. Der Deep-Q-Learning-Agent ist darauf trainiert, die insgesamt angesammelten Belohnungen zu maximieren.
Das aktuelle Deep Q-Trading-Modell wird durch die Verwendung der Deep Sense -Architektur zur Q-Funktionsnäherung modifiziert.
Die Bitcoin-Serie pro Minute wird durch Modifizieren des in diesem Repository erwähnten Verfahrens erhalten. Transaktionen an der Coinbase- Börse werden abgetastet, um die Bitcoin-Preisreihe zu erstellen.
Informationen zum Herunterladen des Datensatzes finden Sie unter assets/dataset
.
Grundlegende Vorverarbeitung
Ignorieren Sie fehlende Werte vollständig, entfernen Sie sie aus dem Datensatz und sammeln Sie Blöcke kontinuierlicher Werte unter Verwendung der Zeitstempel der Preise.
Alle akkumulierten Blöcke mit einer Anzahl von Zeitstempeln, die kleiner als die kombinierte Verlaufslänge des Status und Horizonts des Agenten ist, werden dann herausgefiltert, da sie nicht für das Training des Agenten verwendet werden können.
In der aktuellen Implementierung werden die Bitcoin-Preise der letzten 3 Stunden (180 Minuten) pro Minute verwendet, um die Darstellung des aktuellen Status des Agenten zu generieren.
Mit dem vorhandenen Datensatz (zum Zeitpunkt des Schreibens) sind die folgenden Protokolle aufgeführt, die während der Vorverarbeitung des Datensatzes generiert wurden:
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
Erweiterte Vorverarbeitung
Verarbeiten Sie fehlende Werte und verketten Sie kleinere Blöcke, um die Größe kontinuierlicher Preisblöcke zu erhöhen.
Die in der Literatur übliche Technik zum Auffüllen der fehlenden Werte auf eine Weise, die die Leistung des Modells nicht wesentlich beeinträchtigt, ist die Verwendung einer exponentiellen Auffüllung ohne Zerfall.
(Muss umgesetzt werden)
Für die Implementierung des Deep Sense -Netzwerks wird die Tensorflow-Version „1.1.0“ verwendet.
Die Implementierung wurde aus diesem Github-Repository mit einigen Vereinfachungen in der Netzwerkarchitektur übernommen, um das Lernen über eine einzelne Zeitreihe der Bitcoin-Daten zu integrieren.
Die Implementierung und Vorverarbeitung ist von diesem Medium-Beitrag inspiriert. Die eigentliche Implementierung des Deep Q Network ist von DQN-Tensorflow übernommen.