일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- FOMC
- 스크리닝
- 국제유가
- 뉴지스탁
- 중국증시
- 코로나19
- 기업분석
- 주가분석
- 제다큐어
- Python
- 지엔티파마
- 반려견치매
- 주식투자
- 마법공식
- 미국금리
- 금리인상
- 테슬라
- 엘론 머스크
- 머신러닝
- 뇌졸중
- 퀀트
- WTI
- 넬로넴다즈
- WTI유
- 아모레퍼시픽
- DSP
- 경제위기
- prometheus
- 중국경제
- 유상증자
- Today
- Total
Data Analysis for Investment & Control
유전 알고리즘(Genetic Algorithm) 응용 - 주가 예측 (논문리뷰) 본문
유전 알고리즘을 가지고 어떤 응용을 할 수가 있을까?
유전 알고리즘의 강점 중에 하나는 전역적 최적해를 찾는데 있다. 그것은 어떤 대상을 모델링하는데 있어서 함수 관계로 설명하고자 할때 함수의 인자를 구해야 하는데, 다른 방법으로는 이 인자를 구하기가 쉽지는 않다. System Identification을 사용하여 모델링을 할 수도 있고, Gradient Decent 방법을 가지고 해를 찾을 수 있지만, 지역 국소해(Local Minima) 문제에 빠질 가능성이 있다.
개인적인 관심사인 금융공학, 특히 주가 예측과 관련하여 유전 알고리즘이 사용된 예가 있는지 구글링해 보았다. 그 결과 몇 편의 논문을 찾을 수가 있었는데, 그 중 한 편 선택해 적용된 아이디어를 검토해 보았다.
검토 논문 선정
Expert Systems with Applications에 2006년 게재된 "An evolutionary approach to the combination of multiple classifiers to predict a stock price index"라는 제목의 논문으로 내용을 100% 전부 이해할 수는 없었지만(시간 관계상) 대략 어떤 식으로 접근을 했는지는 파악하였다.
먼저 예측을 어떤 식으로 하는지를 설명하자면, 종합주가지수(KOSPI) 데이터를 대상으로 주간 예측을 4단계 {Bear, Edged-Down, Edged-Up, Bull}로 나누었다. 즉, 다음 주에 크게 하락하면 Bear, 약간 하락하면 Edged-Down, 약간 상승하면 Edged-Up, 크게 상승하면 Bull로 분류한다.
예측을 하는 시스템이 몇 종류가 있을 때, 각각의 시스템이 하는 예측에 가중치를 두어 이를 모두 반영하여 주가를 예측한다. 예를 들면, A라는 사람과 B라는 사람과 C라는 사람이 있다고 하면, 각각 다음 주에 주가가 어떻게 될 것이라고 예측을 한다. 가지고 있는 경험이나 배경 지식에 따라 잘 맞추는 사람이 있는가 하면 못 맞추는 사람도 있을 것이다. 어떤 사람을 급격하게 주가가 변하는 상황을 잘 맞추는 사람이 있는가 하면, 미미하게 움직이는 상황을 잘 예측하는 사람도 있을 것이다. 이것은 충분히 많은 과거의 예측 기록을 통해 파악이 가능하다.
이 논문에서 유전 알고리즘은 이런 몇 개의 예측 시스템이 있을 때, 상황에 따라 어떤 시스템을 더 믿어줄지 그 적절한 가중치를 찾는데 사용된다.
논문에서는 3가지 예측 시스템(Classifier)를 사용한다. 하나는 Machine Learning 기반 Classifier이며, 다른 두개는 Human-Driven Classifier로 전문가 집단과 사용자 집단의 의견을 반영한 것이다.
먼저, Machine Learning 기반의 Classifier는 우리가 HTS의 차트에서 쉽게 찾아볼 수 있는 몇 개의 기술적 지표를 사용하여 패턴을 찾아 앞으로 주가가 오를 것인지 내릴 것인지를 판단하는 패턴 분류기를 설계하였다. 이 때, 패턴 분류기는 신경망(Neural Network)을 사용하였다. 신경망을 사용해, Back-propagation 알고리즘을 적용하여 각각의 기술적 지표들이 주는 영향을 고려하여 가중치를 학습하였다. 논문에서는 총 9가지의 기술적 지표를 선정했는데, 이를 전부 사용하지 않고 통계적인 검증 방법(one-way ANOVA와 stepwise MDA)을 사용해 예측 연관성이 높은 몇 개의 지표를 선택해 학습시켰다.
다음으로 사람이 판단하는 Human-Driven Classifier는 전문가와 사용자로 나누어 향후 주가 움직임에 관한 의견을 기록하는 것으로 하였다. 여기서 전문가는 경력이 7년 이상인 마켓 애널리스트이며, 사용자는 경력이 1년 미만인 마켓 애널리스트를 의미한다. 아마도 저자는 이 논문에서 사용한 데이터 기간의 애널리스트 의견 기록 데이터를 보유하고 있는 모양이다.
어쨌든 이 3가지 Classifier를 가지고 어떤 상황에서 어느 Classifier에 비중을 더 두어야 하는지 Weight Factor를 찾아야 하는데, 다음과 같은 식을 정의하였다.
w는 우리가 유전 알고리즘으로 찾고자 하는 가중치 값이며, m은 측정 값으로 미래를 예측하기 위한 과거의 데이터를 의미한다. k은 Classifier의 인덱스로 여기서는 3개의 Classifier를 사용하므로 K=3이 되며, i는 예측 범위를 구분하는 인덱스로 여기서는 4개의 영역으로 나누었으므로 i = 1~4가 된다.
적합도 함수는 가중치에 대해 얼마나 예측을 잘 했는지로 판단하며, 값의 범위는 0~1이 된다. 적합도 함수는 다음과 같이 정의한다.
즉, 모든 케이스에 대해 예측이 맞아 떨어졌을 때, 1이 계산된다.
유전자 스트링은 가중치 값을 찾는 것이므로 실수 형태의 데이터로 정의하였으며, 개체수는 100개로 설정하였다. 교차 연산의 범위는 0.5 ~ 0.7이라고 하는데, 너무 한쪽에만 치우치는 것을 방지하고자 한 것 같다. 변이율은 0.06 ~ 0.12 사이의 값을 선택했다. 총 3000 세대의 진화 연산 과정을 수행한 것으로 보이는데, 다른 진화 종료 조건에 대해서는 설명이 없다.
유전 알고리즘 기반의 Classifier 조합을 통한 주가 예측 시스템의 성능을 비교하기 위해 몇 가지 다른 예측 방법을 설명하고 있다. Majority vote, Borda count, Bayesian method, Behavior-knowledge space, Dempster-Shafer theories of evidence가 그것이다. 각각에 대한 설명은 생략하기로 한다.
결국에는 주가 예측을 얼마나 잘하는지 4가지 방향성에 대한 적중률을 비교하는데, 제안한 유전 알고리즘 기반의 조합된 예측 시스템의 성능이 다른 것들보다 뛰어나는 것을 데이터를 통해 증명한다.
중간에 가능성(Possibility)을 확률(Probability)로 변환하는 부분이나 상대적 중요도를 계산하는 부분 등 이해가 더 필요한 부분도 있는데, 리뷰 시간의 제한으로 건너뛰었다.
더 생각해야 할 것들
다른 논문들도 찾아놓은게 몇 개 되지만 선정된 논문이 다양한 이론들이 접목된 깊이 있는 논문인 것같아 리뷰를 진행하였다.
아쉬운 점은 학술적인 목적으로 접근해서 그런지 보통의 투자자들은 개별 주식에 대해 매매를 하는데, 여기서는 KOSPI를 대상으로 적용하였다. 아마도 실제로는 인덱스 펀드 투자를 하는데 제한이 있을 듯 하다. 매매 전략에 대한 실제적 예제에 대한 언급이 없는데 이런 부분이 또한 아쉽다.
예측에 사용된 각 지표들은 기본적으로 주가와 거래량에 기반을 두고 있다. 이것은 일종의 시스템 모델에 대한 출력 신호로서 시스템 모델에 대한 더욱 더 다양한 변수가 고려되야 한다고 생각한다. 이를테면, KOSPI에 영향을 주는 요인으로는 한국의 지정학적 리스트라든가 달러환율, 기준금리 등이 있다.
주가 움직임을 예측하는데 사회관계망(SNS)의 빅데이터 분석을 통해 가격 변화 시점을 예측하는 시도도 있다는 점을 생각하면 다소 Static한 접근이라고 생각된다.
하지만 최근 유행을 하고 있는 신경망 기반의 머신러닝(Machine Learning)이나 유전 알고리즘(Genetic Algorithm), 통계학적 접근과 확률 개념 적용 등 다양한 이론적 배경에서 작성되었다는 면에서 배울점이 많은 것 같다.
참고로 리뷰했던 논문을 아래에 첨부한다. 좀 더 내용을 알고 싶다면 검토해 보기 바란다.
(이 글이 마음에 드신다면 아래 버튼을 눌러 주세요~~^^)
'MachineLearning' 카테고리의 다른 글
Softmax 함수 (0) | 2018.09.15 |
---|---|
Cross Entropy (0) | 2018.09.14 |
Maximum Likelihood Estimation의 이해 (0) | 2018.08.23 |
Matlab을 이용한 유전 알고리즘(Genetic Algorithm) 예제 (5) | 2015.04.22 |
유전 알고리즘(Genetic Algorithm) 소개 (2) | 2015.04.16 |