随机游走

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$

  • 价格变动为非零均值白噪声:

$\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检验
  • 若右侧加入更多滞后差分,即为增广 Dickey-Fuller检验
Python 中的时间序列分析

Python 中的 ADF 检验

  • 从 statsmodels 导入模块
    from statsmodels.tsa.stattools import adfuller
    
  • 运行增广 Dickey-Fuller 检验
    adfuller(x)
    
Python 中的时间序列分析

示例:标普500是随机游走吗?

# 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 中的时间序列分析

Passons à la pratique !

Python 中的时间序列分析

Preparing Video For Download...