코인 자동 매매 시스템을 개발하는 미니 프로젝트를 시작했다. 주식이 아닌 코인으로 자동 매매 시스템을 개발하는 이유는 접근성이 쉽게 느껴졌기 때문이다. 또한, 외부적 요인 없이 차트 자체로 예측하기 쉬울 것이라고 판단했다. (근거 없는 개인의 의견...)
여유가 있을 때마다 개발 및 예측 모델 실험을 할 예정이며 최종적으론 파이썬 라이브러리로 사용할 수 있게 함과 동시에 웹으로 자동 매매 결과를 배포하여 모델의 성능이나 해당 시스템을 사용했을 시에 손익을 나타내는 것을 목표로 하고 있다. (그 과정에서 ML 뿐만 아니라 프론트와 백앤드도 학습하여 어느 정도 Full-Stack 지식을 쌓고 싶다.)
시스템 설계
자동 매매 시스템은 config.json에서 하이퍼파라미터를 입력받고 자동 매매가 진행될 main.py과 모델의 하이퍼파라미터 튜닝과 성능 평가, Back-Testing이 진행될 test.ipynb 위에서 진행될 것이다.
(Back-Testing : 과거 데이터를 사용해서 투자 전략이 어느 정도의 수익률이 나는지를 확인하는 과정)
하이퍼파라미터 dummy의 초기 양식은 아래와 같다.
config.json에서는 코인 종류부터 시가 간격까지도 입력되게 해놨지만, 현재까지는 1시간 단위의 간격과 비트코인(KRW-BTC)만 구현된 상태이며 앞으로 더 구체화할 것이다.
main.py와 test.ipynb라는 필드 내에서 사용될 함수들을 기능 단위로 모듈화하여 나타낼 것이다. 모듈의 종류는 아래와 같다.
- utils.py : 자동 매매와 관련 없는 함수들이지만 코드를 효율적으로 운용하기 위한 함수 저장
- upbitfunc.py : upbit url을 활용한 함수들로 자동 매매에 적합한 양식으로 변형한 함수 저장
- models.py : 코인 가격 예측을 위한 모델 클래스 저장
- strategies.py : 자동 매매 전략 클래스 저장
- validation.py : 모델의 성능을 평가하고 Back-Testing을 위한 함수 저장
- trading.py : 자동 매매 함수 저장
위 config.json과 모듈들은 main.py에서 아래와 같이 동작할 것이다.
main.py내에서 config.json을 입력받아 models.py와 strategies.py에서 선택된 모델과 전략으로 trading.py에서 자동 매매를 실행한다. test.ipynb에서도 같은 흐름으로 모델과 전략을 선택하고 validation.py의 모델 검증 함수와 Back-Testing 함수를 이용하여 테스트를 진행한다.
위에서 나타나지 않은 utils.py와 upbitfunc.py는 다른 모듈 내에서 차트 데이터를 불러오는 것과 같은 부가적인 기능을 수행한다.
Future Works
현재 시스템 설계를 마치고 첫 번째 모델을 페이스북의 시계열 모델인 Prophet로 하고 전략을 변동성 돌파 전략(Volatility Break-out Strategy)로 하여 구현하고 있다. 이는 "조코딩"님의 유튜브와 파이썬을 이용한 비트코인 자동 매매 도큐먼트를 참고하였다.
모델과 전략 그리고 모델 검증, Back-Testing 구현을 마치고 어느 정도 모델 성능과 하이퍼 파라미터를 튜닝한 뒤에 해당 과정과 결과를 다음 글로 작성할 것이다. 코드 또한 github에 올려 공유할 예정이다.
'Projects > System Trading' 카테고리의 다른 글
[코인 자동 매매 개발기 2] 변동성 돌파 전략, Prophet, Back-Testing (0) | 2022.05.30 |
---|
댓글