基於深度強化學習的比特幣交易代理,使用 DeepSense 網路進行 Q 函數逼近。
有關資料集、預處理、網路架構和實現的完整詳細信息,請參閱此儲存庫的 Wiki。
若要設定具有所有相依性的 ubuntu 虛擬機器來執行程式碼,請參閱assets/vm
。
直接從 docker hub 拉取預先建置的 docker 映像並運行它
docker pull samre12/deep-trading-agent:latest
docker run -p 6006:6006 -it samre12/deep-trading-agent:latest
或者
透過執行命令在本機上建置 docker 映像並運行該映像:
docker build -t deep-trading-agent .
docker run -p 6006:6006 -it deep-trading-agent
這將設置用於培訓代理的存儲庫並
將目前目錄掛載到容器中的/deep-trading-agent
中
在影像建構過程中,會提取並採樣交易所的最新交易歷史記錄,以建立每分鐘的比特幣價格資料集。該資料集位於/deep-trading-agent/data/btc.csv
若要啟動代理程式的訓練,請在設定檔中指定合適的參數( /deep-trading-agent/code/config/config.cfg
中提供了範例設定檔)並使用/deep-trading-agent/code/main.py
訓練支援透過Tensorboard進行日誌記錄和監控
容器中安裝vim
和screen
,用於編輯設定檔和執行tensorboard
將容器的6006端口綁定到主機的6006端口,以使用Tensorboard監控訓練
請給這個儲存庫一個支援該專案?
Preprocessor
中提取給定時間間隔內比特幣的最高和最低價格以及交易量受到 Deep Q-Trading 的啟發,他們解決了單一資產的簡化交易問題。
對於每個交易單元,僅允許中性(1)、多頭(2)和空頭(3)三種操作之一,並根據代理商的當前部位獲得獎勵。深度 Q 學習代理經過訓練,可以最大化總累積獎勵。
目前的 Deep Q-Trading 模型是透過使用Deep Sense架構進行Q 函數逼近來修改的。
每分鐘比特幣系列是透過修改此儲存庫中提到的過程獲得的。對Coinbase交易所中的交易進行採樣以產生比特幣價格系列。
請參閱assets/dataset
集下載資料集。
基本預處理
完全忽略缺失值並將其從資料集中刪除,並使用價格時間戳記累積連續值區塊。
然後,過濾掉所有時間戳數量小於代理狀態和視野的組合歷史長度的累積區塊,因為它們不能用於代理的訓練。
在目前的實作中,過去 3 小時(180 分鐘)的每分鐘比特幣價格用於產生代理當前狀態的表示。
對於現有資料集(在撰寫本文時),以下是預處理資料集時產生的日誌:
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
進階預處理
處理缺失值並連接較小的區塊以增加連續價格區塊的大小。
文獻中以不會對模型性能產生太大影響的方式填充缺失值的標準技術是使用不衰減的指數填充。
(待實施)
Tensorflow「1.1.0」版本用於Deep Sense網路的實作。
實作是根據這個 Github 儲存庫改編的,並對網路架構進行了一些簡化,以納入對比特幣資料的單一時間序列的學習。
實現和預處理的靈感來自這篇 Medium 文章。 Deep Q Network 的實際實作改編自 DQN-tensorflow。