4. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Background – Stock Trading
주식의 투자전략
1. 종목 선택: 무엇을 사느냐 ?!
2. 매매 시점: 언제 사고, 팔느냐 ?!
기술적 분석
1. 과거 주식 기록을 토대로 일관된 추세를 발견하고
미래 주식 가격의 변동 방향을 찾아내는 분석 기법
2. 가격에는 주식의 모든 정보가 반영됨
가격은 일정한 추세 범위 내에서 움직이고 반복적 패턴이 있다고 가정
5. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Background – Statistical Analysis
통계적 분석
1. 주가에 영향을 미치는 유의미한 변수를 찾기 위해 통계적 접근
2. 각 변수와 주가와의 선형적인 관계를 알아보기 위해
상관분석(Correlation Analysis)을 진행함.
3. 선형관계가 보이지 않아 통계적 접근으로는 한계가 있음.
비선형관계를 해석할 수 있는 머신러닝 기법을 도입
7. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Trading System
증권사 API
• 이베스트투자증권의 API를 사용
• 시가, 종가, 거래량, 등락률 등의 주식 데이터 수집
머신러닝 모델링
• 수집한 데이터를 머신러닝에 적합하게 가공
• 가공된 데이터를 바탕으로 머신러닝 모델 개발
• 실시간 주식의 가격 정보를 바탕으로 예측하여 트레이딩
9. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Prediction System
종목 선택
• 머신러닝 모델이 선택
• 전날까지 데이터 학습 후 다음 날 상승할 종목 선정
• 선정된 종목에 대해 30초 단위 거래 로직을 통한 수익 창출
매수/매도 타이밍
• 골든크로스 : 단기이동평균선이 중장기 이동평균선을 상향돌파하는 것
• 데드크로스 : 단기이동평균선이 중장기 이동평균선을 하향이탈하는 것
• 골든크로스에서 매수, 데드크로스에서 매도
10. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Design ML Model
Problem 1 상관 분석 결과, 통계적 방법을 통해서는 회귀선을 얻기 힘듬
Solution
비선형 모델이기에 통계가 아닌 머신러닝 기법을 이용하여 접근
내일의 주가가 오를지, 떨어질지 예측
Detail
거래량 상위 40개 종목에 대하여 900일(4년) 간의 데이터 수집
그 결과, Cross-Validation Score가 51% 나옴
11. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Design ML Model
Problem 2 각 Feature들의 데이터 범위가 다르고 치우침이 있음
Solution 중심점과 변량을 고려하여 Z-scoring 정규화(Normalization)
Detail
모든 Feature에 대하여 정규화를 하여 데이터의 구분력을 키움
그 결과, Cross-Validation Score가 56% 나옴
12. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Design ML Model
Problem 3 Class 별 인스턴스 수 상이하여 데이터의 Imbalance 문제 발생
Solution
Over-Sampling 방법을 통해 인스턴스 수를 증가 시킴
직접 고안한 Sliding Window를 방법을 이용하여 Over-Sampling
Detail
• 보통 사용하는 Over-Sampling 방법인 SMOTE의 경우, Euclidian Distance
기반이기에 주식데이터에 알맞지 않음
• 10일 간격으로 Sliding Window 기법을 이용해 구간 별 가격의 위치
정보를 보존하면서, 인스턴스의 수를 증가 시킴
• 그 결과, Cross-Validation Score가 66% 나옴
14. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Simulation Trading
Design Simulation Test
• Train Data: KOSPI 상장, 거래량 상위 100 종목
KOSDAQ 상장, 거래량 상위 100 종목
• 직접 고안한 10일 단위 Sliding Window기반 Over-Sampling 기법 적용
• 매수/매도를 위해 4%이상, -4%이하의 Class만 학습하고 예측
돈을 버는 것보다 잃지 않는 것이 중요!
등락이 확실한 경우에만 거래!
15. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Analysis
검증 과정 – Graph Analysis
• 초기자금: 100만원
• 1년 간의 시뮬레이션 트레이딩을 통한 수익 확인
• 다양한 가격 변동 패턴의 종목으로 Test 데이터 구성
상승 패턴: 10개
하락 패턴: 10개
보합 패턴: 10개
• 1년 간의 가격 변동과 매수 / 매도를 그래프화하여 수익 분석
24. SW_Maestro_
Introduction
Related Work
Stock Trading
ML Modeling
Analysis
Future Work
Future Work
Reinforcement Learning
• 현재는 매수와 매도의 기준 Threshold를 수동으로 책정
• Reinforcement Learning을 통해 모델이 스스로 학습하도록 개선
Opinion Mining
• 언론 기사 정보, SNS 정보 등을 Opinion Mining하여 Feature로 사용
• 기사의 내용, 맥락과 더불어 감정 분석도 효과적일 것으로 예상
RNN Model
• 시계열 데이터 분석 모델 중 하나인 RNN을 통한 성능 향상
문제 : 클래스 별 샘플의 수가 상이하여 Imblance 데이터문제
해결 : 주식 데이터의 특성을 고려한 오버샘플링 방법을 통해 샘플 수 증가 방법 고안
오버샘플링이란, 불균등 데이터로 인해 특정 클래스로 오버핏 되는 문제를 개선하기 위해서 부족한 클래스의 샘플을 증가시키는 방법
오버샘플링 방법:
1. SMOTE: 벡터 상의 근접한 인스턴스들이 동일한 군집으로 가정하여 군집 근처의 랜덤한 인스턴스를 생성하는 방법. 단, 주식 데이터는 유클리디안 디스턴스로 판단할 수 없으므로 SMOTE를 통한 오버샘플링은 노이즈를 증가시킨다.
2. 고안한 방법: 10일 간격 슬라이딩 윈도우를 통해 구간 별 가격의 위치 정보를 보전하며, 샘플을 증가시킴.
=> 이렇게 해도 클래스간 편차는 여전함. 하지만 우리의 경우는 적은 양의 샘플을 가진 클래스를 키우는 게 중요!
이렇게 하니까 66프로까지 개선됨.