BQML로 게임사 주가 예측하기

개요

  • 데이터로 BQML을 통해서 주가 예측을 해보자
  • 넥슨, 컴투스, 넷마블, nc 소프트의 주가를 예측
  • 5년동안 데이터로 학습하고 넥슨 게임사의 2023-03월달의 주가 예측을 시행함
  • 데이터 흐름: API 크롤링 → 빅쿼리, 빅쿼리ML → Looker Studio

목적

  • 5년치 주가 데이터를 활용힌 넥슨 게임즈의 주가 등락 예측과 경쟁 3사와의 비교
  • BQML 만으로 괜찮은 결과가 나올수 있는지 확인
  • 모델들 비교를 해보며 주제에 어떤 모델이 적합할지 확인

데이터

  • 데이터 크롤링 → 빅쿼리 적재 하는 방법

  • 대상 회사 정의

    • 2018년 이전에 상장한 게임 회사
    • 매출 1~5위 순위 중 위 조건을 충족하는 게임사는 넥슨, 넷마블, ncsoft 였으며, 그 외 순위의 위 조건을 충족하는 컴투스까지 포함하여 총 4개 게임사
    • 게임사 선택 이유: 경쟁사가 많고, 매출 기준으로 순위권 회사들이 상장을 많이 함.
  • 피처 설명

    • 5년치 데이터를 가져 올수 있는 파이썬 api중 가장 많은 데이터를 가져올수 있는 marcap data를 사용하였음
    • Adj_Close(수정종가) 피처는 yfinance에서만 있었고, 모든 날짜에 대해서 있는건 아니지만, 이를 통해서 액면분할 된 주가를 모델에 제대로 반영할수 있어서 추가 하게 되었음
    • marcap데이터 수집 당시 2월 말까지만 수집을 하였고 이로 인해 3월 예측 데이터를 finance data reader로 진행함
    • ml_label: 훈련을 수월하게 하기 위해 임의로 만듦, volume을 기준으로 training:evaluation:prediction = 8:1:1로 나누고 prediction 데이터는 3월 데이터 까지 포함되어 있음.
  • 데이터 개수

  • marcap + yfinance 의 데이터를 8:1:1로 나누고 예측 데이터에 finance data reader에서 2023-03 기간동안의 데이터를 합쳐서 학습을 진행

  • 전일대비 등락률로 예측을 진행하였고 정확한 수치가 아닌 양수면 오름, 음수면 내림으로 환산하여 예측의 정확도를 판별

  • 데이터 기간

    • marcap: 2018-01-02 ~ 2023-02-28
    • yfinance: 2018-01-02 ~ 2023-02-28
    • finance data reader: 2023-03-02 ~ 2023-03-21

모델 선택 및 비교

  • Big Query ML에서 추천하는 주식 데이터 예측 모델로는 Linear Regression, Boosted Trees Regressor, Auto ML Table Regressor, DNN Regressor, Wide & Deep Regressor 이 있음

  • 총 데이터가 만개를 넘지 않을정도로 적고(5104행), 시간이 오래 걸리지 않는 Linear Regression, Boosted Trees Regression 모델을 사용하여 예측

  • 모델 예측 결과 Linear Regression이 모델 학습 속도는 적게 걸리나 오류나 과적합 면에서 Boosted Trees Regression의 결과가 훨씬 나음

  • 실제 등락이 크게 오르거나 내려갈때의 값을 Linear Regression 모델 보다 Boosted Trees Regression 모델이 더 잘 예측함

  • Model Evaluation 값

  • 지표 설명

예측

  • ml_ label이 prediction으로 책정된 데이터를 예측한 결과와 실제 Chages Ratio 값을 비교

  • 정확한 수치를 비교하는것이 아닌 등락으로 비교 -> 비율이 양수라면 값이 오른것, 음수라면 내린것으로 간주

  • feature importance

시각화

결론

  • 애초에 데이터부터 잘못 설계가 된 실험
  • 전날 데이터를 갖고 다음날을 예측 해야 하는데 당일 데이터로 당일을 예측해 버림 → 안정확한게 더 이상한것

Share