퀀티랩 단타 모델 - 딥러닝으로 내일의 주가 방향을 예측하는게 가능할까?

2021-03-05 • quant딥러닝, 주식, 주가예측, 단타, 단기트레이딩, 데이트레이딩 • 4 min read

기존의 퀀티랩 모델은 중/장기 투자를 목적으로 하는 딥러닝 모델입니다. 이 포스트에서는 데이트레이딩(일명 단타)를 위한 모델 구축에 대해 다룹니다.

이 글은 기계학습에 대한 기초 지식을 요합니다.

단타를 독려하는 것이 아니니 오해 없으셨으면 좋겠습니다.

우선 데이트레이딩에 대해 알아봅시다. 데이트레이딩에 대한 정의는 제각각이지만 대부분 다음 원칙을 가지고 있습니다.

  • 하루 안에서 모든 거래를 마친다. (오버나잇 하지 않는다.)
  • 종목을 발굴한다.
  • 현금을 많은 비중으로 둔다. (Ex. 90% 현금 보유)
  • 목표 수익률, 손절 라인을 설정한다. (1~2%의 낮은 손익률로 잡는다.)
  • 미수는 자제한다.
  • 장이 안좋을땐 관망한다.

데이트레이딩은 많은 지표들을 보고 종목을 발굴하고 하루동안 수십, 수백번의 매매를 하면서 수익을 내기위해 노력합니다. 매매를 위해 기술적 분석이 주로 사용되는데 기술적 분석 기법은 너무나도 다양해서 나열하기도 어렵습니다.

단타에서 주요 결정 사항 중 하나인 "어떤 종목을 노릴 것인가?"를 해결하기 위한 딥러닝 모델을 구축했습니다. 모델은 파이썬으로 구축했으며 사용한 프레임워크, 라이브러리는 다음과 같습니다.

  • TensorFlow 2.4 (with Keras)
  • Scikit-learn 0.22.1

학습데이터는 약 100개의 자질과 2.5M개의 인스턴스로 구성했습니다. 지도학습(Supervised Learning)으로 레이블(label)은 다음 거래일의 등락률의 sigmoid로 정했습니다. 그 수식은 다음과 같습니다.

y = sigmoid(next_close / today_close - 1)

자질들은 자세히 다루기 어렵지만 크게 다음 종류의 자질군으로 구성됩니다.

  • 종목 주가
  • 종목의 기본적 분석 지표
  • 종목의 기술적 분석 지표
  • 국내 주식 시장 지수
  • 해외 주식 시장 지수
  • 주요국 환율
  • 원자재 가격
  • ... (기타 등등)

자질 값들의 스케일(Scale)이 달라서 Standardization 했습니다. 세 가지 스케일러(Scaler)를 시도해 봤는데 그 중에서 Robust Scaler를 채택했습니다.

신경망 아키텍처는 기본적인 Dense(Fully Connected) Layer를 다음과 같이 쌓았습니다.

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(256, activation='linear'),
    tf.keras.layers.Dense(128, activation='linear'),
    tf.keras.layers.Dense(64, activation='linear'),
    tf.keras.layers.Dense(1, activation='sigmoid'),
])

이렇게 마지막 레이어의 활성화 함수(Activation Function)을 Sigmoid로 정해서 0과 1사이의 값으로 Prediction 하도록 했습니다. 직관적으로는 Prediction 값이 0.5 이상(초과)이면 내일 오늘보다 주가가 오를 것이라 판단하는 것이고 0.5 이하(미만)이면 주가가 내릴 것이라 판단하는 것입니다.

이렇게 학습한 모델로 테스팅 데이터를 넣어서 내일의 주가 방향을 얼마나 잘 맞추는지 알아보았습니다. 테스팅 데이터는 20210101~20210305 동안의 인스턴스이며 당연히 학습 데이터에 없는 인스턴스들 입니다.

Prediction 값을 score라고 하겠습니다. score가 0.5, 0.6, 0.7, 0.8, 0.9 이상일 때의 Accuracy를 다음과 같이 확인했습니다.

  • score 0.5 이상: 313,319개 인스턴스에서 정확도 57.99%
  • score 0.6 이상: 51,390개 인스턴스에서 정확도 68.81%
  • score 0.7 이상: 10,962개 인스턴스에서 정확도 84.22%
  • score 0.8 이상: 3,864개 인스턴스에서 정확도 89.73%
  • score 0.9 이상: 113개 인스턴스에서 정확도 49.56%

1

Score가 마냥 높다고 정확도가 높아지는 것은 아니였습니다. 0.8 까지는 높아지다가 0.9 이상에서는 정확도가 오히려 급격하게 감소했습니다. 정확도가 가장 높은 범위를 찾아봤습니다.

Score 0.83 이상 0.835 미만의 295개 인스턴스에서 정확도 94.58%를 얻을 수 있었습니다.

2

여기에 포함된 Score Top 50 종목들은 다음과 같습니다.

동전주, 거래대금이 적은 종목은 제외(Filter Out)했습니다.

date name close score diffratio_nextday
20200325 삼강엠앤티 2,320 0.8350 -0.43%
20200324 E1 23,650 0.8350 8.03%
20200325 휴비스 3,625 0.8350 1.10%
20200325 미창석유공업 47,850 0.8349 1.78%
20200409 빙그레 54,200 0.8349 -0.55%
20200323 엘티씨 5,130 0.8349 8.38%
20200325 갤럭시아머니트리 1,925 0.8349 0.78%
20200325 한솔제지 9,000 0.8349 2.89%
20200325 KC그린홀딩스 2,595 0.8349 5.97%
20200325 이월드 2,730 0.8348 28.21%
20200325 푸른기술 5,944 0.8347 5.82%
20200325 신화인터텍 1,655 0.8347 8.76%
20200619 아진엑스텍 4,123 0.8347 3.10%
20200325 신세계건설 16,450 0.8347 8.81%
20200325 애니플러스 1,030 0.8346 4.85%
20200323 노랑풍선 5,720 0.8346 5.77%
20200325 미래에셋생명 2,570 0.8346 9.14%
20200323 유티아이 7,060 0.8346 7.51%
20200325 스카이이앤엠 1,505 0.8345 1.33%
20200422 코오롱생명과학 41,100 0.8345 3.53%
20200324 디와이 2,500 0.8344 9.60%
20200325 HSD엔진 2,220 0.8344 3.60%
20200325 가온전선 12,100 0.8343 6.20%
20200325 슈피겐코리아 32,300 0.8343 -2.94%
20200323 동국S&C 1,195 0.8343 10.88%
20200325 케이씨티 1,210 0.8343 7.02%
20200325 태림포장 2,455 0.8342 4.07%
20200325 서플러스글로벌 1,250 0.8342 2.00%
20200325 태웅 4,220 0.8342 -1.66%
20200324 노랑풍선 6,050 0.8342 10.74%
20200323 일진다이아 11,000 0.8342 17.27%
20200324 일진디스플 1,892 0.8341 11.89%
20200325 하나마이크론 3,725 0.8341 6.58%
20200325 파워넷 2,240 0.8341 4.69%
20200325 홈캐스트 2,400 0.8340 3.12%
20200325 유니온 1,940 0.8340 2.06%
20200325 SCI평가정보 1,455 0.8340 4.12%
20200325 우노앤컴퍼니 2,515 0.8340 29.82%
20200325 화승알앤에이 1,300 0.8339 3.08%
20200324 웨이브일렉트로 8,563 0.8339 14.56%
20200325 잇츠한불 9,530 0.8339 8.60%
20200325 파인디앤씨 1,000 0.8338 5.50%
20200323 서연 1,555 0.8338 29.90%
20200323 화신 1,390 0.8338 4.68%
20200325 신도리코 21,200 0.8337 0.94%
20200323 큐렉소 2,460 0.8337 6.71%
20200325 휴스틸 4,805 0.8337 4.06%
20200325 예림당 1,750 0.8337 9.71%
20200325 빛샘전자 3,220 0.8337 6.21%
20200325 정원엔시스 1,070 0.8337 14.02%

그럼 어제(20210304)의 상위 종목들 살펴보겠습니다.

date name close score diffratio_nextday
20210304 일양약품 35,000 0.6188 -1.14%
20210304 수산아이앤티 28,550 0.5753 -5.43%
20210304 대한그린파워 1,400 0.5532 7.50%
20210304 진양산업 4,365 0.5196 0.46%
20210304 이녹스 11,000 0.5174 2.27%
20210304 인지컨트롤스 18,600 0.5040 -3.23%
20210304 웅진씽크빅 2,635 0.4985 3.04%
20210304 세원셀론텍 1,995 0.4923 -1.50%
20210304 기가레인 1,825 0.4921 -1.37%
20210304 파루 1,450 0.4917 0.69%

최근 장이 안좋아서 그런지 Score 가장 높은게 0.6 정도입니다. 그럼 오늘 날짜의 Score 상위 종목에는 어떤 종목들이 있을까요?

date name close score
20210305 팬엔터테인먼트 7,670 0.8676
20210305 풍강 3,990 0.8056
20210305 중앙에너비스 9,200 0.5439
20210305 플리토 13,900 0.5383
20210305 한국주강 1,780 0.5381
20210305 일양약품 34,600 0.5241
20210305 극동유화 3,475 0.5151
20210305 한일진공 1,040 0.5141
20210305 인성정보 2,315 0.5056
20210305 텔콘RF제약 5,270 0.4999

다음 거래일에 이 종목들이 어떤 움직임을 보일지 지켜보면 재미있을 것 같습니다.

어디까지나 투자는 본인이 결정하는 것입니다. 퀀티랩에서 제공하는 정보는 참고만 하시길 당부드립니다.