Stock Movement Prediction from Tweets and Historical Prices - 리뷰

2020. 4. 2. 21:10관심있는 주제

728x90

2018년도 현재 29회 인용된 논문이다. 
읽게 된 큰 이유는 tweets(NLP), Historical Prices(이전 가격)을 기반으로 주식 움직임을 예측한다는 것과 VAE를 통해 정보 NLP 정보 압축된 값을 사용한다는 것에서 흥미가 갔다.
저자의 주장으로는 자기네 논문이 주가 움직임 생성 모델을 처음 제안한다고 한다.
깊이 있는 내용은 잘 못 적을 것 같으므로, 좀 더 잘 알고 싶으신 분은 논문을 읽으시면 된다.

Abstract

주식 움직임 예측에는 어려운 문제점이 있다.
시장은 매우 stochastic하고, 혼란스러운 데이터로부터 temprally-dependent 예측을 해야 하기 때문이다.
저자는 그래서 이러한 3가지 복잡성을 해결하기위해 텍스트와 주가 신호를 결합하여 탐험하게 하는 딥 생성 모델을 제안한다고 한다. 분류나 토픽 모델링과는 달리 이 모델에서는 3가지를 도입한다고 한다.

  • recurrent,
  • continuous latent variables for a better treatment of stochasticity, 
  • and uses neural variational inference to address the  intractable posterior inference

또한 저자는 예측 의존성을 유연하게 포착하기 위해 temporal auxiliary 와 hybrid 목적 함수를 제공한다고 함.

Introduction

NLP
public news and social media are two primary content resources  for stock market prediction,

최근에 Hu et al(2018)은 주가 흐름 예측을 위해서 계층적인 어텐션 메카니즘(hierarchical attention mechanism)을 사용하여 텍스트에서 직접적으로 뉴스 시퀀스를 발굴하는 것을 제안했다고 함.
그러나 주식 움직임 예측은 시장의 높은 확률성 때문에 어렵다고 널리 알려졌다. 주식 가격은 새로운 정보로써 크게 영향을 받기 때문에 결과적으로는 random-walk pattern을 가진다. (1999) ~~ NLP 내용들이 나옴.

본질적으로 주가 움직임 예측은 시계열 관련 문제다. 
움직임 예측 사이에서 시간적 의존성의 유의성은 NLP 연구에서는 다루어지지 않았다고 한다. 

예를 들어 회사가 거래날 $d_1$에 주요한 스켄들로부터 고통받을 때, 일반적으로  주식은  다가오는 $d_2$날까지 떨어질 것이다. $[d_1, d_2]$ 그래서 주식 예측가가 감소하는 패턴을 인지한다면, $[d_1, d_2]$동안에 움직임을 예측할 때 이득이 생길 것이다. This predictive dependency is a result of the fact that public information, e.g. a company scandal, needs time to be absorbed into movements over time (Luss and d’Aspremont, 2015), and thus is largely shared across temporally-close predictions. (암튼 시간 사이에 예측 의존성이 생김)

그래서 앞에서 언급한 것에 대한 3가지의 한계점은 다음과 같다.

  • high market stochasticity
  • chaotic market information
  • temporally-dependent prediction,

이것을 해결하기 위해 저자는 StockNet(주가 움직임 예측 생성 모형)을 제안함.

stochastic factor를 잘 통합하기 위해 recurrent, continuous latent variables으로 모델링한 latent driven factors를 생성VAE에서 영감을 받아서 end-to-end 훈련을 위해 recurrent variational lower bound를 이끌어 냈고, 참신한 decoder 네트워크를 제안함.
이러한 주가 움직임 예측 생성 모형은 저자들이 아는 한에서 처음이라고 함.

StockNet은 시장 정보를 정말 활용하기 위해 구조화 된 이벤트를 미리 추출하지 않고 데이터로부터 직접 학습한다고 함.
 예를 들어 두 가지 기본적인 정보를 모두 참고하여 시장 공급원을 구축한다. (트윗과 기술적 특징, 과거 주가)
예측 의전성을 더 명확하게 만들기 위해서 주가의 움직임 예측은 lag window에서 과거 움직임을 예측하는 학습에서 이익을 얻을 수 있다고 가정함. We propose trading-day alignment as the framework  basis (Section 4), and further provide a novel  multi-task learning objective (Section 5.3).  

2 Problem Formulation

타겟 주가 움직임 예측을 목표로 하였고, 관련 소셜 미디어로 구성된 시장 정보(트위트), 과거 주가$[d-\delta d , d-1]$를 사용함. 그리고 이산형 움직임을 추정함. 올라가면 1, 안 올라가면 0으로 정의함.

$p^c_d$ 는 adjusted closing price를 사용했다고 함.  주가에 영향을 미치는 기업 활동에 대한 adjusted closing price를  의미함.(dividend and splits) adjusted closing price는 주가 움직임 예측 또는 재정의 변동성에 널리 사용된다고 함. 

3 Data Collection

우리는 예외적으로 작은 움직임 비율을 가진 다수의 표적이 있다는 것을 관찰한다. 3자 주가지수 예측 과제에서는 이러한 움직임을 다른 "보존" 등급으로 분류하는 것이 일반적인 관행이다(Hu et al., 2018). 소셜 미디어에서 식별할 수 있는 주식변동 2진 분류(binary classification)를 목표로 하기 때문에, 우리는 -0.5%와 0.55%라는 두 개의 특정 임계값을 설정하고, 두 임계값 사이의 이동%로 선택된 대상의 38.72%를 간단히 제거한다. 이동 백분율 -0.5%와 >0.55%를 가진 표본은 각각 0과 1로 표시한다. 두 개의 임계값을 선택하여 두 개의 등급의 균형을 이루는데, 그 결과 전체 데이터셋에서 26,614개의 예측 대상이 49.78%와 두 등급에서 50.22%가 된다. 우리는 그것들을 시간적으로 나누었고, 20,339개의 01/014와 01/08/2015 사이의 움직임은 훈련을 위한 것이고, 2,555개의 01/08/2015에서 01/10/2015까지의 움직임은 개발을 위한 것이며, 3,720개의 움직임은 테스트를 위한 것이다.

결국 관행이 3개인데 먼가 특정 임계치를 통해 짜르고, 자른 기준은 균형을 맞추기 위해서 -0.5% , 0.55%에서 잘랐다고 함.

Train Valid Test
2014/01/01~2015/01/08 2015/01/08 ~ 2015/01/10 2015/01/10~2016/01/01

여기서는 계속 강조하지만, Twitter(NLP)와 과거 주가 데이터로 한다고 함.

4 Model Overview

데이터 정렬, 모델 요인화 및 모델 구성 요소에 대한 개요를 제공한다.
거래일 $d$의 움직임을 예측하는 것은 거래일의 이전 거래일의 움직임을 예측하는 데 도움이 될 수 있다고 가정한다.
단, 표본 독립성의 일반적인 원칙으로 인해, 일시적으로 닫힌 표적 날짜로 표본에 직접 연결을 구축하는 것은 모델 학습에 문제가 있다. 대안으로 우리는 목표 거래일 $d$가 있는 표본 내에서 $d$에 가까운 예측 목표를 시뮬레이션할 수 있는 $d$가 아닌 다른 거래일이 있을 가능성이 있다는 것을 알아챘다. 

이러한 관찰과 멀티태스 학습(Caruana, 1998)에 의해 동기 부여된 저자는 $d$뿐만 아니라 그 지연에 존재하는 다른 거래일들에 대해서도 움직임 예측을 한다. 예를 들어, 그림 2와 같이. 07/08/2012 및 5일 지연을 대상으로 하는 표본의 경우, 03/08/2012 및 06/08/2012는 지연에서 적격 거래일이며, 또한 이 표본의 시장 정보를 사용하여 예측한다.
따라서 이러한 예측 사이의 관

그림 2

위의 예에서 볼 수 있듯이, 지연되는 모든 날짜가 적절한 거래일(예: 주말과 휴일)은 아니다. 입력을 보다 잘 정리하고 사용하기 위해, 저자는 기존 연구에 사용된 달력일 대신 거래일을 샘플 제작의 기본 단위로 간주한다.
이것을 통해 거래 적정일을 찾을 수 있다고 함. $[d- \delta d +1 , d]$ $t \in [1, T]$

저자는 trading-day alignment를 제안함. 거래일 $T$를 정리하기 위해서 tweet corpora와 과거 주가를 포함한 인풋을 재조정했다고 함. 구체적으로 말하면, 그림 2에서 $t$th 거래날에, corpus $M_t$ in $[d_{t-1}, d_t)$ 로부터 시장 신호를 인식하고 과거 주가 $d_{t-1}$에서 $p_t$를 통해서 $d_t$에 있는 $y_t$의 움직임을 에측하도록 구성했다고 함. 

결과적으로 결과 샘플은 모든 단위의 거래일이며, 일련의 주가 움직임 $y = [y_1,... y_T]$를 예측한다고 함.
중요 타깃 $y_T$는 나머지는 $y^*=[y_1,..., y_{T-1}]$은 temporal auxiliary target으로써의 역할을 한다.

여기서 중요한 것은 $p_{\theta}(y_T|X)$ 대신에 $p_{\theta}(y, Z|X)$를 사용한다고 함 ($1~T-1$까지의 조건부 합)

크게 이 모델에서는 3파트가 있음 MIE , VMD , ATA


5 Model Components

5.1 Market Information Encoder(MIE)

MIE는 마켓 정보 질을 향상하기 위해 소셜 정보와 주가로부터 정보를 encode 함. 그리고 VMD를 위해서 인풋 마켓 시장 정보 $X$를 출력함.

각각의 temporal input은 다음과 같음.

$$x_t =[c_t, p_t]$$

$c_t$와 $p_t$는 corpus embedding과 과거 주가를 의미함.

여기에서는 2개의 GRP를 사용함.

그다음에 ATTENTION을 사용한 것 같음.

그리고 Embedding Matrix $M_t$와 $u_t^T$를 사용하여 $c_t$를 얻음

절대적인 값보다는 주가 움직임을 결정하는 것은 가격 변동이기 때문에, 거래일 $p_t=[p_t^c, p_t^h, p_t^l]$이 구성 $p_t$ vector 보다는 지난 조정된 종가(adjusted closing price)를 통해서 정규화를 함 $p_t = \frac {p_t}{p_t^c} -1$ (개인적으로 왜 저런 식을 사용하는지 궁금했는지, 이제 알게 됐음. ) 그다음에 위에 $c_t$와 결합하여 VMD로 보냄

$$p_t = \frac {p_t}{p_t^c} -1$$

5.2 Variational Movement Decoder

$p_{\theta}(z_t$ z_{<t}, x_t)$가 포함된 KL 이 모든 다른 모델 입력 및 잠복 기록에 대해 종속적 잠재 변수를 추론하는 동적 역할을 하는 엄격한 하한을 제공한다고 함.

저자가 주장한 참신한 Decoding 부분 설명

VMD는 특징을 추출하고 주가 신호를 재귀적으로 decoding 하기 위해 RNN을 사용함.

가우시안 분포는 location-scale 분포에 속하므로 reparmeterization trick을 적용함.
그래서 저자는 

각가의 $h_t$를 통해서 g_t를 만들어 냄

그다음에 이것을 다시 softmax를 사용함 그래서 주요 타깃 $y_T$는 $z_{<T}$에 의존하게 됨.

5.3 Attentive Temporal Auxiliary

여기서 auxiliary prediction $Y^* = [y_1,..., y_{T-1}]$을 통해서 Temporal attention을 통해서 $y_T$를 얻게 됨.

아래 식을 기댓값 형태로 근사하기 위해서 MonteCarlo 방법을 사용함. 

저런 목적 함수를 만들었다고 함. 5.2는 의미상 다른 $<(T-1)$정보를 위해서 한다고 대충 넘어갈 수 있다고 치더라도 5.3 부분이 크게 와 닿지가 않음. 

data skew를 피하기 위해서 Metric은 MCC를 사용했다고 함.

그림에서도 알 수 있듯이 굉장히 미미한 성능이 나왔고, 이는 주가 예측이 어려움 문제여서 56% 나왔지만, binary  주가 움직임 예측면에서 만족할만한 결과라고 함.

일단 전체적으로 쭉 한번 훑어봤고, 이제 코드를 보면서 제대로 이해를 해봐야겠다.

 

https://www.aclweb.org/anthology/P18-1183/

 

Stock Movement Prediction from Tweets and Historical Prices

Yumo Xu, Shay B. Cohen. Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2018.

www.aclweb.org

https://github.com/yumoxu/stocknet-code

 

yumoxu/stocknet-code

Code for stock movement prediction from tweets and historical stock prices. - yumoxu/stocknet-code

github.com

 

728x90