이번 포스팅에서는 다양한 방법을 활용하여 주식회사 오뚜기의 주식 종가와 거래량에 영향을 미치는 키워드를 찾아내는 실험을 진행해보았다. 이전에는 주식 선행연구에 대한 분석과 분산투자 플랫폼 설계에 관한 내용을 다루었다. 이번에는 특정 기간 동안 오뚜기 주식의 종가가 평균에 비해 크게 벗어나는 날이 언제인지를 파악하고, 그 날짜에 어떤 기사들이 발행되었는지를 살펴보았다.
먼저, 2023년 1월부터 10월까지의 오뚜기 종가를 확인해보자.

2023년 6월부터 7월 사이 급격하게 주가가 감소했음을 확인했다. 이제 종가와 거래량이 다른 날짜 대비 많이 변화한 날을 확인해보자. KNIME&Python으로 전처리를 진행하고, 분석은 Python으로 실시했다.


비교를 위해 기간 내 종가와 거래량을 차분하고, z-score로 편차를 비교했다. 2023년 8월 중순에 종가와 거래량 모두 높은 점수를 보여주고 있다. 종가 기준, z-score의 절대값이 2보다 큰 값을 극단값이라고 정의했다.
- Z-score : 특정 데이터 포인트가 전체 데이터의 평균으로부터 얼마나 떨어져 있는지를 나타내는 표준화된 수치로, 평균을 0, 표준편차를 1로 가진 정규분포를 기준으로 계산한다.

종가의 편차가 다른 날에 비해 높은 일자를 찾았으니, 이제 해당 날짜의 기사 내용을 확인해보자. 네이버 경제 뉴스에서 2023년 1월부터 10월까지의 기사를 크롤링했고, 1,084개의 기사를 엑셀 파일로 저장했다. 여기서 중요한 점은, 국내 주식의 정규장은 오전 9시부터 오후 3시반까지 라는 점이다. 즉, 날짜를 단순히 일자로 분할하는 것이 아니라 오후 3시반을 기준으로 분할해야 한다. 예를 들어, 1월 1일 오후 3시의 기사는 1월 1일의 주식에 영향을 준다고 가정하고, 1월 1일 오후 3시 40분의 기사는 1월 2일의 주식에 영향을 준다고 가정했다.

크롤링 결과에서 종가의 극단값에 해당하는 날짜를 join하고, konlpy의 Okt 형태소 분석기를 사용해 명사를 추출하였다. 결과는 아래와 같다.
상승 : [('정보', 50), ('제품', 39), ('식품', 37), ('코드', 35), ('라벨', 33), ('표시', 27), ('도입', 23), ('필수', 22), ('오뚜기', 20), ('사업', 20), ('포장재', 20), ('소비자', 17), ('사항', 16), ('녹즙', 16), ('제공', 15), ('적용', 15), ('풀무원', 14), ('시범', 12), ('업계', 12), ('된장국', 11)]
하락 : [('정보', 36), ('상품', 31), ('오뚜기', 31), ('제품', 29), ('표시', 23), ('제공', 19), ('소비자', 19), ('식품', 19), ('라벨', 19), ('이마트', 17), ('통해', 16), ('시범', 15), ('출시', 14), ('지난해', 14), ('가격', 14), ('코드', 14), ('기존', 13), ('진행', 13), ('맛', 12), ('대비', 12)]

형태소 분석기의 성능이 높지 않아서, 단순 빈도 분석만으로는 해석할 수 있는 정보가 없다고 판단했다. 또한, 중간에 sentence-transformers와 cosine similarity 를 활용해 일자별로 문장의 유사도를 확인해서 동일한 날짜에 비슷한 기사는 제거하려고 했으나, 중요한 내용이기 때문에 비슷한 기사가 작성되었을 수도 있다는 생각을 해서 가중치로 간주하기로 결정했다. 위의 그림은 일자별 기사 유사도를 보여준다.
바른
최고 성능의 한국어 형태소 분석기「바른」을 무료로 사용해 보세요.
bareun.ai
Okt가 아닌 다른 형태소 분석기를 찾아보던 중, 빅카인즈의 뉴스 기사 자료를 학습한 바른 형태소 분석기를 활용해보았다. okt와 동일한 방법을 사용했으며, 종가의 극단값에 해당하는 기사 빈도 분석은 다음과 같다.
상승 : [('제품', 119), ('식품', 90), ('정보', 85), ('소비자', 61), ('상품', 54), ('맛', 54), ('만두', 54), ('콘텐츠', 50), ('가격', 47), ('코드', 45), ('대비', 44), ('라벨', 44), ('QR', 43), ('행사', 42), ('농심', 40), ('생산', 39), ('매운맛', 38), ('이마트', 37), ('할인', 36), ('종', 36)]
하락 : [('가격', 636), ('라면', 345), ('인하', 242), ('제품', 200), ('농심', 121), ('지난해', 103), ('정부', 92), ('삼양식품', 91), ('후보', 78), ('대표', 74), ('소비자', 73), ('평균', 71), ('밀', 65), ('물가', 64), ('관계자', 60), ('값', 59), ('영업', 59), ('부담', 57), ('인상', 57), ('기업', 55)]
이전과 달리 빈도 분석만으로 어느정도 해석할 수 있는 결과가 나옴을 확인했다. 상승한 날짜의 기사에서 신제품 출시, 제품의 맛이나 품질, 소비자의 반응, 가격의 변동, 행사나 할인 등에 대한 언급이 많았을 수 있음을 시사하며, 이러한 요소들이 주가 상승에 영향을 미쳤을 가능성이 있다. 반면, 하락했을 때의 주요 단어들을 보면 가격 인하, 제품의 가치 하락, 정부의 정책 변화, 경쟁사와의 관계, 소비자의 반응, 영업 부담 등에 대한 언급이 많았음을 나타내며, 이러한 요소들이 주가 하락에 영향을 미쳤을 가능성이 있다.
LDA
단순 빈도분석보다 의미있는 결과를 만들고 싶어 종가와 거래량 상승, 하락별로 LDA Topic Modeling을 진행했다. 결과는 Intertopic Distance Map으로 표시해보았다. 모든 결과를 표시하기엔 양이 너무 많아서, 종가의 상승과 관련된 토픽 3가지만 정리해보았다.
- Intertopic Distance Map : 다차원 스케일링을 사용하여 토픽들을 2차원 공간에 표현하고, 이를 통해 토픽들 사이의 유사성을 시각적으로 파악
- 다차원 스케일링: 통계적 기법을 사용하여 고차원 데이터를 저차원(일반적으로 2차원 또는 3차원) 공간에 표현하는 것



결과를 해석해보면, 다음과 같다. 아래의 식은 가중치를 나타내며, 해당 토픽에서 가장 중요한 역할을 수행하는 단어라고 해석하면 된다.
- 첫 번째 토픽 : 0.018*"정보" + 0.017*"식품" + 0.014*"제품" + 0.011*"상품" => 할인 행사 및 신규 사업
- 두 번째 토픽 : 0.020*"제품" + 0.016*"콘텐츠" + 0.010*"소비자" + 0.010*"농심" => 경쟁사 대비 경쟁력 강화
- 세 번째 토픽 : 0.014*"출시" + 0.013*"만두" + 0.013*"육즙" + 0.011*"국내" => 내수, 외수 시장 만두 신제품 출시
첫 번째 토픽을 해석하면, 식품 혹은 제품의 할인 행사 및 'e-라벨' QR코드를 찍으면 식품 원재료명·영양성분을 한 눈에 볼 수 있는 사업을 시작한 것이 주가 상승에 기여했음을 확인할 수 있다.
두 번째 토픽은 경쟁사가 언급되고, 이익이 증가했으며 업계의 경쟁력이 강화되었다고 해석할 수 있다. 즉, 시장에서 오뚜기 제품의 경쟁력이 올라가서 주가에 영향을 줬다고 해석할 수 있다.
세 번째 토픽은 육즙과 관련된 만두 신제품을 출시했고, 국내 시장 및 해외에서 인기 상품으로 판매되고 있다고 해석할 수 있다. 신제품 출시가 주가 상승에 기여했다고 해석할 수 있다.
LDA 분석 결과, 빈도 분석보다 의미있는 결과를 해석할 수 있었다. 내용이 조금 길어지더라도, 주가의 하락과 관련된 토픽이 궁금해서 가장 많은 영향을 끼치는 토픽을 하나 더 정리해보았다.

- 1번째 토픽 : 0.060*"가격" + 0.026*"인하" + 0.018*"라면" + 0.015*"제품" => 라면 가격 인하
라면 제품의 가격이 인하된 것이 주가 하락에 큰 영향을 줬음을 확인할 수 있다. 실제로 2023년 6월 기획재정부에서는 서민의 물가 부담을 감소하기 위해 라면 업계에 가격 인하를 요청했다. 해당 기간 오뚜기의 주가는 큰 폭으로 감소했으며, 이는 포스트 상단의 종가 그래프에서도 확인할 수 있다.
단어 네트워크
LDA와 동일한 데이터로 단어 네트워크를 그려보았다. 단어 네트워크란, 텍스트 데이터에서 단어들 간의 연관성을 그래프 형태로 표현한 것이다. 노드는 단어를, 링크는 단어들 간의 연관성을 나타낸다. 연관성은 공동 출현 빈도, 유사도 등 다양한 방법으로 측정할 수 있다. 아래에는 종가와 거래량의 등락에 따른 네트워크를 그림으로 표현했다.

LDA의 결과와 일치하는 부분이 많음을 확인할 수 있다. 새롭게 알게 된 사실은, 소비자가 오뚜기의 매운맛 상품을 선호하며 주가 상승에 긍정적인 영향을 미친다는 점이다. 2023년에는 맵기를 측정하는 스코빌 지수를 기반으로 하는 매운 음식의 수요가 급등했다. 오뚜기도 이에 맞춰 열라면에 마늘과 후추를 더한 '마열라면'을 출시했으며, 현재도 매운맛이 트렌드로 자리 잡았기 때문에 향후에도 식품 시장의 상황을 주도면밀하게 관찰할 필요가 있다.

하락 단어 네트워크 역시 LDA와 유사한 결과를 보이고 있다. 물가 상승으로 인한 정부의 라면 가격 인하 요청, 경쟁사의 이름을 확인할 수 있다. 주가 상승 요인에서 소비자들은 오뚜기의 신제품 및 원재료명·영양성분을 한 눈에 볼 수 있는 e-라벨에 긍정적인 반응을 확인했다. 따라서, 올해의 트렌드인 매운맛 제품을 출시하거나 소비자가 직관적으로 정보를 얻을 수 있는 방법을 고안하면 가격 인하라는 약점을 보완할 수 있다는 생각이 든다.
TF-IDF
TF-IDF(Term Frequency-Inverse Document Frequency)는 정보 검색과 텍스트 마이닝에서 사용하는 가중치로, 특정 문서 내에서 단어의 중요도를 나타낸다. TF-IDF는 두 가지 요소, 즉 '단어 빈도(TF)'와 '역문서 빈도(IDF)'를 결합한 값이다.
- 단어 빈도(TF, Term Frequency): 특정 단어가 문서 내에서 얼마나 자주 등장하는지를 나타낸다. 단어가 많이 등장할수록 그 문서에서 단어의 중요도는 높아진다.
- 역문서 빈도(IDF, Inverse Document Frequency): 전체 문서 집합에서 특정 단어가 등장하는 문서의 수에 반비례하는 값을 나타낸다. 같은 단어라도 그 단어가 드물게 등장하는 문서에서는 더 높은 가중치를 가진다.
TF-IDF는 특정 단어가 문서 내에서 자주 등장하지만 다른 문서들에서는 잘 등장하지 않는 경우, 그 단어를 해당 문서의 주제를 나타내는 중요한 단어로 간주한다. 위와 동일하게 주가가 극단적으로 상승 혹은 하락한 날 기사들로, tf-idf를 사용해보았다.
상승 : [('계란', 1.0),('11번가', 0.0),('1245', 0.0),('amp', 0.0) ('bgf', 0.0),('bts', 0.0),('ci', 0.0), ('cj맥스봉핫바', 0.0), ...]
하락 : [('all', 0.0), ('amp', 0.0), ('bts', 0.0), ('cj제일제당', 0.0), ('cj푸드', 0.0), ('cj푸드빌', 0.0), ('cj찬', 0.0), ('cm', 0.0), ...]
해당 기사들로는 정확한 결과가 도출되지 않는다. 2023년 1월부터 10월까지 전체 기사 데이터도 사용해보았으나, 여전히 동일한 결과를 확인할 수 있었다. TF-IDF 값이 전부 0이 나오는 결과는 특정 문서를 구분짓는 정보가 없음을 의미한다. 오뚜기에 대한 기사들만을 가져왔기 때문에 발생한 문제라고 추측된다.
이번 포스팅에서는 오뚜기의 주가 변동성에 대한 기사를 빈도 분석, LDA, 단어 네트워크, TF-IDF 등 다양한 분석 방법을 이용하여 깊이 있게 살펴보았다. 단일 분석법에 의존하는 것이 아니라, 여러 방법을 병행하여 분석한 결과, 일부는 서로 일치하는 패턴을 보였지만, 모든 부분에서 일치하지는 않았다. 분석 방법에 따라 의미 있는 결과를 도출한 경우도 있었지만, 반대로 그렇지 않은 경우도 확인할 수 있었다. 실무나 프로젝트에서도 단일 방법론에 의존하기보다는 다양한 방법을 활용하여, 서로 보완적인 해석을 도출하는 것이 중요하다.