퀀티랩 단타 모델 - 딥러닝으로 내일의 주가 방향을 예측하는게 가능할까?
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%
Score가 마냥 높다고 정확도가 높아지는 것은 아니였습니다. 0.8 까지는 높아지다가 0.9 이상에서는 정확도가 오히려 급격하게 감소했습니다. 정확도가 가장 높은 범위를 찾아봤습니다.
Score 0.83 이상 0.835 미만의 295개 인스턴스에서 정확도 94.58%를 얻을 수 있었습니다.
여기에 포함된 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 |
다음 거래일에 이 종목들이 어떤 움직임을 보일지 지켜보면 재미있을 것 같습니다.
어디까지나 투자는 본인이 결정하는 것입니다. 퀀티랩에서 제공하는 정보는 참고만 하시길 당부드립니다.