강화학습 기반 주식 트레이딩 시스템

머신러닝 알고리즘 분류(유형)는 크게 목적(라벨) 변수 유무에 따라 지도학습과 비지도학습으로 분류한다. 또 하나  재미있는 분류로는 강화학습이 있다. 강화학습은 에이전트와 환경이 주어질 때, 에이전트가 행하는 행위에 대한 보상(reward)으로 학습한다. 데이터 1건1건마다 라벨링값이 주어지는 지도학습과 달리 강화학습에서는 행위에 대한 보상(지도학습에서의 라벨링 역할)이 매번 주어질 필요가 없다. 이를 지연 보상(delayed reward)이라고 한다. 따라서 매번 행위 때마다 reward를 할 필요없이 행위가 여러번 시행된 이후 결과만 보상해도 학습이 된다라는 사실이다. 강화학습을 사용한 바둑을 생각하면 이해가 될 것이다. 매수하다 보상이 아니라 승패 결과만 보상해도 된다.

트레이딩 관점에서의 강화학습

트레이딩 관점에서 강화학습을 생각하면 에이전트는 트레이더(trader)이고 에이전트의 행위는 사고 팔고 그리고 아무런 행위도 안하는 것이다. 사고 나서 아무런 행위를 안하면 산 종목을 보유하겠다는 것으로 해석 가능하다. 에이전트가 구별할 수 있는 환경(에이전트가 인식할 수 있는 상태값)은 주식에서 얻을 수 있는 데이터들이다. 가장 기본적으로 차트 데이터가 있고 기타로는 지표 (PER 등), 뉴스 등 다양한 것들이 있을 수 있다. 강화학습이 제대로 학습만 된다면 너무나도 좋다. 사고 팔고 할 때 매번 보상을 줄 필요 없이 일정 기간 동안의 수익률(바둑에서의 승패)만 가지고도 학습이 왠지 쉬워 보일 듯 하다. 지도학습처럼 살 때 팔 때 따로 따로 모델을 만들어서 학습할 필요없이 강화학습 에이전트의 행위 자체가 사고 파는 그리고 보유(무행위)하는 인공지능 모델이 한번에 만들어지니 얼마나 좋겠는가…

실전 경험

강화학습을 접한지는 오래되었지만, 주식에 접하면 어떨까 싶어 시도를 해본 경험은 몇년 전이다. 뉴스나 논문을 봐도 강화학습을 이용한 로봇 트레이딩 시스템이 종종 있다. 그러나 필자가 시도한 바로는 학습이 쉽지 않았다. 사고 팔고 보유하는 단일 모델로 트레이딩 시스템을 구현해보고 싶었으나 현재까지도 보류(지금은 강화학습보다는 지도학습으로 변경) 상태이다. 강화학습에 대한 이해가 부족해서인지 아니면 에이전트 입력값(환경 상태)을 잘 못 잡아서인지 어려웠다. 강화학습 구현에는 텐서플로우 기반 오픈 소스를 활용해 DQN 이라는 딥러닝 강화학습 알고리즘을 사용했다. 시중에 나와있는 책을 사서도 봤지만 학습이 되질 않았다. 왜 학습이 안될까? 여기서 학습이 안된다는 의미는, 에이전트가 보지 못한 테스트 데이터셋에 적용을 해서 수익률이 나지 않음을 의미한다.  내 나름 주식 환경에서 강화학습이 어려운 점을 정리해 본다.

  1. 상태 공간이 너무 커 DQN 망 학습이 어려움.
    결국 DQN의 입력값은 상태값이 되며, 출력값은 가치(value) 값인데 상태에 대한 가치 추정이 어려움
  2. 에이전트 독립적인 환경
    보통 강화학습에서의 에이전트와 환경의 관계에는 에이전트 행위에 따라 환경이 상태값을 리턴하며 최종 목적지에 도착할 경우 보상을 준다. 그리드(grid) 월드나 바둑을 생각하면 된다. 그러나 주식 환경에서는 에이전트 행위와 거의 상관없이 환경이 변한다. 수십만 수백만 에이전트가 환경에 물려 있어 실제 거래하고 있는 에이전트는 환경에 거의 영향을 줄 수 없다는 의미다. 다시 말해, 목적 지향적인 패스가 주어지고 최종 보상이 주어지는 환경이 아니라는 것이다. 랜덤워크로 변화하는 차트를 기반으로 에이전트 입장에서는 마구 잡이로 보상하는 환경에 대해서 에이전트가 과연 학습을 할 수 있겠는가?

필자의 실전 경험과 이해를 바탕으로 작성한 글이니 잘못 작성된 부분도 있을 것이다. 혹시 다른 의견을 가지고 계신 분이나 주식 환경에서의 강화학습이 가능하다라고 주장하시는 분, 기타 등등 관련 내용을 공유해 주시면 정말 고마울 것이다. ㅎ 정말로 궁금하다 과연 강화학습으로 수익이 날 수 있는지… 가끔 강화학습 기반 로보트레이더 기사를 보면 더욱 궁금해진다. 세계 최고 강화학습 기술을 보유하고 있는 그 유명한 딥마인드(DeepMind)는 왜 주식에 적용하지 않을까? ㅎㅎ

(강화학습에 관심있는 여러분의 의견 내지는 조언을 듣고 싶습니다.)