랜덤 워크

Python으로 배우는 시계열 분석

Rob Reider

Adjunct Professor, NYU-Courant Consultant, Quantopian

랜덤 워크란 무엇인가?

  • 오늘의 가격 = 어제의 가격 + 노이즈

$\large \quad \quad \ P_t \quad \ \ = \quad P_{t-1} \quad \quad \ + \ \ \epsilon_t$

  • 시뮬레이션 데이터 플롯

Python으로 배우는 시계열 분석

랜덤 워크란 무엇인가?

  • 오늘의 가격 = 어제의 가격 + 노이즈

$\large \quad \quad \ P_t \quad \ \ = \quad P_{t-1} \quad \quad \ + \ \ \epsilon_t$

  • 가격 변화는 백색 잡음

$\large \quad \quad P_t - P_{t-1} \quad \ \ = \quad \ \ \epsilon_t$

  • 랜덤 워크는 예측 불가
  • 내일 가격의 최선 예측값은 오늘의 가격
Python으로 배우는 시계열 분석

랜덤 워크란 무엇인가?

  • 오늘의 가격 = 어제의 가격 + 노이즈

$\large \quad \quad \ P_t \quad \ \ = \quad P_{t-1} \quad \quad \ + \ \ \epsilon_t$

  • 드리프트가 있는 랜덤 워크:

$\large \quad \quad \ P_t \quad \ \ = \ \mu \ + \ P_{t-1} \ \ + \quad \epsilon_t$

  • 가격 변화는 평균이 0이 아닌 백색 잡음:

$\large \quad \quad P_t - P_{t-1} \ \ = \ \mu \ \ + \ \ \epsilon_t$

Python으로 배우는 시계열 분석

랜덤 워크의 통계적 검정

  • 드리프트가 있는 랜덤 워크

$\large \quad \quad P_t \quad \ \ = \ \mu \ \ + \ \ P_{t-1} \quad \ + \ \ \epsilon_t$

  • 랜덤 워크에 대한 회귀 검정

$\large \quad \quad P_t \quad \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \ \ + \ \ \epsilon_t$

  • 검정:

$\quad \quad \large H_0: \beta=1$ (랜덤 워크)

$\quad \quad \large H_1: \beta<1$ (랜덤 워크 아님)

Python으로 배우는 시계열 분석

랜덤 워크의 통계적 검정

  • 랜덤 워크에 대한 회귀 검정

$\large \quad \quad \quad \quad P_t \quad \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \quad \ + \ \ \epsilon_t$

  • 아래와 동치

$\large \quad \quad P_t - P_{t-1} \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \ \ + \ \ \epsilon_t$

  • 검정:

$\quad \quad \large H_0: \beta=0$ (랜덤 워크)

$\quad \quad \large H_1: \beta<0$ (랜덤 워크 아님)

Python으로 배우는 시계열 분석

랜덤 워크의 통계적 검정

  • 랜덤 워크에 대한 회귀 검정

$\large \quad \quad P_t - P_{t-1} \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \ \ + \ \ \epsilon_t$

  • 검정:

$\large \ \ \ \ H_0: \beta=0$ (랜덤 워크)

$\large \ \ \ \ H_1: \beta<0$ (랜덤 워크 아님)

  • 이 검정을 Dickey-Fuller 검정이라 합니다
  • 우변에 시차 변화를 추가하면 Augmented Dickey-Fuller 검정입니다
Python으로 배우는 시계열 분석

Python에서 ADF 검정

  • statsmodels에서 모듈 임포트
    from statsmodels.tsa.stattools import adfuller
    
  • Augmented Dickey-Fuller 검정 실행
    adfuller(x)
    
Python으로 배우는 시계열 분석

예시: S&P500은 랜덤 워크인가?

# Run Augmented Dickey-Fuller Test on SPX data
results = adfuller(df['SPX'])
# Print p-value
print(results[1])
0.782253808587
# Print full results
print(results)
(-0.91720490331127869,
 0.78225380858668414,
 0,
 1257,
 {'1%': -3.4355629707955395,
  '10%': -2.567995644141416,
  '5%': -2.8638420633876671},
 10161.888789598503)
Python으로 배우는 시계열 분석

연습해 봅시다!

Python으로 배우는 시계열 분석

Preparing Video For Download...