이번 글에서는 뉴스 기사로 주가의 방향을 예측하는 머신러닝 모델을 방법에 대해서 알아볼 것입니다.
미래에 오를 주식을 미리 아는 것을 누구나 한번은 상상해 본 적이 있을 겁니다. 아니면 현재의 기억을 가지고 가거나 돌아간다면 미래의 가치가 오를 것들에 대해서 미리 투자할 수도 있습니다. 이와 같이 미래에 일어날 일에 대해서 예측하여 돈을 벌고자 하는 행동은 수많은 사람들의 관심을 받아 왔고, 주가를 예측하는 것 또한 마찬가지입니다.
주가를 예측하는 것은 예전부터 계속해서 시도되어 왔고, 지금도 계속해서 연구 중인 분야인데, 주가에 영향을 끼치는 요소는 매우 다양하고, 이에 따라서 분석하기 위해 접근하는 방법도 매우 다양합니다. 다양한 주식 지표로 접근하는 방법부터 차트의 모양새를 보고 판단하거나, 재무제표를 토대로 회사의 방향을 예측하는 등 다양한 방법들이 있습니다.
이러한 것들을 토대로 머신러닝과 딥러닝을 도입하여 실제 주가를 예측하고자 하는 시도도 많이 있었는데, 이번에 진행할 프로젝트에서는 일반적으로 사용하는 차트와 주식 지표로 접근하는 것이 아니라 주식에 대한 정보를 잘 모르는 개미투자자로서 주식에 대해 접근해 보려고 합니다.
일반적으로 특정 기업에 대해서 정보를 어디서 얻을 수 있겠느냐고 생각하면 해당 기업에서 내는 공시도 있지만, 개미투자자가 관심이 있는 기업에 대한 공시를 확인하기는 어려울 것이고, 그 공시를 확인할 수 있는 주기 또한 일정하지 않습니다.
하지만 우리는 특정 기업에 대해서 검색을 해보면 그 기업에 대한 기사가 엄청나게 쏟아지는 시대에 살고 있고, 그 기사에는 무조건적인 신뢰를 할 수는 없지만 우리는 그 기업에 대한 다양한 정보를 얻을 수 있습니다.
그리고 이전 날의 기사에서 좋은 소식이 포함된 뉴스가 많으면 그 다음 날 가격에 좋은 영향을 끼칠 것이고, 나쁜 소식이 포함된 뉴스가 많으면 그 다음 날 가격에 악영향을 끼칠 것이라고 생각했습니다.
그래서 기업별로 산업 분야에 따라 호재와 악재라고 인식되는 사건들이 있을 것이고, 이런 것들이 뉴스에서 주가에 좋은 영향을 끼치는 키워드와 나쁜 영향을 끼치는 키워드로 나눌 수 있다고 생각하였습니다.
그래서 수집한 기사들을 자연어 처리를 통해서 날짜별로 그날의 핵심 키워드들에 점수를 주는 방식으로 데이터를 만들어서, 이 데이터를 토대로 다음 날의 주가가 상승할지 하락할지 예측하려고 합니다.
일반적으로 주가 예측 프로젝트는 주식별로 시계열 데이터를 이용하여 분석하는 경우가 많은데, 이번 프로젝트에서는 시계열이 아닌 전날 기사들을 통해서 다음날 주가가 상승할지 하락할지를 예측하는 분류모델을 만들어보려고 합니다.
실제 프로젝트를 진행하기 전에 사용한 데이터는 Python으로 웹 스크래핑 하기 을 통해서 수집하였습니다.
일단 위의 과정을 통해서 단순하게 2019년 기준 코스피 시총 상위 100개 기업에 대해서 1년 치의 뉴스 기사를 수집할 수 있었습니다. 이 과정을 통해서 단순하게 기사의 제목과 본문을 가져온 것이기 때문에, 그 기사들의 제목과 본문 내용을 간단하게 전처리할 필요가 있습니다.
여기서 전처리 과정은 크게 2가지로 진행하였습니다.