기존의 문제: 종목이나 기간, 추세에 따라 매우 다름 강화 학습에 기반한 주식 자동 매매 시스템을 구현하고, 종목이나 학습 기간 등을 달리 적용하여 실제 투자 시뮬레이션 결과를 산출, 비교하여 변동성이 큰 주가 데이터 분석에 대해서 효과 적인 전략을 제안

모델

정책과 학습하는 정책이 나눠서 진행되는 off-policy 기법(다른 행동을 선택하면서 학습을 진행)을 이용하기 위해서 모델을 선정(on-policy의 경우 정책이 업데이트 되면 쌓아놓은 경험들을 학습에 사용할 수 없음. 현재 학습하는 정책을 따르고 그 정책을 개선할 뿐임) On policy VS Off policy + Q Learning 심화 DNN을 이용해 구성

  • state: 시가, 고가, 저가, 종가, 거래량, 거래량을 기반으로 이동평균 비율, 종가의 이동평균 비율
  • action: buying,selling.hodling 학습 초기에는 탐험률(ϵ)에 따라 매수/매도/관망의 무작 위 행동을 취한다 이후 무작위 행동 감소 , 학습에 의한 결정된 행동 증가
  • reward: PV의 변동이 임계점을 초과했을 때 임계점을 초과하기 까지의 행동들로 하나의 batch를 생성하고 보상을 부여 ex) 예 를 들어 임계점이 0.1인 경우 10번의 행동을 수행한 후에 PV가 10% 상승하거나 하락할 때 10번의 행동에 대한 보상을 부여한 다. 이때 발생한 보상을 바탕으로 신경망을 업데이트
  • 손익률을 선형회귀모델로 만듦 activation: 선형함수(sigmoid), 손실함수: MSE
  • 할인률: 0.9, 지연보상 임계값: 0.04, DNN network 사용

실험 결과

  • 수익성 평가지표: 수익의 평균
  • 안정성 평가지표: 손실이 발생한 종목의 손실 평균
  • 적용 종목: , 시가총액 상위 20개,바이오 테마주 20개, 언택트 테마주 20개
  • 적용 기간: 2019.09.01~2020.08.31 (2년)

1. DQN VS PG VS A2C

  • DQN: 수익성이 평균 4%대로 낮지만 손실 종목의 평균이 1%대로 매우 낮다
  • A2C: 가장 수익성이 좋으며 순서대로 9%,47%,17%의 수익률을 보였다

2. 학습기간에서의 변동성에 따른 모델 안정성 비교

  • VIX: 20 초과- 변동성 높음(2020.01.01 이후) , 20이하- 변동성 낮은 기간(2020.01.01 이전) 변동성이 높은 구간에서 학습한 모델이 더 안정성이 높다는 결과 얻음(loss average가 낮음)

3. 학습 기간의 차이

  • 10년 학습 모델 VS 2년 학습 모델 1년치 테스트: 이게 내가 궁금했던 부분임!! 학습 데이터의 기간을 어떻게 해야하나!
  • 10년 학습 모델: 이익(27.79%), 평균 손실(-6.02%)
  • 2년 학습 모델: 이익(12.28%), 평균 손실(-2.25%)
  • 10년 학습 모델이 더 많은 수익률을 냈지만 안정성은 2년 학습 모델이 더 높다

결론

수익성을 중요시 여길 경우에는 A2C를 사용하는 것이 더 좋고 학습기간을 길게 설정하는 것이 좋다.(오랜 기간을 학습할수록 같은 패턴에 대해서 더 많은 빈도로 학습되기 때문에 신뢰도를 높게 판단하여 더 많은 단위로 주식을 매매하기 때문이라고 판단)

또한 변동성이 높은 주가 데이터로 모델을 학습했을 때 안정성이 높았다 주가 데이터 이외에 다른 기술적 분석 지표 추가 + 추세별 학습 모델의 성능을 비교