Bước ngẫu nhiên

Phân tích chuỗi thời gian với Python

Rob Reider

Adjunct Professor, NYU-Courant Consultant, Quantopian

Bước ngẫu nhiên là gì?

  • Giá hôm nay = Giá hôm qua + Nhiễu

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

  • Đồ thị dữ liệu mô phỏng

Phân tích chuỗi thời gian với Python

Bước ngẫu nhiên là gì?

  • Giá hôm nay = Giá hôm qua + Nhiễu

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

  • Mức thay đổi giá là white noise

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

  • Không thể dự báo một bước ngẫu nhiên
  • Dự báo tốt nhất cho giá ngày mai là giá hôm nay
Phân tích chuỗi thời gian với Python

Bước ngẫu nhiên là gì?

  • Giá hôm nay = Giá hôm qua + Nhiễu

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

  • Bước ngẫu nhiên có độ trôi (drift):

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

  • Mức thay đổi giá là white noise với trung bình khác 0:

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

Phân tích chuỗi thời gian với Python

Kiểm định thống kê cho bước ngẫu nhiên

  • Bước ngẫu nhiên có độ trôi

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

  • Kiểm định hồi quy cho bước ngẫu nhiên

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

  • Kiểm định:

$\quad \quad \large H_0: \beta=1$ (bước ngẫu nhiên)

$\quad \quad \large H_1: \beta<1$ (không phải bước ngẫu nhiên)

Phân tích chuỗi thời gian với Python

Kiểm định thống kê cho bước ngẫu nhiên

  • Kiểm định hồi quy cho bước ngẫu nhiên

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

  • Tương đương với

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

  • Kiểm định:

$\quad \quad \large H_0: \beta=0$ (bước ngẫu nhiên)

$\quad \quad \large H_1: \beta<0$ (không phải bước ngẫu nhiên)

Phân tích chuỗi thời gian với Python

Kiểm định thống kê cho bước ngẫu nhiên

  • Kiểm định hồi quy cho bước ngẫu nhiên

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

  • Kiểm định:

$\large \ \ \ \ H_0: \beta=0$ (bước ngẫu nhiên)

$\large \ \ \ \ H_1: \beta<0$ (không phải bước ngẫu nhiên)

  • Kiểm định này gọi là Dickey-Fuller
  • Nếu thêm nhiều sai phân trễ ở vế phải, đó là kiểm định Augmented Dickey-Fuller
Phân tích chuỗi thời gian với Python

Kiểm định ADF trong Python

  • Import module từ statsmodels
    from statsmodels.tsa.stattools import adfuller
    
  • Chạy Augmented Dickey-Test
    adfuller(x)
    
Phân tích chuỗi thời gian với Python

Ví dụ: S&P500 có phải bước ngẫu nhiên?

# 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)
Phân tích chuỗi thời gian với Python

Cùng luyện tập nào!

Phân tích chuỗi thời gian với Python

Preparing Video For Download...