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:
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:
Recomendados pelo LinkedIn
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
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.
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.