• 대한전기학회
Mobile QR Code QR CODE : The Transactions of the Korean Institute of Electrical Engineers
  • COPE
  • kcse
  • 한국과학기술단체총연합회
  • 한국학술지인용색인
  • Scopus
  • crossref
  • orcid

  1. (Dept. of Information and Communication Engineering, Changwon National University, Korea.)



Trading bot, Deep Q-Network, Double Deep Q-Network, Reinforcement learning

1. 서 론

주식 거래는 시장 추세의 예측, 투자 종목의 선정, 거래 전략 등 다양한 요소를 고려한 뒤 이것들을 종합하여 행동을 취해야 한다. 사람이 아닌 기계가 주가를 예측하는 방법으로 지도 학습(1)-(4)을 사용하기도 하지만, 실제 주식시장의 잡음과 비정상성, 비선형성으로 인해 주가를 예측하는 것은 매우 어렵다. ‘효율적 시장 가설’(5)에 따르면 시장에 영향을 미치는 모든 정보가 주가에 이미 반영되어 있기 때문에 기계가 주가를 예측하는 것은 거의 불가능하다고 한다. 그러나 최근 기본 분석 기술과 기술 분석, 인공신경망의 결합이 시장 평균을 초과 달성할 수 있다는 연구결과가 제시되고 있다(6)-(10).

주식 거래를 자동으로 해주는 트레이딩 봇을 이용해 실제 주식시장에서 수익을 내기 위해서는 단순히 주가를 예측하는 것에 그치지 않고, 시장 가격을 이용해서 매수와 매도를 결정하고, 매수한 주식을 계속 보유하고 있을지 등의 행동을 결정하는 규칙을 스스로 학습하는 모델을 사용해야 한다. 이러한 이유로 강화학습을 사용한 주식 트레이딩 봇에 관한 여러 연구가 수행되었다. (11)은 Q-Learning 알고리즘을 이용하여 학습된 거래 시스템이 낸 수익 결과가 시장 평균을 능가하고 지도 학습으로 훈련된 시스템보다 위험 관리 측면에서 우수함을 보여주었다. (12)에서는 기본 데이터와 보조지표 데이터, 주가 변동요소 데이터를 상태 정보로 이용하여 주식 트레이딩 예측을 할 수 있는 Deep Q-Network(DQN)(13)을 이용한 강화학습 모델을 구현하였다. 강화학습을 이용한 트레이딩 모델이 거래 종목의 주가 패턴을 학습하여 시장 평균을 초과하는 수익 달성이 가능함을 보였다. (14)에서는 DQN을 이용하여 포트폴리오 거래 전략을 학습시키고, 미국과 한국 시장에서 기존의 포트폴리오 거래 전략들과 수익률을 비교하였다. 그 결과 미국과 한국 주식시장 모두에서 기존의 포트폴리오 거래 전략보다 DQN을 이용한 포트폴리오 거래 전략이 더 높은 수익률을 보였다. (15)에서는 강화학습을 사용하는 앙상블 전략을 이용하여 투자 수익을 극대화하는 주식 거래 전략을 설계하였다. 기존의 연구들을 검토해본 결과 주식시장에서 안정적인 수익을 창출하기 위한 트레이딩 봇에 적용할 인공지능기술로 강화학습이 적합하다는 것을 알 수 있다. 하지만, 기존의 연구에서 트레이딩 봇은 보유 자산과 거래 종목의 주가를 비교하지 않고서 매수/매도/유지 행동에 대한 가치를 예측한다. 이로 인해 자산이 없는 상황에서 매수행위를 하거나, 보유 주식이 없는 상황에서 매도행위를 하는 상황이 생겨 이에 대한 부가적인 예외처리가 필요하다. 또한, 대부분의 연구 결과들은 단기간의 수익에 대해서만 나타내고 장기간의 수익 결과에 대해서는 분석하지 않았다. 또한, 실제 주가 추이에 따라 트레이딩 봇이 어떠한 수익률이 나타나는지에 대해 비교 및 분석하지 않았다. 또한, DQN의 과대평가 문제를 해결하고 보다 일반화된 해결책을 찾아주는 Double DQN(DDQN)을 트레이딩 봇에 적용한 사례가 아직 없다.

본 연구에서는 보유 자산과 거래 종목의 주가를 고려하여 거래를 진행하는 트레이딩 봇을 DQN, DDQN으로 각각 구현하고, 실제 주가 추이에 따른 트레이딩 봇의 수익률 변화와 장기간의 거래에 따른 수익 결과를 알고리즘별로 비교, 분석하였다. 학습용 데이터 구축을 위해 한국 거래소에서 시가, 고가, 저가, 종가, 거래량 등의 일 단위 데이터를 수집하였고, 이를 이용해 이동평균, KDJ Stochastic, MACD, CCI, RSI 등의 기술적 보조지표를 생성하였다. 기존의 연구와 달리 강화학습 기반의 트레이딩 봇의 보유 자산과 거래 종목의 주가를 고려하여 매수/유지 행동의 가치를 예측하는 Buy agent, 매도/유지 행동의 가치를 예측하는 Sell agent를 Deep Neural Network (DNN)으로 각각 구현하여 모든 주식시장 상황에 대해 대응할 수 있게 하였다. 보상 기준은 Buy agent 행동에 따라 금일 대비 익일 종가 수치를 비교하였고, Sell agent 행동은 매수 시점대비 매도 시점의 수익률을 이용하였다. 트레이딩 봇의 성능 분석을 위해 실제 주가 추이에 따른 DQN 및 DDQN의 장기간 수익률 변화를 비교하였고, 그 결과 두 방식 모두 전반적으로 주가 추이와 유사한 수익률 추이를 보였다. 학습 기간에서의 실험결과 DQN이 DDQN보다 장기간의 수익에서 더욱 나은 성능을 보이나, 테스트 데이터 사용 시 DDQN이 대체로 DQN에 비해 장기간의 관점에서 더 높은 수익률을 보장해줌을 확인하였다. 또한 DQN모델은 주가 추이에 따라 수익률의 변동이 큰 결과가 나타났지만 DDQN모델은 상대적으로 변동이 크지 않으면서 주가 추이를 따라가는 결과를 나타내었다. 그러므로 장기적으로 안정적인 거래를 위한 트레이딩 봇에는 DDQN모델이 적합하다고 볼 수 있다.

2. 강화학습의 개요와 알고리즘

2.1 강화학습

강화학습의 프로세스는 그림 1과 같이 각 시간단계(Time Step)에서 에이전트(Agent)가 환경(Environment)으로부터 상태(State)를 입력받아 행동(Action)을 선택하고, 환경은 에이전트에게 행동에 대한 보상(Reward)을 주고 변화된 다음 상태를 생성한다. 에이전트는 학습 초기에 무작위로 행동하지만, 학습이 진행되면서 점차 보상이 큰 행동을 배우게 되고, 현재 상태에서 어떤 행동을 통해 얻을 수 있는 보상에 미래에 얻을 것으로 기대되는 보상을 누적하여 전체누적 보상을 최대화하는 최적의 정책(Policy)을 학습한다. 강화학습은 최적의 정책을 통해 얻은 보상들의 합인 가치함수를 최대로 하는 것이 최종 목표이다.

그림. 1. 강화학습 프로세스

Fig. 1. Reinforcement learning process

../../Resources/kiee/KIEE.2021.70.1.158/fig1.png

2.2 Q-Learning

모델 없이 학습하는 강화학습 기법의 하나인 Q-Learning의 정책은 다음과 같이 나타낼 수 있다.

(1)
$\pi^{*}\left(S_{t}\right)=\arg\max_{a}Q\left(s_{t},\:a_{t}\right)$

여기서 $\arg\max_{a}Q\left(s_{t},\:a_{t}\right)$는 현재 상태에서 할 수 있는 행동 중 가장 보상이 큰 행동을 뜻한다. Q-Learning의 가치함수는 다음과 같다

(2)
$Q_{Value}=R\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q\left(s_{t+1},\:a^{'}\right)$

$R\left(s_{t},\:a_{t}\right)$은 현재 상태$\left(s_{t}\right)$에서 행동$\left(a_{t}\right)$를 통해 얻은 즉각적인 보상을 뜻하며, $\gamma\max_{a_{t+1}}Q\left(s_{t+1},\:a^{'}\right)$는 다음 상태$(s_{t+1})$에서 할 수 있는 행동$(a^{'})$들 중 가장 보상이 큰 행동을 선택해 보상에 $\gamma$을 곱하여 계산된다. $\gamma$는 할인율이고 0~1의 값으로 설정하는데 1에 가까울수록 미래의 보상에 비중을 두고, 0에 가까울수록 현재의 보상에 비중을 두는 정책을 만든다. 가치를 통해 에이전트는 즉각적인 보상에 미래에 얻을 보상까지 고려하여 최상의 정책을$(\pi^{*})$ 찾아낸다.

2.3 Deep Q-Networking(DQN)

Q-learning은 테이블 형태로 데이터를 저장하기 때문에 현실 세계의 복잡한 문제를 해결하는 데 한계가 있다. DeepMind(12)에서는 이 문제를 해결하기 위해 Q-learning의 테이블을 신경망으로 치환하여 학습하는 Deep Q-Networks(DQN)를 발표했다. 신경망은 $Q_{Value}$를 근사해낼 수 있도록 학습시키며, $Q\left(s_{t},\:a_{t};\theta_{t}\right)$로 표현하며, $\theta_{t}$는 가중치를 뜻한다. 신경망 학습을 위해서 비용함수가 필요하며, 비용함수는 수식 (3)과 같이 정의한다.

(3)
$\cos t=\left[Q\left(s_{t},\:a_{t};\theta_{t}\right)-\left(R\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta_{t}\right)\right)\right]^{2}$

$Q\left(s_{t},\:a_{t};\theta_{t}\right)$는 local network로 현재 행동에 대한 예측값을 뜻하고, $R\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta_{t}\right)$는 target이 되며 실제 가치와 미래 가치를 합한 가치를 뜻한다. 비용함수는 현재 상태에서 선택한 행동을 local network를 통해 예측된 값과 target의 차를 제곱한 것으로, 이 값이 최소화되는 방향으로 학습이 진행된다.

Target에 사용되는 $Q\left(s_{t+1},\:a^{'};\theta_{t}\right)$는 target network로 표현되는데 이 target network와 local network가 동일한 구조로 되어있으므로 local network가 업데이트되면 target도 함께 변하는 문제가 발생한다. 이로 인해 가중치 업데이트가 진행될 때 target과 예측값의 오차가 크게 줄어들지 않는 문제가 발생한다. (16)에서 이를 해결하기 위해 target network를 고정하고 업데이트 주기를 local network보다 느리게 설정하였다. 고정된 target network는 $Q\left(s_{t+1},\:a^{'};\theta^{-}\right)$로 표현되며, DQN의 가치함수는 다음과 같이 정의한다.

(4)
$Q_{Value}=R\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta^{-}\right)$

본 연구에선 고정된 target network를 local network가 4번 업데이트 될 때마다 local network의 가중치와 동일하게 업데이트 되도록 구현하였다.

2.4 Double Deep Q-Learning(DDQN)

일반적으로 Q-learning 및 DQN은 특정 상태에서 선택한 행동에 대해 지나치게 과대평가된 가치를 학습하여 노이즈가 포함된 학습환경에 과적합 되는 문제를 야기한다. (17)에서는 기존 DQN 알고리즘의 단일 신경망을 행동을 선택하는 신경망과 선택된 행동의 가치를 평가하는 신경망으로 분리한 DDQN 알고리즘으로 이 문제를 해결하였고 그 결과 DDQN의 가치함수는 수식 (5)와 같이 표현된다.

(5)
$Q_{Value}=R\left(s_{t},\:a_{t}\right)+\gamma Q\left(s_{t+1},\:\arg\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta_{t}\right);\theta_{t}^{-}\right)$

$\arg\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta_{t}\right)$는 DQN의 local network를 이용해 예측한 최대 가치를 가지는 행동으로 target network를 이용해 선택된 행동의 가치를 예측한다. 행동 선택에 있어서 DQN의 $\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta^{-}\right)$과 DDQN의 $\arg\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta_{t}\right)$은 동일한 역할을 한다. DQN에서는 선택된 행동의 가치 평가를 위해 행동을 선택할 때와 동일한 $\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta^{-}\right)$를 이용한다. 이로 인해 특정 상태에서 특정 행동에 대한 가치가 계속 증가하여 과대평가 된다. 반면 DDQN은 $\arg\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta_{t}\right)$에서 선택된 행동이 $Q\left(s_{t+1},\:\arg\max_{a^{'}}Q\left(s_{t+1},\:a^{'};\theta_{t}\right);\theta_{t}^{-}\right)$를 통해 평가되기 때문에 가치가 지나치게 증가하여 과대평가 되는 문제를 개선하였다.

3. 주식 시장 분석

3.1 기본적 분석

주식시장 분석은 기본적 분석과 기술적 분석으로 나뉜다. 기본적 분석은 기업의 내재적 가치를 분석하여 미래의 주가를 예측하는 전통적인 분석 방법이다. 이 분석 방법은 현재 주가와 실제 기업의 가치가 다를 수 있지만, 주가는 기업의 가치에 수렴하려는 경향이 있다는 전제를 기본으로 한다. 이 전제를 바탕으로 주가가 기업의 가치보다 낮으면 주식을 매수하고, 높으면 매도하여 이익을 얻을 수 있다. 장기간 꾸준한 수익률을 보장하며, 궁극적으로는 매우 높은 수익률을 보장한다는 장점이 있다. 단기적으로는 수익률이 높지 않고, 투자 금액이 높을수록 수익을 내기 어렵다. 또한, 기본적 분석의 가장 핵심이 되는 데이터는 기업의 재무제표인데 분기마다 한 번만 발표되며, 주가가 언제 기업의 가치에 수렴할지 시기를 알 수 없어 언제 수익이 날지 알 수 없다는 한계를 가진다.

3.2 기술적 분석

기술적 분석은 과거 주식의 가격이나 거래량 같은 자료를 이용하여 주가 변화의 추세를 발견하여 미래의 주가를 예측하는 차트를 이용한 분석 방법이다. 주가는 끊임없이 변화하지만 과거의 추세가 되풀이되며, 추세를 파악한다면 현재 기업의 재무상태와 무관하게 주가 예측이 가능하다는 이론을 기본 전제로 한다. 이동평균을 이용하는 것이 대표적이며, 단기간에 큰 수익을 얻을 수 있지만 잃을 수도 있다는 위험성을 가진다. 또한, 차트가 주요 분석자료로 사용되며 뉴스 기사가 보조 분석자료로 사용되기도 한다. 거래량이 많을수록 분석에 용이하며, 거래량이 적은 종목에서 오차가 발생하기 쉽고, 작전세력이나 기사에 의해 언제든 변동이 일어날 수 있다는 단점을 가진다.

3.3 트레이딩 봇에 적용된 분석 방법

구현하고자 하는 트레이딩 봇은 일 단위 주식 가격을 지속적으로 관찰하며 일 단위로 거래를 진행하면서 장기적으로 안정적인 수익을 창출하는 것이 목표이다. 기본적 분석 방법은 분석의 핵심이 되는 기업의 재무제표 데이터를 수집하기가 어렵다는 점에서 트레이딩 봇에 바로 적용하기가 어렵다고 판단하였다. 반면에, 기술적 분석은 주식 가격 예측을 위한 데이터 수집이 비교적 간단하고, 기술적 분석 방법을 이용해 시장 평균보다 큰 수익을 얻을 수 있다는 연구 결과들(18)-(20)이 이미 문헌을 통해 발표된바 있다. 그러므로 본 연구에서는 기술적 분석 지표를 활용하여 자동으로 주식 거래를 할 수 있는 트레이딩 봇을 구현하였다.

4. 트레이딩 봇 구현

4.1 데이터 수집

강화학습 기반 트레이딩 봇 구현 및 성능테스트를 위한 주가 데이터는 한국 거래소에서 검색된 국내증시 시가총액 상위 20개의 주식에 대해 2010.04.27.~2020.11.13 기간 (약 11년)의 데이터로 이용하였다. 수집된 데이터는 일 단위 데이터로 날짜, 종가, 전일 비, 시가, 고가, 저가, 거래량으로 구성되어 있다.

4.2 상태 정의

에이전트는 환경에서 생성되는 상태를 입력으로 받아 행동을 결정한다. 상태는 에이전트가 선택한 행동에 대한 가치를 예측하는 데 사용되는데 주식시장은 잡음과 비정상성, 비선형성으로 인해 일 단위 데이터만으로는 가치를 예측하기 어렵다. 예측의 정확도를 높이기 위해 주가 추세를 예측할 필요가 있고, 이를 위해 수집된 기본 일 단위 데이터를 이용해 이동평균과 기술적 분석 기술의 보조지표를 생성하였다. 이동평균으로는 단기 매매 시 중요하게 사용되는 20일 지수 이동평균을 이용하였고, 기술적 분석 기술의 보조지표로 KDJ Stochastic, MACD, CCI, RSI를 계산하여 다음과 같이 14개의 변수를 이용해 상태를 정의하였다.

∙ 시가 변화량: Open[t] – Open[t-1]

∙ 고가 변화량: High[t] – High[t-1]

∙ 저가 변화량: Low[t] – Low[t-1]

∙ 종가 변화량: Close[t] – Close[t-1]

∙ 20일 지수 이동평균 변화량: EWM20[t] - EWM20[t-1]

∙ 거래량 변화량: Volume[t] - Volume[t-1]

∙ Fast%K: 최근 5일간의 최고가와 최저가 범위 내에서 현재 가격의 위치

∙ Slow%D: Fast%K의 3일 지수 이동평균

∙ Slow%J: Slow%D의 3일 지수 이동평균

∙ MACD: EWM12[t] – EWM26[t]

∙ MACDS: MACD의 9일 지수이동평균

∙ MACDO: MACD[t] – MACDS[t]

∙ CCI: 주가와 이동평균의 차이를 측정

∙ RSI: 주가의 추세 강도를 나타내는 지표

4.3 에이전트

일반적으로 보유 자산은 주식시장의 추세 예측과 직접적인 관련이 없기 때문에, 기존의 트레이딩 봇은 학습 단계에서 현재 가지고 있는 자산을 상태 변수로 사용하지 않는다. 그 결과 자산이 거래 종목의 주가 보다 적은 상황에서 매수하거나, 매수한 종목이 없는 상황에서 매도를 선택하는 모습을 보이곤 한다. 이 경우 매수/매도 행동이 아닌 유지 행동으로 강제하여 학습을 진행하게 되는데, 이러한 강제적 행동이 오히려 수익률에 악영향을 미치게 되는 경향이 있다. 그러므로 본 연구에서는 매수를 결정하는 Buy agent와 매도를 결정하는 Sell agent로 분리하여 2개의 신경망을 이용한 트레이딩 봇을 구현하였다. 이 트레이딩 봇은 보유 자산이 거래 종목의 주가보다 높은 경우에는 매수/유지 행동을, 반대의 경우는 매도/유지를 결정한다. Buy agent는 매수/유지 2가지의 행동에 대한 가치를 예측하여 트레이딩 봇은 가치가 더 큰 행동을 선택하게 한다. 만일 $Buy$ 행동을 먼저 취한다고 가정했을 때, 트레이딩 봇의 자산은 거래 종목의 주가 보다 낮아지게 된다. 이처럼 $Buy$ 행동 이후에 주식을 살 수 없는 경우에는 주식을 보유하고 있다고 판단하여 Sell agent를 이용한다. Sell agent은 매도/유지 2가지의 행동에 대한 가치를 예측하여 트레이딩 봇이 가치가 더 큰 행동을 선택하게 한다. 이처럼 트레이딩 봇은 보유자산과 주가를 비교하여 2개의 agent 중 하나를 선택 후 가치가 가장 큰 행동을 취할 수 있고, 이를 통해 기존의 단일 신경망 agent에서 빈번하게 발생하는 유지 행동 할당이 수익률 증가를 방해하게 되는 문제를 해결하였다.

4.4 행동과 보상 정의

본 연구에서는 매수/유지 행동을 담당하는 Buy agent와 매도/유지 행동을 담당하는 Sell agent는 위에서 정의한 14개의 상태 정보를 입력받고, 보유 자산과 거래 종목의 주가 추이를 비교하여 각각의 행동에 대한 가치를 예측한다. Buy agent의 매수와 유지는 $Buy$와 $Buy Hold$로 표현하며, Sell agent의 매도와 유지는 $Sell$과 $Sell Hold$로 표현한다. 보유 자산이 거래 종목의 주가보다 클 경우 Buy agent가 행동에 대한 가치를 예측한 뒤 가치가 더 큰 행동으로 거래를 진행한다. Buy agent의 행동 시점에서 자산의 변화가 일어나지 않지만 다음날 주가 변동에 따라 자산이 변화되기 때문에 다음과 같이 Buy agent 행동에 대한 보상을 정의하였다

(6)
$R_{Buy}=SP_{n ext}-SP_{curr}$

(7)
$R_{Buy Hold}=\dfrac{SP_{curr}-SP_{next}}{SP_{curr}}$

$R_{Buy}$는 매수 행동의 보상, $R_{Buy Hold}$는 유지 행동의 보상, $SP_{n ext}$는 익일 종가, $SP_{curr}$는 금일 종가를 의미한다. 매수 행동 후 주가가 상승한다면 상승한 수치만큼 보상을 주고, 하락한다면 벌점을 부여하였다. 반대로 유지 행동 후 주가가 상승한다면 매수 시점을 놓쳐 자산 증가의 기회를 놓친 것이라 판단하고 벌점을 부여하고, 주가가 하락한다면 자산의 감소를 막은 것이라 판단하여 상점을 부여하였다.

트레이딩 봇이 주식을 보유한 경우에는 Sell agent가 행동에 대한 가치를 예측한다. 이 때, 선택되는 행동은 자산에 즉각적인 영향을 주며, 보상은 매수 시점의 주가와 매도 시점의 주가를 이용해 다음의 수식으로 정의하였다.

(8)
$D_{curr}=\left(SP_{curr}-SP_{buy}\right)*N_{S}$

(9)
$D_{next}=\left(SP_{next}-SP_{buy}\right)*N_{S}$

(10)
$R_{Sell}=\dfrac{D_{curr}}{SP_{buy}}$

(11)
$R_{Sell Hold}=\dfrac{D_{next}}{SP_{buy}}$

여기서 $N_{S}$ 는 보유 주식 수, $SP_{buy}$는 매수 시점 종가, $D_{curr}$는 금일 종가와 매수 시점 종가의 차에 보유 주식 수를 곱한 금일 매도 시 자산 변화를 의미한다. $D_{next}$는 익일 종가 대비 매수 시점 종가의 차를 이용해 익일 매도 시 자산의 변화를 의미한다. 매도 행동 보상($R_{Sell}$)은 $D_{current}$를 이용해 매수 시점 금액대비 손익률로 정의하였고, 유지 행동 보상($R_{Sell Hold}$)은 익일 매도시 매수 금액대비 수익률로 정의하였다.

4.5 가치함수

Buy agent와 Sell agent의 가치함수는 선택된 행동에 따라 다르게 계산된다. DQN과 DDQN 사용에 따른 Buy agent의 가치함수는 다음과 같이 $Buy/Buy Hold$ 2가지의 행동에 따라 다르게 표현된다.

∙ DQN

(12)
$Q_{Value}= R_{Buy}\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q_{Sell}\left(s_{t+1},\:a^{'};\theta_{t}^{-}\right)whenBuy$

(13)
$Q_{Value}=R_{Buy Hold}\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q_{Buy}\left(s_{t+1},\:a^{'};\theta_{t}^{-}\right)whenBuy Hold$

∙ DDQN

(14)
\begin{align*} Q_{Value}=R_{Buy}\left(s_{t},\:a_{t}\right)\\ +\gamma Q_{Sell}\left(s_{t+1},\:\arg\max_{a^{'}}Q_{Sell}\left(s_{t+1},\:a^{'};\theta_{t}\right);\theta_{t}^{-}\right)whenBuy \end{align*}

(15)
\begin{align*} Q_{Value}=R_{Buy Hold}\left(s_{t},\:a_{t}\right)\\ +\gamma Q_{Buy}\left(s_{t+1},\:\arg\max_{a^{'}}Q_{Buy}\left(s_{t+1},\:a^{'};\theta_{t}\right);\theta_{t}^{-}\right)whenBuy Hold \end{align*}

$Q_{Buy}$, $Q_{Sell}$는 각각 Buy agent와 Sell agent에서 예측한 가치를 의미한다. 자산이 거래 종목의 주가보다 작은 경우 Sell agent가 사용된다. 트레이딩 봇이 $Buy$를 선택하면, 보유 자산 내에서 최대한으로 주식을 매수한다. 이로 인해 보유 자산이 거래 종목의 주가보다 작아지므로, 다음 상태에선 Sell agent를 통해 행동을 선택한다. 이러한 이유로 $Buy$의 미래 가치 추정에는 $Q_{Sell}$를 이용하였다. $Buy Hold$의 결과로 트레이딩 봇의 자산은 변화하지 않으며, 다음 상태에서도 Buy agent를 통해 행동을 선택하게 된다. 그러므로 $Buy Hold$의 미래 가치 추정은 $Q_{Buy}$를 이용하였다. 다음은 Sell agent의 가치함수를 $Sell/Sell Hold$ 행동에 대해 나타내었다.

∙ DQN

(16)
$Q_{Value}=R_{Sell}\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q_{Buy}\left(s_{t+1},\:a^{'};\theta_{t}^{-}\right)whenSell$

(17)
$Q_{Value}=R_{Sell Hold}\left(s_{t},\:a_{t}\right)+\gamma\max_{a^{'}}Q_{Sell}\left(s_{t+1},\:a^{'};\theta_{t}^{-}\right)whenSell Hold$

∙ DDQN

(18)
\begin{align*} Q_{Value}=R_{Sell}\left(s_{t},\:a_{t}\right)\\ +\gamma Q_{Buy}\left(s_{t+1},\:\arg\max_{a^{'}}Q_{Buy}\left(s_{t+1},\:a^{'};\theta_{t}\right);\theta_{t}^{-}\right)whenSell \end{align*}

(19)
\begin{align*} Q_{Value}=R_{Sell Hold}\left(s_{t},\:a_{t}\right)\\ +\gamma Q_{Sell}\left(s_{t+1},\:\arg\max_{a^{'}}Q_{Sell}\left(s_{t+1},\:a^{'};\theta_{t}\right);\theta_{t}^{-}\right)whenSell Hold \end{align*}

$Sell$의 결과로 트레이딩 봇의 자산은 거래 종목의 주가보다 높아진다. 자산이 거래 종목의 주가 보다 높아지면 Buy agent를 통해 행동을 선택하므로, $Sell$ 행동의 미래 가치는 $Q_{Buy}$를 이용해 가치를 추정하였다. $Sell Hold$를 선택한 경우 다음 상태에서 트레이딩 봇의 자산이 여전히 거래 종목의 주가보다 낮아 매수가 불가능하기 때문에 Sell agent를 이용해 행동을 선택해야 한다. $Sell Hold$의 미래 가치는 $Q_{Sell}$를 이용하였다.

그림. 2. Buy agent 및 Sell agent 의 신경망 구조

Fig. 2. Neural network architecture of Buy/Sell agent

../../Resources/kiee/KIEE.2021.70.1.158/fig2.png

4.6 강화학습 모델

Buy agent와 Sell agent를 구성하는 신경망은 그림 2와 같이 4개의 은닉층으로 이루어져 있다. 활성화 함수로 ReLU를 이용하였고, 주식 관련 지표 14개의 상태 변수를 입력 받아 Buy agent와 Sell agent에 의한 2개 행동에 대한 가치의 예측값을 출력하도록 설계하였다. 트레이딩 봇의 전체 강화학습 모델은 그림 3과 같이 구현하였다. 주식시장에서 생성된 상태를 에이전트에게 전달할 때, 트레이딩 봇의 보유 자산이 거래 종목의 주가 보다 높은 경우 $Buy/Buy Hold$에 대한 가치를 예측하고, 낮은 경우 $Sell/Sell Hold$에 대한 가치를 예측한다. 그다음 각 agent가 예측한 가치 중 가장 큰 행동을 선택하여 거래 방식을 정하였다. Buy agent 및 Sell agent를 이용한 거래 내역은 Buy replay buffer 및 Sell replay buffer에 각각 기록하였다. 각 Replay buffer는 최대 1000개의 최근 기록이 저장되도록 하였다. 두 Replay buffer에 32개 이상의 거래 내역이 기록되면 각 Replay buffer에서 한 번에 32개의 기록을 랜덤하게 추출하고 Buy agent와 Sell agent를 각각 학습함으로써 학습의 효율성을 높였다. 또한, Buy agent와 Sell agent가 충분한 탐색 데이터를 수집할 수 있도록 ɛ-greedy 알고리즘을 각각 적용시켰다. 주식시장의 특성상 미래에 기대값이 매우 불안정하기 때문에 할인계수를 0.001로 하였으며, Adam optimizer의 learning_rate를 0.001로 학습하였다.

그림. 3. 트레이딩 봇의 강화학습 프로세스

Fig. 3. Reinforcement learning process of trading bot

../../Resources/kiee/KIEE.2021.70.1.158/fig3.png

그림. 4. 트레이딩 봇의 UI 구조

Fig. 4. UI architecture of a trading bot

../../Resources/kiee/KIEE.2021.70.1.158/fig4.png

4.7 UI

사용자 친화적인 시스템 구현과 트레이딩 봇의 행동을 기록하기 위해 그림 4와 같이 UI를 설계하였다. 트레이딩 봇과 웹 어플리케이션이 개별적으로 원활한 동작을 할 수 있도록 서버를 독립적으로 활용하였다. 트레이딩 봇 서버는 학습된 모델을 이용해 일정 주기로 주가 정보 및 관련 정보를 바탕으로 종목 하나에 대해 매수, 매도, 유지를 선택하여 거래를 진행하고, 관련 내용을 데이터베이스에 기록하도록 설계하였다. 이렇게 기록된 거래 내역은 사용자에게 웹 어플리케이션 형태로 제공되며, 웹 어플리케이션은 사용자가 요청하는 거래 기록에 대한 정보를 웹 어플리케이션 서버에 요청한다. 웹 어플리케이션 서버의 경우, REST API(Representational State Transfer Application Programming Interface)를 이용해 구현하였고, REST 형태로 거래 기록을 요청하면 조회 결과를 JSON 형태로 응답하여 해당 데이터를 웹 어플리케이션에서 가공 후 사용자에게 제공하는 방식으로 설계하였다. 웹 어플리케이션에서 트레이딩 봇의 거래 기록을 조회하기 위해서는 서버에 AJAX(Asyn- chronous Javascript and XML)를 통해 비동기 REST 요청을 보내야 하고, 서버는 요청에 대한 응답으로 데이터베이스로부터 거래 기록을 조회하여 JSON 형태의 데이터를 제공한다.

5. 실험 및 결과 분석

5.1 강화학습 모델

강화학습 모델 구현을 위해 윈도우 10 환경에서 파이썬 기반의 케라스를 이용하였다. 강화학습 특성상 GPU보다 CPU에서 학습이 더 빨라 CPU를 사용하였다. 학습을 위해 한국 거래소를 이용해 수집한 데이터 중 주가가 안정적인 종목 5개(Stock A, B, C, D, E)를 선택하였다. 학습 기간으로 2010. 04.27.~2018.05.04 데이터를 이용하며, 학습된 모델을 이용하여 2018.05.04.~2020.11.13 기간을 테스트하였다. 강화학습 모델은 DQN과 DDQN이 사용되었으며 초기 자산 1000만원으로 두개 모델의 학습 결과와 테스트 결과를 비교 분석하였다. 그림 5에서는 학습 episode 동안 5개의 주식 종목에 대한 평균 loss를 그래프로 나타냈다. 실험 결과 대략 20 episode 이전에는 loss가 급격하게 줄어들다가 이후에는 loss 그래프의 기울기가 매우 완만해짐을 알 수 있었다. 주식시장 예측은 다른 강화학습 응용 분야보다 일반화 성능이 더욱 요구되므로, 많은 episode를 통해 학습을 시키게 되면 오히려 테스트 데이터 성능 열화를 초래할 수 있다. 그러므로 본 연구에서는 20 episode 동안 학습한 모델을 바탕으로 테스트 기간에서의 성능을 평가하였다.

그림. 5. 학습 episode 동안 5개 종목의 평균 loss

Fig. 5. Average loss for 5 stock during training episodes

../../Resources/kiee/KIEE.2021.70.1.158/fig5.png

트레이딩 봇 서버는 파이썬 기반의 프레임워크인 Flask를 활용하여 구현하였다. 웹 어플리케이션 서버의 경우 자바스크립트 기반의 서버 사이드 프레임워크인 Node.js를 활용하여 구현하였다. 웹 어플리케이션 서버로부터 응답받은 데이터를 사용자에게 그래프 및 표 형태로 제공하기 위해 CSS 프레임워크인 Bootstrap과 자바스크립트(Javascript)와 jQuery를 이용하였고, 그래프 형식은 NHN TOAST CHART를 활용하여 구현하였다.

5.2 학습 결과

그림 6에서는 학습된 모델의 테스트 기간에 거래 내역을 웹 어플리케이션을 통해 시각화한 결과를 나타내었다. 좌측 상단에는 일별 거래를 통해 얻은 누적 수익을 그래프로 표현하였고, 좌측 하단에는 일별 종가를 그래프로 시각화하여 종가 변화에 따른 누적 수익의 변화도 함께 볼 수 있도록 하였다. 좌측에는 트레이딩 봇의 행동과 날짜, 당일 종가, 거래를 통해 얻은 수익을 표로 표현하여 상세 정보를 알 수 있도록 하였다. 매도 행위를 통해 손해가 생겼을 경우에 그날의 데이터를 빨강색으로 표시하고, 이익이 생겼을 경우에 그날의 데이터를 초록색으로 표시하여 트레이딩 봇의 성능을 알아보기 쉽게 나타냈다.

그림. 6. 트레이딩 봇의 웹 어플리케이션

Fig. 6. Web Application of a trading bot

../../Resources/kiee/KIEE.2021.70.1.158/fig6.png

그림. 7. 학습 기간 동안의 자산 그래프 (종목 A-E)

Fig. 7. Asset graphs during training episode(Stock A-E)

../../Resources/kiee/KIEE.2021.70.1.158/fig7_1.png../../Resources/kiee/KIEE.2021.70.1.158/fig7_2.png

그림 7는 5개의 종목에 대해서 20번의 episode 동안 학습의 진행에 따른 최종 자산의 변화를 그래프로 나타낸다. 각 그래프의 x축은 학습 횟수, y축은 최종 자산을 나타내며 모든 종목에서 학습이 진행될수록 최종 자산이 증가하는 모습을 보인다. 학습 과정 동안 DQN모델의 자산 변동 폭은 상대적으로 DDQN보다 크게 나타남을 알 수 있다. DQN 모델의 경우 특정 시점에서 자산 크기가 급등하거나 급락하는 것이 관찰되는 반면에 DDQN은 비교적 단조롭게 자산이 증가함을 알 수 있다. 장기적으로 볼 때 Stock A, E를 제외하고는 DQN모델의 최종 자산이 DDQN모델의 최종 자산보다 높게 나옴을 알 수 있다.

표 1. 학습 및 테스트에 따른 수익률 결과

Table 1. Profit results during training and test in percentage

Stock A

Stock B

Stock C

Stock D

Stock E

DQN

Train

67639.8

425084.2

93788.0

3793993.9

51232.3

Test

-9.5

70.2

30.1

61.9

10.6

DDQN

Train

69647.3

158502.3

68940.7

3164532.2

50702.9

Test

5.8

79.3

-13.9

105.3

35.0

강화학습 방식으로 학습시킨 DQN모델 및 DDQN모델의 성능을 비교하기 위해 초기 자산대비 트레이딩 봇의 예측 최종 시점에서의 자산의 증가율을 Table 1에 나타냈다. DQN모델 사용 시 학습 기간 동안 자산이 최대 3793900% 증가 (Stock D) 하였고, 테스트 기간 동안은 자산이 최대 70% (Stock B) 증가하였다. DDQN모델은 학습 기간 동안 자산이 최대 3164500% 증가 (Stock D) 하였고, 테스트 기간 동안은 자산이 최대 105% (Stock D) 증가하였다. 이를 통해 이미 학습을 통해 경험한 주가의 추이가 반복되는 상황에서는 강화학습 모델이 큰 수익을 나타냄을 알 수 있다. 또한, 대체로 DDQN 모델은 학습 기간 동안은 DQN 모델보다 자산 증가율이 낮지만 테스트 기간 동안은 오히려 더 높은 자산 증가율을 보인다. DDQN모델이 DQN모델보다 일반화 성능에 더 강점을 보이고 있으므로 트레이딩 봇이 테스트 결과에선 전반적으로 높은 자산 증가율을 보였다.

5.3 주가 추이에 따른 수익률 분석

그림. 8. 학습 기간 동안 자산 변화와 종가 변화

Fig. 8. Changes in assets and stock prices during training

../../Resources/kiee/KIEE.2021.70.1.158/fig8_1.png../../Resources/kiee/KIEE.2021.70.1.158/fig8_2.png../../Resources/kiee/KIEE.2021.70.1.158/fig8_3.png

그림 8은 학습된 모델을 이용해 학습 기간 동안 주가 추이에 따른 자산의 변화를 나타낸다. 5개 종목별로 상단에는 거래 진행에 따른 총자산을 그래프로 나타냈고, 하단에는 일별 주가 추이를 나타냈다. DQN모델과 DDQN모델 모두 모든 종목에서 학습 기간 동안 주가의 추이와 관계없이 자산이 계속 증가하였고, 특히 주가 추이가 상승 구간일 때 자산이 크게 증가하였다. 학습 기간 동안은 DQN의 자산 증가율은 DDQN 의 자산 증가율과 비슷하거나 크게 나타남을 알 수 있다.

그림 9은 학습 기간 동안 학습된 모델을 이용해 테스트 기간 동안의 주가 추이에 따른 자산의 변화를 나타낸다. DQN모델과 DDQN모델 모두 전반적으로 주가의 추이에 따라 자산이 변화하는 것을 볼 수 있었다. DQN모델은 주가의 하락과 상승에 따라 자산 변동 폭이 크게 나타남을 알 수 있다. 반면 DDQN 모델은 주가의 변동에 비해 자산 변동 폭이 비교적 단조롭게 변화함을 알 수 있다. 그 결과 장기적으로 관찰해보면 Stock C 경우를 제외하고 DDQN의 자산이 DQN 보다 더 높게 나타남을 알 수 있다.

그림. 9. 테스트 기간 동안 자산 변화와 종가 변화

Fig. 9. Changes in assets and stock prices during test

../../Resources/kiee/KIEE.2021.70.1.158/fig9_1.png../../Resources/kiee/KIEE.2021.70.1.158/fig9_2.png../../Resources/kiee/KIEE.2021.70.1.158/fig9_3.png

6. 결 론

본 연구는 DQN 및 DDQN 강화학습 알고리즘을 이용하여 끊임없이 변화하는 주식시장에 능동적으로 대응하여 수익률을 높일 수 있는 트레이딩 봇을 구현하였다. 일 단위 기본 주가 데이터와 각종 기술적 분석 지표를 이용해 학습데이터를 구성하고, 거래 종목의 주가 변동 패턴을 학습하여 장기적으로 안정적인 수익을 얻을 수 있도록 구현하였다. 강화학습 시 트레이딩 봇의 보유 자산과 거래 종목의 주가를 비교하여 매수/유지 행동의 가치를 예측하는 Buy agent, 매도/유지 행동의 가치를 예측하는 Sell agent를 선택하게 하였고, 이를 DNN으로 각각 구현하였다. 학습 및 테스트 기간의 주가 변동에 따른 수익률을 분석하여 강화학습 알고리즘별 트레이딩 봇의 성능을 확인하였다. DQN모델은 주가 추이에 따라 수익률의 변동이 큰 결과가 나타났지만 DDQN모델은 상대적으로 수익률 변동이 크지 않으면서 주가 추이를 전반적으로 따라가는 결과를 나타내었다. 그러므로 장기적으로 안정적인 거래를 위한 트레이딩 봇에는 DDQN모델이 적합하다고 볼 수 있다.

DQN 및 DDQN 알고리즘별로 주식 추이에 따른 수익률을 분석하기 위해 본 논문에서는 한 종목만으로 거래를 진행하였다. 그러나 이러한 거래 방법으로는 거래 종목의 주가가 하락하는 구간에서 안정적인 수익을 얻기 어렵다. 투자 전문가들은 최대의 수익을 얻으면서 리스크를 최소화하기 위해 복수의 종목에 투자하는 분산 투자를 권한다. 그러므로 추후 연구에서 강화학습과 포트폴리오 전략의 결합을 시도하여 수익의 안정화 및 극대화를 달성할 것이다.

Acknowledgements

This work was supported by the Basic Science Research Program through the National Research Foundation of Korea (NRF) funded by the Ministry of Education under Grant NRF-2019R1A2C4069822.

References

1 
J. W. Lee, Jan 2013, A stock trading system based on supervised learning of highly volatile stock price patterns, The Journal of KIISE: Computing Practices and Letters, Vol. 19, No. 1, pp. 23-29Google Search
2 
A. S. Saud, S. Shakya, Apr 2020, Analysis of look back period for stock price prediction with RNN variants: A case study on banking sector of NEPSE, Procedia Computer Science, Vol. 167, pp. 788-798DOI
3 
S. Mehtab, J. Sen, Nov 2020, Stock Price Prediction Using CNN and LSTM-Based Deep Learning Models, IEEE International Conf. on DASAGoogle Search
4 
C. Yang, J. Zhai, G. Tao, 2020, Deep Learning for Price Move- ment Prediction Using Convolutional Neural Network and Long Shot-Term Memory, Mathematical Problems in Engineering, Vol. 2020, No. Article ID 2746845DOI
5 
B. G. Malkiel, 1996, A Random Walk Down Wall Street, W. W. Norton & Company, New YorkGoogle Search
6 
C. Hsu, Oct 2011, A hybrid procedure for stock price prediction by integrating self-organizing map and genetic programming, Expert Systems with Applications, Vol. 38, No. 11, pp. 14026-14036DOI
7 
T. Fischer, C. Krauss, Oct 2018, Deep learning with long short- term memory networks for financial market prediction, The European Journal of Operational Research, Vol. 270, No. 2, pp. 654-669DOI
8 
H. J. Song, S. J. Lee, May 2018, A study on the optimal trading frequency pattern and forecasting timing in real time stock trading using deep learning: focused on KOSDAQ, The Journal of KAIS, Vol. 27, No. 3, pp. 123-140DOI
9 
J. W. Lee, Oct 2018, Short-term stock price prediction by supervised learning of rapid volume decreasing patterns, KIISE Trans. Computing Practices, Vol. 24, No. 10, pp. 544-553Google Search
10 
J. M. Won, H. S. Hwang, Y. H. Jung, H. D. Park, Nov 2018, Stock Price Prediction Technique Using Technical Analy- sis Index and Deep Running, KIIT Conf., pp. 404-405Google Search
11 
J. W. Lee, J. O, Aug 2002, A Multi-agent Q-learning Framework for Optimizing Stock Trading Systems, Lecture Notes in Computer Science, Vol. 2453DOI
12 
E. G. Ha, C. B. Kim, Apr 2019, Model Implementation of Reinforcement Learning for Trading Prediction Using Deep Q Network, The Journal of KIIT, Vol. 17, No. 4, pp. 1-8Google Search
13 
V. Mnih, 2013, Playing Atari with deep reinforcement learning, NIPS Deep Learning WorkshopGoogle Search
14 
H. Park, Nov 2020, An intelligent financial portfolio trading strategy using deep Q-learning, Expert Syst. Appl., Vol. 158DOI
15 
H. Yang, X.-Y. Liu, S. Zhong, A. Walid, Sept 2020, Deep Reinforcement Learning for Automated Stock Trading: An Ensemble Strategy, Neural Information Processing Systems Conf.DOI
16 
V. Mnih, Feb 2015, Human-level control through deep rein- forcement learning, Nature, Vol. 518, No. 7540, pp. 529-533DOI
17 
H. van Hasselt, A. Guez, D. Siver, Feb 2016, Deep Rein- forcement Learning with Double Q-learning, AAAI Conf. Artificial Intelligence, pp. 2094-2100Google Search
18 
C. J. Neely, D. E. Rapach, J. Tu, G. Zhou., 2014, Forecasting the Equity Risk Premium: The Role of Technical Indicator, Management Science., Vol. 60, pp. 1772-1791DOI
19 
D. Avramov, G. Kaplanski, A. Subrahmanyam., Jan 2019, Moving Average Distance as a Predictor of Equity Returns, SSRN Electronic JournalDOI
20 
J. H. Kim, S. H. Shin, Sep 1996, Dynamic Asset Allocation by Moving Average Rules and Network Models, Korean Journal of Financial Studies, Vol. 19, pp. 111-143Google Search
21 
Y. Han, K. Yang, G. Zhou, Dec 2013, A New Anomaly: The Cross-Sectional Profitability of Technical Analysis, Journal of Financial and Quantitative Analysis, Vol. 48, No. 5, pp. 1443-1461Google Search

저자소개

김민태 (Kim Min Tae)
../../Resources/kiee/KIEE.2021.70.1.158/au1.png

Min Tae Kim is currently an undergraduate student in the Department of Information and Communication Engineering, Changwon National University, Changwon-si, South Korea, from 2015.

His research interests include visible light communications and artificial intelligence.

김병욱 (Byung Wook Kim)
../../Resources/kiee/KIEE.2021.70.1.158/au2.png

Byung Wook Kim received the B.S. degree from the School of Electrical Engineering, Pusan National University, Pusan, South Korea, in 2005, and the M.S. and Ph.D. degrees from the Department of Electrical Engineering, KAIST, Daejeon, South Korea, in 2007 and 2012, respectively.

He was a Senior Engineer with the Korea Electrotechnology Research Institute, Changwon-si, South Korea, from 2012 to 2013.

He was an Assistant Professor with the School of Electrical and Railway Engineering, Kyungil University, Gyeongsan-si, South Korea, from 2013 to 2016.

He was an Assistant Professor with the Department of ICT Automotive Engineering, Hoseo University, from 2016 to 2019. He is currently an Assistant Professor with the Department of Information and Com- munication Engineering, Changwon National University, Changwon-si, South Korea.

His research interests include visible light com- munications, machine learning, and deep learning.