AI 모델을 이용한 주식시장 예측의 한계 (feat. Kaggle)
때는 2021년 여름 저는 알고리즘에 의한 퀀트 투자 봇을 구현하여 가상화폐 거래에 적용해본 적이 있습니다. 투자 봇에 대한 환상과는 다르게 확실한 수익을 보장하지는 못했습니다. 동일한 시기에 저는 머신러닝에 많은 관심을 가지고 있었고, 머신러닝 학습 모델을 투자 전략에 활용할 수 있을까 하는 호기심을 가지게 되었습니다.
주가 예측 인공지능 모델의 신빈성
구글에 검색만 해도 주식시장을 상당히 정확하게 예측을 하는 듯한 그래프 이미지들을 볼 수 있습니다. 저는 이 그래프들을 보고 투자 알고리즘에 적용하는 것에 대한 기대와 동시에 저 예측모델의 신빈성에 의심을 가졌습니다. 사실이라고 하기에는 너무 정확하기 때문입니다. 주식시장은 수많은 외부요인에 의해 영향을 받는데 과거의 주가 데이터만 가지고 저정도 수준의 예측이 가능하다는 것은 상상하기 어려웠습니다.
주가 예측 모델 분석해보기
주가 예측 모델의 신빈성을 의심했던 저는 주가 예측 모델 하나를 찾아서 이를 직접 파헤쳐 보기로 했습니다.
모델 선정
저는 주가 예측 모델을 찾기 위해 데이터분석 플렛폼으로 유명한 Kaggle을 찾아갔습니다. 주식시장 예측을 키워드로 검색했을때 위의 그래프와 비슷한 결과를 보여주는 notebook을 쉽게 찾을 수 있었습니다. 그중 저는 upvote를 가장 많이 받은 notebook을 선택하여 소스코드를 분석하였습니다.
모델 재현
저는 해당 모델의 예측을 IBM 주가 데이터로 재현했습니다. 어느 한 시점 (파란색 선이 노란색과 초록색 선으로 갈리는 시점) 을 현재라고 가정하고 과거의 데이터로 학습하여 미래를 예측하는 형태입니다. 과거 데이터를 Training Set
(파란색)으로 두고 미래 데이터를 Test Set
(주황색)으로 두며, Test Set
을 예측한 값이 Prediction
(초록색)이 됩니다. Long Short-Term Memory (LSTM) 모델이 사용되었으며, 과거 60일의 주가로 다음날의 주가를 예측합니다.
모델의 시각화 오류
위와 같이 시각화했을때 상당히 정확하게 예측하는듯해 보이지만 여기에는 상당히 큰 오류가 있습니다. 우리가 미래로 가정한 시기의 데이터, 즉 Test Set
은 아직 “존재하지 않는다”는 가정을 해야합니다. 예측 과정에서 Test Set
이 사용되어서는 안된다는 의미죠. 그러나 해당 모델은 Test Set
을 사용하여 예측을 하고 있습니다.
좀 더 자세히 설명하자면, 현 시점에서 1일차 예측에는 과거 60일의 데이터가 사용됩니다. 2일차 예측에는 1일차 데이터 + 과거 59일의 데이터가 사용됩니다. 바로 이때 1일차 데이터를 바로 전에 예측한 값이 아닌 Test Set
에서 가져오고 있었다는 겁니다. 결국 저 그래프는 미래의 주가 변동을 정확하게 예측하는 듯 하지만 사실 하루밖에 예측하지 못하는 모델인겁니다.
다른 예시를 하나 들겠습니다. 저는 어느 한 시점에서 그 날의 주가와 다음날의 주가는 같다고 예측을 하겠습니다. 이 예측을 시각화하면 어떻게 나올까요? 실제 주가를 나타내는 크래프에서 모든 점을 한칸 오른쪽으로만 옮기면 됩니다. 그래놓고 이걸 그래프 상으로 예측이라고 해놓으면 그럴 듯해 보입니다. 엉터리 예측이라도 시각적으로 보기 좋게 만들 수 있다는 거죠.
모델 검증
이 모델을 좀 더 엄밀하게 검증하기 위해 저는 두 가지 접근 방법을 취했습니다.
단기 투자의 관점
모든 예측 결과를 수치와 상관없이 두 개의 카테고리인 상승과 하락으로 분류하여 상승인 경우 1, 하락인 경우 0의 값을 할당합니다. 하루 단위로 봤을때 상승과 하락을 정확히 예측하는지를 판단하는 겁니다. 결과는 다음과 같습니다.
주목할만한 점은 1에 대한 precision
과 recall
이 전부 0.00이라는 것, 즉 상승했다고 예측한 경우가 아예 없었고, accuracy
는 0.48로 그냥 찍는 것과 다름이 없었습니다.
장기 투자의 관점
현재라고 지정된 시점의 이후인 미래 데이터는 “존재하지 않는다”는 가정을 유지하여 예측합니다. 즉 Test Set
을 input으로 사용하지 않고 예측된 값이 그 다음 예측의 input으로 사용합니다.
수치적인 설명이 필요 없이 결과는 참담한 수준임을 확인할 수 있습니다.
결론
제대로 검증되지 않은 데이터 시각화는 상당히 잘못된 결론에 이를 수 있습니다. 주가의 변동은 상당히 많은 외부 요인의 영향을 받으며, 과거의 패턴이 미래에 재현되리라는 보장이 없습니다. 주가 예측 분야의 전문가라 할지라도 높은 정확도를 기대할 수 없습니다. 그럼에도 잘못된 시각화로 인해 그러한 예측이 가능하다고 믿을 여지는 충분해 보입니다.
본 분석 내용은 Kaggle에 notebook으로 공유하였습니다.
Kaggle 링크: Limitation of predicting stock market price
댓글남기기