News on stocks : spike detection

이향기·2021년 9월 29일
0
post-thumbnail

Many news = Issue ?

  • News 빈도의 변화로 종목별 이슈 현황을 알아낼 수 있을까?

  • 삼성전자(A005930) / 2020.09.15(화) 11:00 / 18개의 기사
  • #갤럭시워치3 #초소형이미지센서


Time series spike detection

Outlier? Spike?

  • xtx_t is defined as an outlieroutlier if

    xtx^tτ|x_t - \hat{x}_t| \ge \tau

    where τ\tau is a predefiend threshold, xtx_t is observed value and x^t\hat{x}_t is its expected value.

  • What is Spike?
    - 기존 데이터의 변동성이 (상대적으로) 작은 데이터에서
    - 양의 방향으로의 Outlier
    - spike, peak, ...

What is spike?

  • train set의 counts보다 test point의 counts가 월등히 높은 수준을 보이면
  • train set의 counts로 추정된 분포에서, test point(보다 큰 값)가 출현할 확률이 확연히 낮으면

이를 spike라고 정의한다. 즉,

P(Xxtλ^)<αP(X \ge x_t|\hat{\lambda}) < \alpha

이면, 해당 점 xtx_t를 spike라고 정의한다.

  • P(Xλ)P(X|\lambda) : Poisson distribution
  • λ^\hat{\lambda} : train set으로부터 추정된 parameter λ\lambda
  • α\alpha : 유의수준(significance level)

How to detect?

Parameters

  • window size : train set의 크기
  • significance level : 가설검정의 유의수준, "test point의 출현 확률이 낮다"를 정의할 cutoff

Hypothesis testing

1. Poisson

P(X=x)=eλλxx!,x=0,1,2,...P(X=x) = e^{-\lambda}\frac{\lambda^{x}}{x!}, \quad x=0,1,2,...

2. ZIP (Zero Inflated Poisson)

  • Generalizes the Poisson model by allowing for an overabundance of zero observations
  • π\pi : the proportion of excess zero observations
  • A weighted coin with probability π\pi of landing on heads is flipped
    - If the result is heads, the observation is zero.
    - If the result is tails, the observation is generated from a Poisson distribution with mean λ\lambda.
P(X=0)=π+(1π)eλP(X=x)=(1π)eλλxx!,x>0\begin{aligned} P(X=0) &= \pi+(1-\pi)e^{-\lambda} \\ P(X=x) &= (1-\pi)e^{-\lambda}\frac{\lambda^{x}}{x!},\quad x>0 \end{aligned}

cf. CDF of ZIP

P(Xx)=P(X=0)+P(1Xx)=P(X=0)+t=1xP(X=t)=π+(1π)eλ+t=1x(1π)eλλtt!=π+(1π)eλ+(1π)(t=0xeλλtt!eλ)=π+(1π)eλ(1π)eλ+(1π)t=0xeλλtt!=π+(1π)t=0xeλλtt!\begin{aligned} P(X\le x) &= P(X=0) + P(1 \le X \le x) \\ &= P(X=0) + \sum_{t=1}^{x}P(X=t) \\ &= \pi + (1-\pi)e^{-\lambda} + \sum_{t=1}^{x} (1-\pi)e^{-\lambda}\frac{\lambda^t}{t!} \\ &= \pi + (1-\pi)e^{-\lambda} + (1-\pi) \left(\sum_{t=0}^{x} e^{-\lambda}\frac{\lambda^t}{t!} - e^{-\lambda}\right) \\ &= \pi + (1-\pi)e^{-\lambda} - (1-\pi)e^{-\lambda} + (1 - \pi)\sum_{t=0}^{x} e^{-\lambda}\frac{\lambda^t}{t!} \\ &= \pi + (1 - \pi) \sum_{t=0}^{x} e^{-\lambda}\frac{\lambda^t}{t!} \end{aligned}
import math

def zip_cdf(x, pi, lambda_):
   if x == 0:
       return pi + (1 - pi) * math.pow(math.e, -lambda_)
   else:
       return pi + (1 - pi) * stats.poisson.cdf(x, lambda_)

Poisson vs. ZIP

  • Train set
  • Case study
    -삼성전자(A005930)
    -2020-10-07 14:05:00, 2 Counts
PoissonZIP
Time intervalUnequally spacedEqually spaced
Window typeDynamicStatic
Window size30120
Nonzero counts in train set307
λ^\hat{\lambda}1.60.215
π^\hat{\pi}0.223
p-value0.2170.001

  • Poisson > Zero Inflated Poisson
PoissonZIP
모수 추정평균 계산수치 최적화 필요
안정성좋음좋지 않음*
결과의 적절성적절 (α=0.01\alpha = 0.01)민감

cf. * MLE in ZIP!


Results

Data description

  • News title data
    - 수집된 신문기사 Title(Headline) 데이터

  • Filtering rule
    - 잘못된 데이터 형식 제외
    - 공시 신문사 제외
    - 종목 코드가 달려있는 기사만 포함
    - 2020, 2021년도 기사만 포함

  • News count data
    - 기간 : 2020.01 ~ 2021.09 (약 21개월)
    - 시총기준 상위 10종목
    - 각 종목별로, 1분 간격으로 news의 빈도를 count

Spike의 정의

1) Poisson분포에 의해 Train set보다 월등히 높은 수준의 Count를 보인 Test set일 것
2) 적어도 2개 이상의 언론사에서 동시에 기사를 냈을 것

Spike 빈도

  • 셀 값 : Spike의 갯수 (Detect된 spike들의 기사 갯수의 평균값)
유의수준0.050.010.0050.0010.0005
삼성전자486(5.3)236(7.7)193(8.5)159(9.3)146(9.7)
SK하이닉스42(3.8)11(5.5)9(5.9)7(6.3)6(6.5)
네이버25(3.6)10(4.4)9(4.4)4(5)0(-)
삼성바이오로직스6(3.3)1(5)1(5)1(5)0(-)
카카오17(3.7)5(5.4)4(5.8)3(6.3)3(6.3)
LG화학25(4.7)15(5.8)14(5.9)9(7)6(8)
삼성SDI15(3.7)6(4.7)4(5)1(8)1(8)
현대자동차102(3.8)34(5.5)27(5.9)18(6.8)10(8.2)
셀트리온17(3.8)5(5.6)5(5.6)3(6.7)2(7.5)
기아23(3.9)5(7)5(7)3(9)3(9)
  • 유의수준 0.01 에서 Spike의 분포

Spike 평가 지표

평가항목내용
내용 일관성Spike내 기사들이 동질적으로 구성되어 있나?
내용 타당성Spike내 Topic이 실제 Issue가 될 만한 사항들인가?

종목별 Spike 분포

1) 삼성전자 (236 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
1OO
2OO
3OO
4OO
5OO

2) 에스케이하이닉스 (11 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
11392020.09.1110:007내수활성화를 위해 협력사 구매대금 조기지급OO
24942020.10.0611:007세계최초 DDR5 D램 출시OO
37922020.10.2115:006장애인 고용을 위한 제과제빵 공장 만듦O
47972020.10.2115:204장애인 고용을 위한 제과제빵 공장 만듦O
59272020.11.0408:4253분기 매출/영업이익 발표OO
615322020.12.0711:006업계 최고증 176단 낸드 개발OO
718712020.12.3116:304이천사업장에 코로나 선별진료소 운영O
822722021.01.2909:124코스피, 특징주, 낸드플래시 양산X
929462021.03.0209:176신고가 달성OO
1040242021.05.1315:007K-반도체 전략/벨트 설립OO
1140252021.05.1315:305파운드리 2배 확대OO

3) 네이버 (10 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
112022020.11.2321:004소상공인 디지털 전환 [커넥트2021]OO
217152020.12.3011:004순매수 상위, 비즈어드바이저, 동영상 품질XO
319022021.01.1514:005모바일 국가자격증 확인O
419692021.01.2010:305네이버 인증서, 모바일 학생증O
532802021.03.1808:304애널리스트데이로 목표가 상승 조정OO
638432021.04.2908:1041분기 매출/영업이익OO
742162021.05.2614:005초대규모 AI 하이퍼클로바 출시OO
847932021.06.2413:004네이버 웹툰-왓패드 스튜디오 통합OO
950422021.07.0814:004네이버앱 백신접종 간편인증O
1055872021.08.0514:105백신접종 간편예약 지원O

4) 삼성바이오로직스 (1 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
15632020.11.1812:205정부 바이오헬스 투자(3), 삼바 제4공장 착수(2)O

5) 카카오 (5 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
1472020.09.0312:006카카오톡 운전면허 확인 서비스 도입O
2912020.09.0713:306안산에 데이터센터 설립OO
324712021.02.0908:1044Q 영업이익/한해 영업이익OO
435002021.04.1509:104액면분할로 급등(VI)OO
559262021.08.1911:007신입 개발자 블라인드 채용 진행OO

6) LG화학 (15 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
13512020.09.1717:454LG에너지솔루션 신공장/구광모 미래사업 준비/현재가/개미-외인XO
28252020.10.1208:2843분기 매출/영업이익OO
312152020.10.2512:004지배구조자문위, LG화학 물적분할 찬성OO
421282020.12.1311:004LG화학, 중국 배터리소재 공장 재생에너지로 돌린다OO
525522021.01.2011:005LG화학 신학철, 다보스어젠다에서 기후변화대응 발표O
626112021.01.2715:3952020년 영업이익/매출액 및 2021년 목표액 발표OO
726252021.01.2715:584LG화학 역대 최대 매출/배당 결정OO
833272021.03.2310:305LG화학, 화장품 용기 플라스틱 100% 재활용 시스템 구축OO
938232021.04.3011:004LG에너지솔루션-롯데렌탈, 전기차 BaaS 사업 협력OO
1038352021.05.0211:006LG화학, 첨단소재 인력 대규모 채용OO
1144152021.07.0712:007신한은행, LG화학과 중소기업 ESG 1000억 펀드 조성OO
1244642021.07.1411:0012LG화학 차기 사업 방향 및 투자 규모 발표OO
1345102021.07.1811:007LG화학, 하반기에도 배터리 소재 대규모 인재 채용 나서OO
1447832021.08.1911:407LG화학, 고부가 친환경 소재 투자OO
1549542021.09.0210:309LG화학, 단석산업과 차세대 바이오 오일 합작공장 설립OO

7) 삼성SDI (6 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
11682020.10.2713:0643분기 영업이익/매출(3), 소폭상승 및 반등(1)O
24532020.12.0711:004무역의 날, 30억불 수출의 탑 수상OO
35492021.01.0410:008전영현 사장 신년사O
47052021.01.2813:1744분기 영업이익/매출OO
57082021.01.2813:2144분기 영업이익/매출OO
615162021.07.0114:304창립 51주년O

8) 현대자동차 (34 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
1OO
2OO
3OO
4OO
5OO

9) 셀트리온 (5 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
17852020.11.1812:208송도에 3공장 건설(6), 삼바/셀트리온 지원(2)O
217102021.01.1815:104코로나19 치료제(렉키로나주) 추가 검증 필요OO
320302021.02.0517:017코로나19 치료제(렉키로나주) 조건부 허가/승인OO
420952021.02.0817:304서정진 회장, 코로나19 치료제 언급OO
522712021.02.2215:5554분기 영업이익(4), 공급계약 체결(1)O

10) 기아 (5 Spikes)

NoIndex날짜시간Counts내용내용 일관성내용 타당성
116922021.01.0619:0010새 로고 공개, 브랜드 전략 개편OO
232302021.03.3017:008전기차 EV6 최초 공개OO
332312021.03.3017:014전기차 EV6 최초 공개OO
435532021.04.2216:1151분기 영업이익/매출OO
540832021.06.0308:309EV6/EV6 GT 최초 실물 공개OO

To do

  • 삼성전자의 경우, Spike가 과도하게 많은 상황 (작은 이슈도 쉽게 뉴스화되는 경향이 있음)
    - 좀 더 엄격한 유의수준 적용 (e.g.α=0.0005\alpha=0.0005)
    - 추가 데이터 (e.g. 사용자 로그 등)를 활용하여 Logic 보완
  • Spike 발생 후, xx분 내 (e.g. x=30x=30)에는 알람 금지 logic 추가
  • 시총 상위 10종목 외에 다른 종목에도 적용
  • 다른 Spike detection 알고리즘 Search
  • n-gram (n=2) 접근

References

profile
Data science & Machine learning, baking and reading(≪,≫)

0개의 댓글