Q 함수 근사를 위해 DeepSense 네트워크를 사용하는 비트코인용 심층 강화 학습 기반 거래 에이전트.
데이터 세트, 전처리, 네트워크 아키텍처 및 구현에 대한 자세한 내용은 이 저장소의 Wiki를 참조하세요.
코드를 실행하기 위해 모든 종속성을 갖춘 우분투 가상 머신을 설정하려면 assets/vm
참조하세요.
미리 빌드된 도커 이미지를 도커 허브에서 직접 가져와 다음과 같이 실행합니다.
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
사용하여 코드를 실행합니다. /deep-trading-agent/code/main.py
교육은 Tensorboard를 통한 로깅 및 모니터링을 지원합니다.
구성 파일을 편집하고 tensorboard
실행하기 위해 vim
과 screen
컨테이너에 설치됩니다.
Tensorboard를 사용하여 훈련을 모니터링하기 위해 컨테이너의 포트 6006을 호스트 시스템의 6006 에 바인딩합니다.
프로젝트를 지원하려면 이 저장소에 을 제공하십시오.
Preprocessor
에서 주어진 시간 간격 내에서 거래된 비트코인의 최고 및 최저 가격과 거래량을 추출합니다. 단일 자산에 대한 단순화된 거래 문제를 해결하는 Deep Q-Trading에서 영감을 받았습니다.
각 거래 단위마다 중립(1), 롱(2), 숏(3) 세 가지 액션 중 하나만 허용되며 에이전트의 현재 위치에 따라 보상을 받습니다. Deep Q-Learning 에이전트는 총 누적 보상을 최대화하도록 훈련됩니다.
현재 Deep Q-Trading 모델은 Q 함수 근사를 위해 Deep Sense 아키텍처를 사용하여 수정되었습니다.
분당 비트코인 시리즈는 이 저장소에 언급된 절차를 수정하여 얻습니다. 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
고급 전처리
누락된 값을 처리하고 더 작은 블록을 연결하여 연속 가격 블록의 크기를 늘립니다.
모델 성능에 큰 영향을 주지 않는 방식으로 누락된 값을 채우는 문헌의 표준 기술은 붕괴 없이 지수 채우기를 사용하는 것입니다.
(구현 예정)
Deep Sense 네트워크 구현에는 Tensorflow "1.1.0" 버전이 사용됩니다.
비트코인 데이터의 단일 시계열에 대한 학습을 통합하기 위해 네트워크 아키텍처의 몇 가지 단순화를 통해 이 Github 저장소에서 구현이 조정되었습니다.
구현 및 전처리는 이 Medium 게시물에서 영감을 받았습니다. Deep Q Network의 실제 구현은 DQN-tensorflow에서 채택되었습니다.