Estacionaridade em Séries temporais e sua implicação no Mercado de Ações

Estacionaridade em Séries temporais e sua implicação no Mercado de Ações

Em meus estudos, tenho me aprofundado em conceitos fundamentais de séries temporais, essenciais para análises financeiras robustas. Um dos conceitos-chave é a estacionaridade dos dados.


O que é estacionaridade?


Uma série temporal é dita estacionária se suas propriedades estatísticas, como média e variância, não mudarem ao longo do tempo. Em termos simples, uma série temporal estacionária tem um comportamento previsível e não apresenta tendências ou sazonalidades.


Tipos de estacionaridade


  1. Estacionaridade Fraca


  • Média Constante: A média da série é a mesma ao longo do tempo
  • Variância Constate: A variância da série é finita e constante ao longo do tempo
  • Autocovariância Constante: A autocovariância entre dois períodos depende apenas da diferença entre eles (defasagem) não do tempo absoluto


2. Estacionaridade Estrita:


  • A distribuição conjunta de quaisquer subconjuntos da série temporal é a mesma, independentemente do tempo em que são considerados


Por que a estacionáridade é importante?


A estacionaridade é crucial para modelagem de séries temporais porque muitos modelos estatísticos como ARIMA e GARCH assumem que as séries temporais são estacionárias. Modelos preditivos funcionam melhor com séries estacionárias, pois suas propriedades estatísticas são constantes ao longo do tempo, tornando as previsões mais confiáveis.


Aplicações ao mercado


No mercado de ações, os preços frequentemente exibem comportamentos não estacionários devido a tendencias de longo prazo e volatilidade variável. Entretanto, ao modelar retornos de ações (a diferença percentual no preço de fechamento de um dia para outro), podemos frequentemente transformar a série em estacionária


Exemplo em python


Vamos criar uma série temporal com dados sínteticos e verificar sua estacionaridade e transformá-la em uma série estacionária. Para isso vamos utilizar o código a seguir:


import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller

# Gerando uma série temporal não estacionária com tendência
np.random.seed(42)
n = 1000
time = np.arange(n)
trend = 0.05 * time
y_non_stationary = trend + np.random.normal(0, 1, n)

# Plotando a série temporal não estacionária
plt.figure(figsize=(12, 6))
plt.plot(time, y_non_stationary, label='Série Não Estacionária')
plt.title('Série Temporal com Tendência')
plt.xlabel('Tempo')
plt.ylabel('Valor')
plt.legend()
plt.show()

# Testando a estacionaridade com o teste de Dickey-Fuller aumentado (ADF)
result = adfuller(y_non_stationary)
print(f'Estatística ADF: {result[0]}')
print(f'P-valor: {result[1]}')        

Com isso obtemos o gráfico a seguir:


E também os seguintes dados:

  • Estatística ADF = -0.3521
  • p-valor: 0.9178


O teste ADF é usado para verificar a presença de uma raiz unitária na série temporal. A presença de uma raiz unitária indica que a série temporal não é estacionária


Hipóteses do teste ADF


Hipótese Nula(H0): A série temporal tem uma razi unitária (não é estacionártia).

Hipótese Alternativa (HA): A série temporal não tem um raiz unitária (é estacionária)


Interpretação do p-valor


P-valor Alto(geralmente maior que 0.05): Não rejeitamos a hipótese nula. Isso significa que não temos evidências suficientes para concluir que a série e estácionária. Portanto, aceitamos que a série tem uma raiz unitária e não é estacionária

P-valor Baixo (geralmente menor que 0.05): Rejeitamos a hipótese nula. isso significa que temos evidências suficientes para concluir que a série é estacionária:


Interpretação do p-valor: O valor de 0.9178 é maior que 0.05, o que indica que não rejeitamos a hipótese nula. Portanto, aceitamos que a série tem uma raiz unitária e não é estacionária.

Estatística ADF: A estatística ADF de -0,3521 é maior que os valores críticos para os níveis de significância comuns (por exemplo, -3,42; -2,86;-2,57 para 1%, 5% e 10%, repesctivamente), o que também sugere que não podemos rejeitar a hipótese nula.


Conclusão

Os resultados do teste ADF indicam que a série temporal original não é estacionária. Isso é consistente com a visualização da série temporal, que mostra uma tendência clara ao longo do tempo.


Próximo passo


Para lidarmos com a não estacionáridade, aplicamos a diferenciação, que é uma técnica comum para transformar séries temporais não estacionárias em estacionárias. Após a diferenciação podemos repetir o teste ADF para verificar se a série transformada é estacionária. Para isso usaremos o código a seguir:

y_stationary = np.diff(y_non_stationary)

# Plotando a série temporal estacionária
plt.figure(figsize=(12, 6))
plt.plot(time[1:], y_stationary, label='Série Estacionária')
plt.title('Série Temporal Estacionária (Após Diferenciação)')
plt.xlabel('Tempo')
plt.ylabel('Valor')
plt.legend()
plt.show()

# Testando a estacionaridade novamente com o teste ADF
result = adfuller(y_stationary)
print(f'Estatística ADF: {result[0]}')
print(f'P-valor: {result[1]}')        

Com o código acima obtemos o seguinte gráfico:



E repetindo o teste ADF obtemos os seguintes resultados:


  • Estatística ADF: -11.4863
  • P-valor: 4.855088788145436e-21


Conclusão

P-valor: O p-valor de 4.855088788145436e-21 (aproximadamente 0) é menor que 0.05, o que indica que rejeitamos a hipótese nula. Portanto, temos evidências suficientes para concluir que a série temporal diferenciada é estacionária


Estatísica ADF: A estatística ADF de -11.4863 é menor que os valores críticos para os níveis de significância comuns (por exemplo, -3,43; -2,86;-2.67 para 1%, 5% e 10% respectivamente), o que também sugere que podemos rejeitar a hipótese nula


Ou seja, os resultados do teste ADF para a série temporal diferenciada indicam que a série é estacionária. Isso é consistente com a aplicação da diferenciação que é uma técnica comum para transformar séries temporais não estacionárias em estacionárias como já mencionadado.


Para finalizar


Entender e aplicar o cocneito de estacionaridade é fundamental para análises de séries temporais e previsões financeiras eficazes. Transformar séries não estacionárias em estacionárias permite utilizar modelos preditivos com maior precisão, proporcionando inisghts valiosos no mercado de ações.

Espero que tenham gostado do artigo, pois eu estou realmente adorando estudar esse conteúdo envolvendo o mercado financeiro.

Entre para ver ou adicionar um comentário

Outras pessoas também visualizaram

Conferir tópicos