Ergodicidade em séries temporais em modelagem de dados do mercado

Ergodicidade em séries temporais em modelagem de dados do mercado


No decorrer dos meus estudos em modelagem de dados econômicos, consegui aprofundar um pouco no conceito de ergodicidade e neste artigo, quero compartilhar alguns insights e exemplos que me ajudaram a compreender melhor esse conceito


O que é ergodicidade?


Ergodicidade é um conceito que, em termos simples, relaciona as médias temporais de uma série temporal com as médias de conjunto de diferentes realizações do processo. Em outras palavras, se uma série temporal é ergódica, podemos usar uma única realização dessa série para inferir as propriedades estatísticas do processo completo. Isso é especialmente útil em finanças, onde frequentemente temos apenas uma única realização da série temporal de preços de um ativo.


Diferença entre Ergodicidade e estacionaridade


Antes de mergulhar nos exemplos, é importante distinguir entre ergodicidade e estacionaridade, dois conceitos que eu confundi no começo e não quero que vocês cometam esse erro:


  • Estacionaridade: Um processo é estacionário se suas propriedades estatísticas, como a média e a variância, não mudam ao longo do tempo. Isso significa que o processo tem uma distribuição de probabilidae constante ao longo do tempo
  • Ergodicidade: Um processo é ergódico se as médias temporais convergem para as médias de conjunto. Isso significa que uma única realização da série temporal é suficiente para representar as propriedades estatísticas do processo.


Vale ressaltar que nem todos os processos ergódicos são estacionários e vice-versa. Um exemplo clássico de um processo ergódico, mas não estacioário, é o passeio com drift.



Passeio aleatório com drift


O passeio aleatório com drift é um processo no qual o valor da série em cada ponto no tempo é a soma do valor anterior, um termo constante (drift), e um termo de ruído branco. Vamos ilustrar com o código a seguir:

import numpy as np
import matplotlib.pyplot as plt

# Parâmetros
T = 1000  # Número total de pontos temporais
mu = 0.1  # Drift
sigma = 1 # Desvio padrão do ruído branco

# Gerar série temporal de passeio aleatório com drift
np.random.seed(42)  # Para reprodutibilidade
epsilon = np.random.normal(0, sigma, T)
y = np.zeros(T)
y[0] = 0  # Valor inicial

for t in range(1, T):
    y[t] = y[t-1] + mu + epsilon[t]

# Calcular a média temporal e a média de conjunto
mean_temporal = np.mean(y)
mean_theoretical = mu

# Dividir a série em janelas e calcular a média e variância de cada janela
window_size = 100
num_windows = T // window_size
window_means = [np.mean(y[i*window_size:(i+1)*window_size]) for i in range(num_windows)]
window_variances = [np.var(y[i*window_size:(i+1)*window_size]) for i in range(num_windows)]

# Comparar médias e variâncias
print(f"Média Total da Série: {mean_temporal}")
print(f"Média Teórica: {mean_theoretical}")
print(f"Médias das Janelas: {window_means}")
print(f"Variâncias das Janelas: {window_variances}")

# Plotar série temporal, médias e variâncias das janelas
plt.figure(figsize=(15, 5))

plt.subplot(1, 3, 1)
plt.plot(y, label='Série Temporal')
plt.title("Passeio Aleatório com Drift")
plt.xlabel("Tempo")
plt.ylabel("Valor")
plt.legend()

plt.subplot(1, 3, 2)
plt.plot(window_means, label='Médias das Janelas')
plt.axhline(y=mean_theoretical, color='r', linestyle='--', label='Média Teórica')
plt.title("Médias das Janelas vs. Média Teórica")
plt.xlabel("Janela")
plt.ylabel("Média")
plt.legend()

plt.subplot(1, 3, 3)
plt.plot(window_variances, label='Variâncias das Janelas')
plt.title("Variâncias das Janelas")
plt.xlabel("Janela")
plt.ylabel("Variância")
plt.legend()

plt.tight_layout()
plt.show()
        

Com o código que fizemos obtivemos os seguintes gráficos:



Resultados

  1. Série temporal: O gráfico da série temporal mostra uma tendência ascendente, refletindo o drift da variável μ. Isso indica que a série não é estacionária, pois suas propriedades (média e variância) mudam ao longo do tempo.
  2. Médias das janelas: As médias das janelas convergem para o drift μ, indicando que o processo é ergódico. Isso significa que, apesar da não estacionaridade, podemos usar uma única realização da série para inferir a média do processo
  3. Variâncias das janelas: As variâncias das janelas aumentam ao longo do tempo, reforçando a não estacionaridade do processo.


Por que precisamos provar que uma série temporal é ergodica?


Provar que uma série temporal é ergódica é essencial porque muitos métodos de aálise e modelagem de séries temporais pressupõem a ergodicidade para garantir que as estimativas obtidas a patr de uma única realização da série sejam representativas das propriedades do processo subjacente. Em outras palavras, a ergodicidade assegura que as médias temporais convergem para as médias do conjunto.



Modelos que pressupõem Ergodicidades


Diversos modelos de séries temporais e técnicas de inferência partem do pressuposto de ergodicidade. Aqui estão alguns exemplo de modelos.


  1. Modelos ARIMA: Os modelos ARIMA são amplamente utilizados para previsão e análise de séries temporais. Eles pressupõem que a série temoral é estacionária (ou pode ser transformada em estacionária através da diferenciação) e ergódica. A ergodicidade garante que os parâmetros estimados a partir de uma única realização da série sejam representativos do processo gerador.
  2. Modelos GARCH: Utilizados para modelar a volatilidade de séries temporais financeiras, os modelos GARCH pressupõem ergodicidade para assegurar que as variâncias e covariâncias estimadas sejam estáveis e representativas.
  3. Modelos de Processos de Markov: Em processos de MArkov ergódicos, as distribuições de estado estacionário são alcançáveis e independentes do estado inicial. Isso é crucial para muitas aplicações em finanças, economia e teoria de filas
  4. Modelos de Cadeia de Markov Ocultas (HMM): HMM são utilizados em várias áreas, incluindo finanças e biologia, para modelar processos onde o estado subjacente não é diretamente observável. A ergodicidade assegura que a distribuição de estados estimada seja representativa do processo subjacente.
  5. Testes de raiz unitária como o Testes como o Dickey-Fuller aumentados (ADF) e o KPSS são usados para verificar a estacionaridade de uma série temporal. A ergodicidade é pressuposta para garantir que as estatísticas do teste sejam válidas e representativas.


Conclusão

Provar que uma série temporal é ergódica é crucial para garantir a validade das inferências estatísticas feitas a partir de um única realização da série. Modelos como ARIMA, GARCH, processos de Markov e HMMs pressupóem a ergodicidade para que possamos assegurar que as previsões feitas sejam representativas do processo subjacente. Ao demonstrar a ergodicidade de uma série, asseguramos que nossas análises e modelos são confiáveis e robustos.

Entre para ver ou adicionar um comentário

Outros artigos de Thiago Benevides

Outras pessoas também visualizaram

Conferir tópicos