Random Walk

Análise de séries temporais em Python

Rob Reider

Adjunct Professor, NYU-Courant Consultant, Quantopian

O que é um Random Walk?

  • Preço de hoje = Preço de ontem + ruído

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

  • Gráfico de dados simulados

Análise de séries temporais em Python

O que é um Random Walk?

  • Preço de hoje = Preço de ontem + ruído

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

  • A variação do preço é ruído branco

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

  • Não dá para prever um random walk
  • A melhor previsão para amanhã é o preço de hoje
Análise de séries temporais em Python

O que é um Random Walk?

  • Preço de hoje = Preço de ontem + ruído

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

  • Random walk com tendência (drift):

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

  • A variação do preço é ruído branco com média diferente de zero:

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

Análise de séries temporais em Python

Teste estatístico para Random Walk

  • Random walk com tendência

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

  • Teste de regressão para random walk

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

  • Teste:

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

$\quad \quad \large H_1: \beta<1$ (não é random walk)

Análise de séries temporais em Python

Teste estatístico para Random Walk

  • Teste de regressão para random walk

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

  • Equivalente a

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

  • Teste:

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

$\quad \quad \large H_1: \beta<0$ (não é random walk)

Análise de séries temporais em Python

Teste estatístico para Random Walk

  • Teste de regressão para random walk

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

  • Teste:

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

$\large \ \ \ \ H_1: \beta<0$ (não é random walk)

  • Esse teste é chamado de Dickey-Fuller
  • Se você adicionar mais defasagens da variação no lado direito, vira o teste Dickey-Fuller Aumentado
Análise de séries temporais em Python

Teste ADF em Python

  • Importar módulo do statsmodels
    from statsmodels.tsa.stattools import adfuller
    
  • Executar o teste Dickey-Fuller Aumentado
    adfuller(x)
    
Análise de séries temporais em Python

Exemplo: o S&P500 é um 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)
Análise de séries temporais em Python

Vamos praticar!

Análise de séries temporais em Python

Preparing Video For Download...