프로젝트/[AI] 자동매매

[자동매매] 23-08-05 모델 개선, 실제 도입

TaeGyeong Lee 2023. 8. 5. 21:05

학기 수업에서 진행한 자동매매 봇 업데이트 기록입니다.

 

맥 미니 입양

중고로 맥 미니를 입양했습니다. 맥 미니에서 실제 매매, 모델 학습을 24시간 돌리고 있습니다. 항상 들고 다니는 맥북으로 원격 접속이 가능해서 편하게 모니터링할 수 있습니다.

 

모델 개선 : 리워드

리워드 지급 방식을 개선하였습니다. 제가 실제 도입하여 거래를 쭉 지켜본 결과 당연하지만 놓친 부분이 있었습니다. 업비트 거래 수수료입니다. 이전 모델은 수수료를 감안하지 않아 손해를 보는 경우까지 올바른 선택으로 간주, 학습하고 있었습니다.

업비트 거래 수수료를 반영하여 리워드를 지급하도록 모델을 학습시켰습니다.

리워드 반영 후 학습한 모델 결과, 초반 유의미한 상승 곡선을 그리지만 아직은 손해를 보고 있습니다.

 

모델 개선 : 거래 기간 증가

모델이 매수, 매도를 결정하는 거래 기간을 증가했습니다.(표현이 좀 이상하네요..) 6시간으로(360분) 이전 모델 대비 3배 더 많은 기간의 거래 데이터를 기반으로 학습, 매매하도록 모델을 개선했습니다.

그런데,, 실제 거래하는 꼴을 지켜보면 다시 거래 기간을 줄일까 고민중입니다.. 거래 기간이 길수록 항상 성능이 올라가는 건 아닌 것 같습니다. 당분간 매우 짧은 범위의 학습을 모다 많이 반복시켜 모델의 완성도가 어느 정도 높아지는 지 확인해 볼 예정입니다.

 

모델 개선 : 이산화 범위 증가

Q-Table 생성 시 이산화 범위를 기존 대비 3배 증가했습니다. 이로 인한 명확한 성능 향상은 아직 보이고 있지는 않습니다.

 

DQN 시도 (실패)

맥에서 Tensorflow GPU 학습이 가능하기에 시간을 내어 Q-Learning에서 DQN으로 모델 변경을 추진했습니다. 테스트 코드를 돌려본 후 GPU 학습까지 문제 없지 진행했습니다. 문제는 학습을 돌리는 제 맥 미니의 램이 8기가... 테스트 코드로 텐서플로 학습을 돌렸을 때 램을 3기가나 먹는 걸 보고 기겁,,, 포기했습니다.

다음에 CUDA 지원 GPU, 16기가 램 이상의 노트북/데탑을 구매하게 되면 다시 도전해 보겠습니다.

 

실제 도입

업비트 API를 사용하여 학습한 모델을 실제 거래에 진행하였습니다. Slack 봇을 만들어 매수, 매도, 손실 한도 초과 시 이를 알려주도록 설정했습니다. 아래 보시다시피 매수, 매도, 손실 한도 초과 시 알림을 줍니다.

손실 한도 초과로 강제 매도 후 항상 빠르게 매수하는 무서운 아이