隨機漫步

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 \ \ = \ \mu \ + \ P_{t-1} \ \ + \quad \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 檢定
    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...