Séries Temporais e a Evolução da Modelagem de Sequências
Analisar uma série temporal é, em essência, uma forma de “modelagem de sequências”. O objetivo é entender os padrões em dados ordenados no tempo para prever o que virá a seguir, e os diferentes tipos de modelos criados ao longo da história da análise de séries temporais até o dias atuais é extensivo.
Entre alguns deles, temos:
- Modelos Clássicos (Ex: ARIMA): Eficazes para séries com padrões lineares e estacionários, mas limitados ao capturar relações mais complexas e não-lineares.
- Redes Neurais Recorrentes (Ex: RNNs): Introduziram o conceito de “memória”, processando sequências passo a passo e mantendo um estado interno. No entanto, sofriam para reter informações de longo prazo, um problema conhecido como gradiente descendente.
- LSTMs e GRUs: Variações das RNNs com “portões” (gates) que controlam o fluxo de informação, melhorando a capacidade de aprender dependências de longo prazo. Apesar do grande avanço, elas ainda processam os dados de forma sequencial, o que pode ser um gargalo computacional.
É neste ponto que os Transformers surgem, quebrando o paradigma do processamento sequencial e introduzindo uma forma mais poderosa de “lembrar” o passado: a atenção.
* Caso deseje aprender mais sobre o que é Transformers, veja esse post.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
Transformers em Séries Temporais: Como é Possível?
A transição dos Transformers do texto para as séries temporais é conceitualmente direta. Em NLP, um Transformer trata cada palavra (ou “token”) em uma frase como uma unidade. Em uma série temporal, cada observação (ex: o valor diário do câmbio) é tratada como um “token”.
A sequência de valores ao longo do tempo se torna uma “frase”, e o Transformer aprende a gramática e o contexto dessa “frase” temporal.
# Exemplo simbólico: sequência temporal como "frases"
# Cada valor é um "token" que o Transformer analisa em relação aos outros.
serie_juros = [12.50, 12.75, 13.25, 13.75, 13.75, 13.25, 12.75]
# O Transformer pode aprender que a primeira ocorrência de 12.75,
# mesmo distante, é um forte indicador para a ocorrência futura de 13.25,
# ignorando os valores intermediários se não forem relevantes.
Adaptar uma arquitetura de texto para números ordenados no tempo parece um salto, mas a analogia é direta: uma série temporal é tratada como uma frase, onde cada observação é uma palavra.
No entanto, essa adaptação traz desafios, vantagens e desvantagens.
Os Desafios e as Soluções
- Problema: Falta de Noção de Ordem. Como mencionado, o self-attention é invariante à permutação.
- Solução: O Positional Encoding é crucial. Ele injeta a informação temporal diretamente nos dados de entrada, permitindo que o modelo aprenda a importância da ordem.
- Problema: Complexidade Quadrática. O self-attention compara cada ponto com todos os outros. Para uma série com
Npontos, isso exigeN²cálculos. Para séries temporais muito longas (milhares ou milhões de pontos), isso se torna computacionalmente inviável.- Solução: Pesquisas recentes criaram variações mais eficientes, como o Informer e o LogSparse Transformer, que usam mecanismos de atenção “esparsos”, focando apenas nos pontos mais relevantes e reduzindo drasticamente a complexidade.
- Problema: Dados Contínuos vs. Discretos. Texto é formado por tokens discretos (palavras). Séries temporais são contínuas.
- Solução: Tratamos cada ponto de observação como um token discreto e o transformamos em um embedding, permitindo que o modelo opere sobre eles da mesma forma que faria com palavras.
Vantagens
- Captura de Dependências de Longo Prazo: Esta é a maior vantagem sobre LSTMs. Um Transformer pode, teoricamente, conectar um evento de hoje (ex: uma queda na bolsa) a uma crise financeira ocorrida há vários anos, simplesmente porque o mecanismo de atenção pode criar uma ligação direta entre esses dois pontos no tempo, sem que a informação se degrade ao longo do caminho.
- Paralelização: Ao contrário das RNNs, que precisam processar os dados sequencialmente, o Transformer processa a série inteira de uma vez. Isso o torna muito mais rápido para treinar em hardware moderno (GPUs/TPUs).
- Interpretabilidade: Os mapas de atenção podem ser visualizados, permitindo entender em quais pontos do passado o modelo está “prestando mais atenção” para fazer uma previsão, o que ajuda a abrir a “caixa-preta”.
Desvantagens
- Exigência de Dados: Transformers são modelos grandes com milhões de parâmetros. Eles precisam de grandes volumes de dados para serem treinados de forma eficaz e evitar o superajuste (overfitting).
- Complexidade (fora da caixa): Como mencionado, a complexidade quadrática torna o Transformer “vanilla” inadequado para séries temporais muito longas. É necessário recorrer a variantes mais complexas e recentes.
- Menos “Viés Indutivo” para o Tempo: RNNs são construídas com a premissa de sequencialidade. Transformers não têm essa premissa e dependem inteiramente do Positional Encoding para aprender a ordem. Em conjuntos de dados menores, essa falta de um viés estrutural pode levar a um desempenho inferior.
Darts
Darts é uma biblioteca Python de código aberto projetada para tornar a previsão e análise de séries temporais mais acessível e eficiente. Desenvolvida pela Unit8, ela oferece uma API consistente e simples, semelhante à do scikit-learn, que permite aos usuários aplicar uma vasta gama de modelos de previsão, desde os clássicos como ARIMA e Suavização Exponencial até modelos avançados de aprendizado profundo como LSTMs, N-BEATS e Transformers.
Principais Características:
- API Unificada: A principal vantagem do Darts é sua interface
fit()epredict()padronizada para todos os modelos, o que simplifica a experimentação e a comparação entre diferentes abordagens. - Suporte Amplo: Lida tanto com séries temporais univariadas quanto multivariadas e oferece suporte a previsões probabilísticas para quantificar a incerteza.
- Backtesting e Avaliação: Inclui ferramentas robustas para backtesting de modelos, permitindo simular previsões históricas em janelas de tempo móveis e avaliar a performance com diversas métricas.
- Integração: É compatível com estruturas de dados populares como Pandas DataFrames, NumPy arrays e PyTorch Tensors, facilitando a manipulação e o pré-processamento dos dados.
1. Instalação e Carregamento
Primeiro, vamos instalar a biblioteca. Você pode fazer isso com um simples comando pip. Depois de instalar, vamos importá-la para o nosso código.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
2. Criando Dados para Séries Temporais
A Darts trabalha com um objeto especial chamado TimeSeries. Ele é otimizado para manipulação de dados temporais. Vamos criar uma série temporal simples do zero para ver como funciona.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
3. Exemplo Mínimo de Previsão
Agora que temos uma série temporal, vamos fazer uma previsão. Usaremos um modelo simples e clássico chamado ExponentialSmoothing (Suavização Exponencial).
O processo é sempre o mesmo, não importa o modelo: 1. Dividir os dados em treino e teste. 2. Criar uma instância do modelo. 3. Treinar o modelo com os dados de treino (fit()). 4. Fazer a previsão (predict()).
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.

4. Previsão com Transformer
Vamos agora realizar a previsão da mesma série através do módulo Transformer.
Modelos de redes neurais, como o Transformer, funcionam muito melhor quando os dados estão em uma escala semelhante, geralmente entre 0 e 1. Isso ajuda o modelo a aprender mais rápido e de forma mais estável. Vamos começar normalizando nossos dados de treino e validação.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
Configurando o Modelo Transformer
Vamos treinar uma arquitetura Transformer. Embora ela tenha muitos parâmetros, vamos ajustar alguns dos mais importantes para séries temporais com apenas uma variável:
- d_model: A dimensionalidade interna do modelo. O padrão é 512, um valor muito alto para uma série simples. Reduzimos para um valor menor, como 16, para evitar que o modelo se torne complexo demais.
- nhead: O número de “cabeças” no mecanismo de atenção múltipla. Aumentar este número permite que o modelo foque em diferentes padrões nos dados ao mesmo tempo.
O objetivo é realizar uma previsão de um passo à frente no tempo.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
Avaliando o Modelo na Validação
Agora, vamos analisar as previsões no conjunto de validação. Para facilitar a visualização, vamos criar uma função que plota os dados reais, a previsão e o erro MAPE (Erro Percentual Absoluto Médio).
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
Primeiro, vamos usar o modelo “atual”, ou seja, o modelo ao final do procedimento de treinamento:
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.

No entanto, é uma prática comum usar o modelo que teve o melhor desempenho no conjunto de validação durante o treinamento, e não necessariamente o último. A Darts salva este “melhor modelo” automaticamente para nós.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.

Teste Robusto com Backtesting
Uma forma ainda mais robusta de avaliar um modelo é através do backtesting. A ideia é simular o uso do modelo no passado. Ele faz uma previsão para alguns passos, avança no tempo, faz outra previsão, e assim por diante, em todo o conjunto de dados.
Vamos fazer um backtest do nosso modelo para avaliar seu desempenho com um horizonte de previsão de 6 meses.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
Finalmente, calculamos o erro (MAPE) do backtest. Note que precisamos reverter a normalização (inverse_transform) para que o erro seja calculado na escala original dos dados, tornando-o interpretável.
📩 IA aplicada a problema econômico, todo dia
Este exercício é um recorte. No Boletim AM eu mostro IA generativa aplicada à economia, mercado financeiro e análise de dados — com caso real, custo de rodar e a ressalva onde ela existe.
Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.
MAPE: 11.02%
Conclusão
Os Transformers representam uma mudança de paradigma na análise de séries temporais. Sua capacidade de capturar dependências complexas de longo prazo e a flexibilidade de sua arquitetura os tornam uma ferramenta indispensável para lidar com a complexidade dos dados do mundo real. Com o surgimento de bibliotecas acessíveis, a aplicação desses modelos poderosos está cada vez mais ao alcance de cientistas de dados e analistas financeiros.
Quer aprender mais?
Conheça nossa Formação do Zero à Análise de Dados Econômicos e Financeiros usando Python e Inteligência Artificial. Aprenda do ZERO a coletar, tratar, construir modelos e apresentar dados econômicos e financeiros com o uso de Python e IA.
Referências
- AHMED, Sabeen; NIELSEN, Ian E.; TRIPATHI, Aakash; SIDDIQUI, Shamoon; RAMACHANDRAN, Ravi P.; RASOOL, Ghulam. Transformers in Time-Series Analysis: A Tutorial. Circuits, Systems, and Signal Processing, v. 42, n. 12, p. 7433-7466, 2023. Disponível em: https://researchwithrowan.com.
- ALAMMAR, Jay; GROOTENDORST, Maarten. Hands-On Large Language Models: Language Understanding and Generation. Sebastopol: O’Reilly Media, 2024.
- VASWANI, Ashish et al. Attention is All You Need. In: Advances in Neural Information Processing Systems (NIPS), 2017. Disponível em: https://deeprevision.github.io/posts/001-transformer.
- UNIT8 SA. Darts - Quickstart Guide. Disponível em: https://unit8co.github.io/darts/quickstart/00-quickstart.html#Export-a-TimeSeries


