Skip to content

Latest commit

 

History

History
134 lines (110 loc) · 5.72 KB

README_de.md

File metadata and controls

134 lines (110 loc) · 5.72 KB

🌍 EnglishGerman

Reinforcement Learning für die taktische Asset Allocation

Dieses Projekt beinhaltet das Trainieren und das Testen verschiedener RL Agenten auf einem Portfolio Environment. Hierbei gilt für die Interaktion zwischen Environment und Agent:
Environment <> Runner <> Agent <> Model

Wichtige Dateien und Ordner

Voraussetzungen

Die hier vorgestellte Implementierung erfolgte hauptsächlich in Python, daher wird zur Replikation der Ergebnisse oder dem Testen der Implementierung Python Version >= 3.6 vorausgesetzt. Folgende Python Packages werden zudem benötigt:

  • h5py==2.7.1
  • Keras==2.1.3
  • matplotlib==2.1.0
  • numpy==1.14.1
  • pandas==0.20.3
  • pandas-datareader==0.5.0
  • scikit-learn==0.19.1
  • scipy==1.0.0
  • seaborn==0.8.1
  • tensorflow==1.4.0
  • tensorflow-tensorboard==0.4.0rc3
  • tensorforce==0.3.5.1

Ausführen der Trainingsdatei

Zum Training eines Agenten sollte die Datei train.py über die Konsole ausgeführt werden.
Zum Beispiel:

python ~/path/to/file/run/train.py -at "clipping" -v 1

Änderungen an den Environment und Run Parametern können innerhalb der Trainingsdatei, der Config Datei oder über den nachfolgend vorgestellten Flags vorgenommen werden.

Anpassungen der Agenten und Modell Spezifikationen müssen über die jeweiligen Konfigurationsdatein im json-Format vorgenommen werden.

Flags:

Flag 1 Flag 2 Bedeutung
-d --data Pfad der environment.csv Datei
-sp --split Training/Test Split
-th --threaded (bool) Threaded Runner oder Single Runner
-ac --agent-config Pfad der Agenten Configdatei
-nw --num-worker Anzahl an Threads falls Threaded ausgewählt wurde
-ep --epochs Anzahl an Epochen
-e --episodes Anzahl an Epsioden
-hz --horizon Investmenthorizont
-at --action-type Aktionstyp: 'signal', 'signal_softmax', 'direct', 'direct_softmax', 'clipping'
-as --action-space Aktionsraum: 'unbounded', 'bounded', 'discrete'
-na --num-actions Anzahl an Aktionen bei diskretem Aktionsraum
-mp --model-path Pfad für das Speichern des Agenten
--eph --eval-path Pfad für das Speichern der Evaluierungsdateien
-v --verbose Gibt an wie viel in der Konsole agezeigt werden soll
-l --load-agent Falls angegeben wird der Agent von einem früheren Speicherpunkt geladen (Pfad)
-ds --discrete_states Diskretisiert den State falls True
-ss -standardize-state (bool) Standardisierter oder normaliserter State
-rs --random-starts Entweder je Epoche die gleiche Reihenfolge an Episodenstarts oder zufällige

Ausführen des Testdatei

Das Ausführen der Testdatei entspricht im Wesentlichen dem der Trainingsdatei. Es sollte unter saves ein Checkpoint für das Testen des ausgewählten Agenten vorliegen. Grundsätzlich werden automatisch die Modelle der trainierten Agenten unter der jeweiligen Agentenbezeichnung in diesem Ordner gespeichert.

python ~/path/to/project/run/test.py -l /project/model/saves/AgentName

Der Ordner saved_results enthält für mehrere Parameterkonstellationen bereits vortrainierte Agenten. Um diese zu testen, müssen dementsprechend die nachfolgenden Flags passend konfiguriert werden.

Flags

Flag Flag 2 Bedeutung
-d --data Pfad der environment.csv Datei
-ba --basic-agent Auswahl eines BasicAgenten: 'BuyAndHoldAgent', 'RandomActionAgent'
-sp --split Training/Test Split
-ac --agent-config Pfad der Agenten Configdatei
-e --episodes Anzahl an Epsioden
-hz --horizon Investmenthorizont
-at --action-type Aktionstyp: 'signal', 'signal_softmax', 'direct', 'direct_softmax', 'clipping'
-as --action-space Aktionsraum: 'unbounded', 'bounded', 'discrete'
-na --num-actions Anzahl an Aktionen bei diskretem Aktionsraum
--eph --eval-path Pfad für das Speichern der Evaluierungsdateien
-v --verbose Gibt an wie viel in der Konsole angezeigt werden soll
-l --load-agent Lädt den Agenten von einem früheren Speicherpunkt (Pfad)
-ds --discrete_states (bool) Diskretisiert den State falls True
-ss -standardize-state Standardisierter oder normaliserter State

TensorBoard

Die Datein predictor.py, sowie train.py integrieren TensorBoard. TensorBoard lässt sich über

tensorboard --logdir path/to/project/env/board
tensorboard --logdir path/to/project/run/board

starten und über localhost:6006 betrachten. Für den TRPO Agenten war leider eine Integration von TensorBoard nicht möglich.

Anmerkung

Ende Februar 2018 gab es eine größeres TensorForce Update. Hier wird noch eine alte Version verwendet und eine Umstellung war zeitlich nicht mehr möglich. Es kann somit bei Verwendung einer neueren Tensorforce Version eventuell zu Konflikten kommen.

Credits