Random Walk

การวิเคราะห์อนุกรมเวลาด้วย Python

Rob Reider

Adjunct Professor, NYU-Courant Consultant, Quantopian

Random Walk คืออะไร?

  • ราคาวันนี้ = ราคาเมื่อวาน + Noise

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

  • กราฟของข้อมูลจำลอง

การวิเคราะห์อนุกรมเวลาด้วย Python

Random Walk คืออะไร?

  • ราคาวันนี้ = ราคาเมื่อวาน + Noise

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

  • การเปลี่ยนแปลงของราคาคือ white noise

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

  • ไม่สามารถพยากรณ์ random walk ได้
  • การพยากรณ์ราคาพรุ่งนี้ที่ดีที่สุดคือราคาวันนี้
การวิเคราะห์อนุกรมเวลาด้วย Python

Random Walk คืออะไร?

  • ราคาวันนี้ = ราคาเมื่อวาน + Noise

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

  • Random walk แบบมี drift:

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

  • การเปลี่ยนแปลงของราคาคือ white noise ที่มีค่าเฉลี่ยไม่เป็นศูนย์:

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

การวิเคราะห์อนุกรมเวลาด้วย Python

การทดสอบทางสถิติสำหรับ Random Walk

  • Random walk แบบมี drift

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

  • การทดสอบด้วย regression สำหรับ random walk

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

  • การทดสอบ:

$\quad \quad \large H_0: \beta=1$ (random walk)

$\quad \quad \large H_1: \beta<1$ (ไม่ใช่ random walk)

การวิเคราะห์อนุกรมเวลาด้วย Python

การทดสอบทางสถิติสำหรับ Random Walk

  • การทดสอบด้วย regression สำหรับ random walk

$\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$ (random walk)

$\quad \quad \large H_1: \beta<0$ (ไม่ใช่ random walk)

การวิเคราะห์อนุกรมเวลาด้วย Python

การทดสอบทางสถิติสำหรับ Random Walk

  • การทดสอบด้วย regression สำหรับ random walk

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

  • การทดสอบ:

$\large \ \ \ \ H_0: \beta=0$ (random walk)

$\large \ \ \ \ H_1: \beta<0$ (ไม่ใช่ random walk)

  • การทดสอบนี้เรียกว่า Dickey-Fuller test
  • หากเพิ่มค่าผลต่างที่ lag มากขึ้นทางด้านขวา จะเรียกว่า Augmented Dickey-Fuller test
การวิเคราะห์อนุกรมเวลาด้วย Python

ADF Test ใน Python

  • นำเข้าโมดูลจาก statsmodels
    from statsmodels.tsa.stattools import adfuller
    
  • รัน Augmented Dickey-Fuller Test
    adfuller(x)
    
การวิเคราะห์อนุกรมเวลาด้วย Python

ตัวอย่าง: S&P500 เป็น Random Walk หรือไม่?

# 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...