Випадкове блукання

Аналіз часових рядів у 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$ (не випадкове блукання)

  • Цей тест називається Дікі—Фуллера
  • Якщо додати більше лагових змін праворуч, це розширений тест Дікі—Фуллера
Аналіз часових рядів у Python

ADF-тест у Python

  • Імпортуйте модуль зі statsmodels
    from statsmodels.tsa.stattools import adfuller
    
  • Запустіть розширений тест Дікі—Фуллера
    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...