Logotipo UFPB
Autores
Afiliação

Natan Henrique Alves

Universidade Federal da Paraíba

Prof. Sinézio Fernandes Maia

Data de Publicação

8 de julho de 2025

Código
setwd("C:/Users/gaabo/OneDrive/Área de Trabalho/Natan_Econometrial")
rm(list=ls())
options(scipen=999999)
options(max.print = 100000)

library(tidyverse)
library(fBasics)
library(rbcb)
library(deflateBR)
library(moments)
library(zoo)        
library(scales) 
library(quantmod)
library(readxl)
library(blscrapeR)
library(mFilter)
library(knitr)


adiciona_mandatos_ts <- function(ymax = NULL, rotulos = TRUE, cex = 0.8, y_pos_ratio = 0.9) {
  # Datas dos mandatos (sem 2003)
  datas <- c(2007 + 0/12,
             2011 + 0/12,
             2015 + 0/12,
             2016 + 7/12,  # agosto
             2019 + 0/12,
             2023 + 0/12)

  nomes <- c("Lula", "Lula", "Dilma", "Dilma", "Temer", "Bolsonaro", "Lula")
  cores <- c("red", "red", "red", "red", "darkblue", "darkgreen", "red")

  # Linhas verticais
  abline(v = datas, col = "cyan3", lty = 2)

  # Adiciona rótulos, se solicitado
  if (rotulos) {
    if (is.null(ymax)) {
      usr <- par("usr")
      ymax <- usr[4]
    }

    y_label <- ymax * y_pos_ratio  # controla a altura dos nomes

    inicio <- c(2003 + 0/12, datas)  # inclui 2003 apenas para posicionar o 1º nome

    for (i in 1:(length(inicio) - 1)) {
      meio <- (inicio[i] + inicio[i + 1]) / 2
      text(x = meio, y = y_label, labels = nomes[i], col = cores[i], cex = cex)
    }

    # Último nome (2023–...)
    text(x = datas[length(datas)] + 1, y = y_label,
         labels = nomes[length(nomes)], col = cores[length(cores)], cex = cex)
  }
}

1. Introdução

A política econômica brasileira é um tema central para economistas, exigindo o uso de instrumentos analíticos adequados para sua compreensão. A econometria destaca-se como uma ferramenta amplamente utilizada para analisar diferentes contextos das políticas econômicas no Brasil. Segundo Barbosa (2021), entre 2003 e 2016, os governos do PT podem ser divididos em duas fases distintas do ponto de vista econômico. Na primeira, adotou-se uma estratégia de economia social de mercado. Já na segunda, a partir do segundo mandato do ex-presidente Lula, o PT passou a seguir um modelo de neopopulismo latino-americano, inspirado em figuras como Hugo Chávez e no “Socialismo Bolivariano”. Esse modelo foi marcado pela indisciplina macroeconômica, resultando na desorganização das finanças públicas.

A partir de 2019, com o início do governo Bolsonaro, o Brasil enfrentou uma crise sanitária que agravou os desafios econômicos, em especial a crise fiscal já existente. Segundo Barbosa (2021), a crise fiscal pode ser compreendida como resultado do embate entre três grupos: oportunistas, neopopulistas e progressistas. Bolsonaro, por conveniência, aliou-se a Paulo Guedes, sem necessariamente compartilhar os princípios da economia social de mercado, sendo historicamente caracterizado como um oportunista. Atualmente, com a volta de Lula para um terceiro mandato, os problemas fiscais persistem, e a postura adotada pelo governo se assemelha àquela observada na segunda fase do governo do PT, conforme descrito anteriormente.

1.2 Objetivo

Este relatório tem como objetivo realizar uma análise econométrica de séries temporais, com foco no estudo do comportamento de duas variáveis macroeconômicas: a taxa básica de juros brasileira (SELIC) e a taxa de câmbio. A análise abrange o período de 2003 a 2025, com o propósito acadêmico de consolidar os conteúdos aprendidos em sala de aula e aplicar métodos econométricos a variáveis reais. O estudo busca compreender o comportamento temporal dessas séries em diferentes cenários da história econômica brasileira. O intervalo de tempo selecionado visa capturar diversos contextos econômicos do Brasil, permitindo uma avaliação robusta das dinâmicas das variáveis em distintos períodos. Este será o primeiro de uma série de relatórios com o mesmo objetivo.

2. Metodologia

2.1 Variáveis Utilizadas

SELIC

A taxa Selic (Sistema Especial de Liquidação e Custódia) foi instituída no Brasil em 1979, pelo Banco Central, com a criação do sistema Selic para gerenciar títulos públicos federais. Inicialmente, servia como referência para as operações no mercado de títulos públicos. A partir de 1986, com a criação do Comitê de Política Monetária (Copom), a Selic passou a ser usada como a taxa básica de juros da economia brasileira, tornando-se o principal instrumento de política monetária para controlar a inflação e estabilizar a economia.

A taxa Selic tem como objetivo principal regular a política monetária do Brasil, influenciando o nível de atividade econômica e controlando a inflação. Por meio de ajustes na Selic, o Banco Central regula a liquidez no mercado financeiro, impactando o custo do crédito, o consumo, o investimento e, consequentemente, a inflação. A taxa serve como referência para outras taxas de juros no mercado, como as de empréstimos e financiamentos, além de orientar o rendimento de aplicações financeiras, como a poupança.

A taxa Selic é definida pelo Copom, em reuniões realizadas a cada 45 dias (aproximadamente oito por ano). O comitê analisa indicadores econômicos, como inflação, ciclo econômico, taxa de câmbio, contas públicas e cenário internacional, para determinar a Selic Meta, que é a taxa-alvo usada como referência para a política monetária. A Selic Over, por outro lado, é a taxa efetiva praticada nas operações de títulos públicos no mercado overnight. O Banco Central utiliza operações de mercado aberto (compra e venda de títulos públicos) para manter a Selic efetiva próxima à meta estabelecida. As decisões do Copom são comunicadas publicamente, com atas detalhando os motivos e projeções econômicas.

CÂMBIO

A taxa de câmbio no Brasil, especialmente em relação ao dólar norte-americano, tem uma história marcada por diferentes regimes cambiais. Até 1994, o Brasil operava sob regimes de câmbio fixo, com intervenções frequentes do governo para estabilizar a moeda. Com o Plano Real, em 1994, foi adotado um regime de bandas cambiais, que evoluiu para o câmbio flutuante em 1999, sob o regime de metas de inflação. Desde então, a taxa de câmbio é determinada majoritariamente pelo mercado, com intervenções pontuais do Banco Central para reduzir volatilidade ou enfrentar crises externas. O período de 2003 a 2025, foco deste estudo, engloba momentos de apreciação e depreciação do real, influenciados por fatores como crises globais, políticas monetárias e fluxos de capitais.

A taxa de câmbio tem como objetivo principal refletir o equilíbrio entre oferta e demanda de moedas estrangeiras no mercado, funcionando como um indicador da competitividade externa da economia brasileira. Ela influencia diretamente o comércio internacional, afetando exportações e importações, além de impactar a inflação por meio dos preços de bens importados e insumos. O Banco Central busca, por meio de intervenções esporádicas (como swaps cambiais ou leilões de dólares), mitigar oscilações excessivas, garantindo estabilidade econômica sem comprometer o regime de câmbio flutuante.

No regime de câmbio flutuante, a taxa de câmbio é determinada pelas forças de mercado, com base na oferta e demanda por moedas estrangeiras, influenciadas por fatores como balança comercial, fluxos de investimento estrangeiro, taxa de juros (incluindo a Selic) e condições econômicas globais. O Banco Central do Brasil monitora o mercado cambial e pode intervir por meio de operações como venda ou compra de reservas internacionais ou swaps cambiais, especialmente em momentos de alta volatilidade. As cotações da taxa de câmbio, como o dólar comercial, são divulgadas diariamente pelo Banco Central, com base nas negociações no mercado interbancário, e servem como referência para contratos e transações econômicas.

2.2 Estatística Descritiva

A abodagem metodológica que será utilizada é fundamentalmente estatística, com coleta, testes e avaliação dos testes pelo grau de significãncia.

Histograma : Uma ferramenta gráfica usada em estatística para avaliar a distribuição de frequência de um conjunto de dados.

Forma da Distribuição: A forma do histograma pode indicar se os dados são simétricos, se há assimetria ou se seguem algum padrão específico, como uma distribuição normal, distribuição assimétrica, entre outros.

Distribuição Normal:Também conhecida como distribuição gaussiana, é uma das principais distribuições de probabilidade em estatística, caracterizada por sua curva simétrica em forma de sino, centrada na média e com dispersão determinada pelo desvio padrão. Ela é amplamente utilizada em econometria e análise de séries temporais devido à sua propriedade de modelar variáveis que tendem a se concentrar em torno de um valor central, como erros em modelos de regressão ou variáveis macroeconômicas em grandes amostras. A distribuição normal é definida por dois parâmetros: a média (μ), que indica o centro da distribuição, e o desvio padrão (σ), que mede a dispersão dos dados. Sua relevância no estudo de variáveis como a taxa Selic e a taxa de câmbio, no contexto do período de 2003 a 2025, reside na capacidade de descrever comportamentos estocásticos e embasar testes estatísticos, como os de significância em modelos econométricos. Podemos representar a curva de distribuição normal pela seguinte expressão:

\[f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{\frac{-(x-\mu)^2}{2\sigma^2}}\]

Código
# Definindo a semente para reprodutibilidade
set.seed(123)

# Gerando uma série fictícia com distribuição normal
serie_normal <- rnorm(100, mean = 50, sd = 10)

# Histograma com densidade
hist(serie_normal, probability = TRUE, 
     col = "lightblue", main = "Histograma com Curva Normal")

# Adicionando a curva normal
curve(dnorm(x, mean = 50, sd = 10), 
      col = "red", lwd = 2, add = TRUE)

Centralização e Dispersão: Através do histograma, é possível ter uma ideia da localização central dos dados (média, mediana) e da dispersão ou variabilidade dos valores.

O método de Sturges é uma técnica utilizada para determinar o número ideal de classes (ou bins) ao criar um histograma.

Formula pra calcular o número de classes:

\(K = 1 + log_2(n)\)

  • Mínimo valor da amostra

  • Máximo valor da amostra

  • Média aritimética \[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i\]

  • Mediana

    • A mediana é o valor que separa a amostra pela metade.
  • Desvio Padrão

    • Indica o quanto os valores de um conjunto de dados estão dispersos em relação à média desses valores.

\[ s = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2} \]

  • Coeficiênte de variação

    • É uma medida estatística que expressa a variabilidade relativa de um conjunto de dados em relação à média, normalmente expresso em termos percentuais.

\[ CV = \frac{s}{\bar{x}} \times 100\%\]

  • Taxa de crescimento linear

    • A taxa de crescimento linear é uma medida que representa a mudança constante em uma determinada quantidade ao longo do tempo.

\[Txl = (\frac{ultima.obs}{primeira.obs}-1)*100\]

  • Taxa de crescimento composta

    • A taxa composta leva em conta não apenas o valor inicial, mas também o acúmulo de juros ou ganhos sobre os ganhos anteriores, o que resulta em um crescimento exponencial ao longo do tempo.

\[Txc=(\frac{ultima.obs}{primeira.obs})^{1/n}*100\]

Deflacionando a série

O processo de deflação é usado para ajustar os valores monetarios de uma série, de forma que estes representem seu poder de compra real levando em consideração um dado nível de preços escolhido.

  • valor Real :

\[Real=(\frac{Nominal}{ídice})*100\]

Selic Real

Além da taxa de juros nominal também foi feita uma analise da taxa de juros real, onde a deflação da taxa de juros foi feito com base na seguinte formula:

\[SelicR = \frac{(1+selic)}{(1+IPCA)} \]

Câmbio Real

Assim como os juros, também foi calculado o cambio real a partir da seguinte definição :

\[E = e*(\frac{IPA^*}{IPA})\]

Onde, \(IPA^*\) representa o índice de preços do atacado no Brasil, indice calculado pea FGV, e o \(IPA\) é o índice de atacado norte americano.

Indicadores de Normalidade da distribuição

  • Teste de JarqueBera
    • O teste de Jarque-Bera é um teste estatístico usado para determinar se uma amostra de dados tem uma distribuição simétrica e se os dados seguem uma distribuição normal.
    • Hipotese nula: Os dados seguem distribuição normal.
  • Teste de Shapiro
    • Tambem é um teste de normalidade da amostra.
    • Hipotese nula: Os dados seguem distribuição normal.
    • Esse teste pode ser melhor utilizado para séries com poucas observações.
  • QQnorm
    • Também é um teste de normalidade, mas aqui será projetada uma distribuição de referencia, para que os dados observados possam ser comparados a ela.
  • BoxPlot
    • É uma representação visual que fornece uma visão geral da distribuição dos dados e identifica valores discrepantes.
    • A caixa central representa o intervalo entre o primeiro quartil (Q1) e o terceiro quartil (Q3). A linha dentro da caixa indica a mediana (Q2), que é o valor que divide os dados ao meio.

Decomposição da série

A partir de uma determinada série temporal é possivel retirar outras diversas informações, essas informações são extraidas através de um processo de decomposição da série. * A decomposição da série nos dará as seguintes informações:

  • Tendência (T)
  • Cíclo (C)
  • Sazonalidade (S)
  • random (E)

A decomposição de uma série pode ser feita de diversas formas :

  • Aditiva

\[Y_t = T_t + S_t + E_t\]

  • Multiplicativa

\[Y_t = T_t * S_t * E_t\]

  • Filtro de Hodrick Prescott

\[\sum_{t=1}^{T}(y_t - \tau_t)^2 + \lambda \sum_{t=2}^{T-1}[(\tau_{t+1} - \tau_t) - (\tau_t - \tau_{t-1})]^2\] O parâmtro lambda representa o nível de suavização da série, quanto maior ele for mais suave será nossa tendência.

Neste estuda será dado preferência a decomposição feita pelo Filtro HP, por ser este o método mais comumente utilizado, onde temos uma facilidade de aplicação e boa visualização de tendencia e cíclo.

Base de Dados

A taxa Selic nominal foi obtida por meio da API do pacote rbcb do R, com dados coletados mensalmente entre janeiro de 2003 e maio de 2025, totalizando 269 observações. A partir desses dados, foram elaborados o gráfico da série histórica e o histograma da distribuição. A mesma abordagem foi aplicada à taxa de câmbio nominal, obtida por meio da API do pacote quantmod, que acessa dados do Federal Reserve Economic Data (FRED). Posteriormente, as duas séries foram ajustadas para eliminar o efeito da inflação, utilizando as técnicas de deflação descritas anteriormente. Para calcular a taxa de inflação do câmbio real, utilizou-se o IPCA, enquanto, para o câmbio real, foram empregados o IPA (FGV) e o PPI (FRED). Além disso, foi necessário calcular os respectivos índices acumulados para essas duas últimas séries de inflação.

3. Resultados

3.1 Taxa Selic

No início do governo Lula, a política monetária manteve-se contracionista, mas, com a queda da inflação, aproximou-se gradualmente da taxa natural. Durante a crise financeira de 2007-2008, o Banco Central do Brasil (Bacen), sob a gestão de Henrique Meirelles, adotou uma política monetária expansionista, com a taxa de juros real abaixo da taxa natural. Em vez de reverter essa abordagem após a superação da crise, o Bacen manteve a política expansionista. Segundo Barbosa (2021), o ciclo político foi um dos principais fatores responsáveis por essa postura. A partir desse ponto, a política monetária tornou-se ainda mais expansionista, desrespeitando o protocolo do regime de metas de inflação.

Entre 2011 e 2012, o governo Dilma implementou a Nova Matriz Econômica, uma nova política econômica que combinava a redução da taxa de juros na política monetária com aumento dos gastos públicos, concessão de subsídios e intervenção nos preços de produtos derivados do petróleo e da eletricidade na política fiscal. Com o impeachemet de da ex-presidente Dilma, o então presidente Temer reverte a política economica e adota uma postura contracionista na política monetaria, além de ajustes nas contas públicas.

A política monetária durante o governo Bolsonaro pode ser dividida em duas fases distintas. Inicialmente, adotou-se uma abordagem expansionista, com a redução da taxa Selic ao patamar histórico de 2% ao ano, visando estimular a economia durante a pandemia de Covid-19. Contudo, essa política, combinada ao aumento dos gastos públicos e à ausência de uma âncora fiscal clara, resultou em crescentes pressões inflacionárias. Como resposta, o Banco Central, que obteve autonomia formal em 2021, reverteu a tendência, promovendo sucessivos aumentos na taxa de juros até alcançar 13,75% ao ano em 2022, na tentativa de controlar a inflação que havia superado a meta estabelecida.

No governo atual, o Banco Central, inicialmente sob o comando de Roberto Campos Neto, manteve uma política monetária contracionista, com a taxa de juros elevada. Com a transição para Gabriel Galípolo, essa postura foi preservada, sustentando a manutenção de juros altos para conter as pressões inflacionárias.

Selic Nominal

Código
selic1 <- read_excel("selic.xlsx")
selic <- ts(selic1$`Selic - Ac. 12 meses (%a.a)`, frequency = 12, start = c(2003,01), end = c(2025,05))

# Cálculos estatísticos
maximo <- max(selic)
minimo <- min(selic)
assime <- skewness(selic)
curtos <- kurtosis(selic)
media <- mean(selic)
desvio <- sd(selic)
coef.v <- sd(selic)/mean(selic)*100

resumo <- c(Curtose = curtos, 
            Assimetria = assime,
            Media = media,
            Desvio_P = desvio,
            Coeficiente_var = coef.v,
            Maximo = maximo,
            Minimo = minimo
)

# Teste de normalidade
normalidade1 <- jarqueberaTest(selic)
normalidade <- c(
  Estatistica_JB = normalidade1@test$statistic,
  Valor_p = normalidade1@test$p.value
)

# Taxas de crescimento
nselic <- length(selic)
txlinear <- ((selic[nselic]/selic[1])-1)*100
txlinear2 <- ((selic[nselic]/selic[1])-1)/nselic*100
txcompost <- ((selic[nselic]/selic[1])^(1/nselic)-1)*100

taxas_crescimento <- c(Ponta_Ponta = txlinear,
                       Linear_Media = txlinear2,
                       Taxa_Composta = txcompost)

# Junta tudo em um vetor nomeado
tabela_completa <- c(resumo, normalidade, taxas_crescimento)

# Transforma em data frame vertical
tabela_final <- data.frame(
  Indicador = names(tabela_completa),
  Valor = as.numeric(tabela_completa),
  row.names = NULL
)

# Visualizar

kable(tabela_final, caption = "Tabela 1")
Tabela 1
Indicador Valor
Curtose 4.0773420
Assimetria 0.5251947
Media 11.4517472
Desvio_P 4.7191123
Coeficiente_var 41.2086666
Maximo 26.3200000
Minimo 1.9000000
Estatistica_JB.X-squared 25.3754840
Valor_p.Asymptotic p Value 0.0000031
Ponta_Ponta -41.9393456
Linear_Media -0.1559083
Taxa_Composta -0.2019081
Código
# Gráfico de linha (Série temporal)
plot(selic, type = "l", col = "navy", lwd = 2,
     main = "Selic Nominal", xlab = "Tempo", ylab = "Taxa (%)")
adiciona_mandatos_ts()

Código
par(mfrow = c(1, 3), mar = c(4, 4, 2, 1))  # margens ajustadas

# Define layout personalizado
layout(matrix(c(1, 2,
                0, 3), nrow = 2, byrow = TRUE), heights = c(2, 1))

# Ajuste de margens
par(mar = c(4, 4, 2, 1))

# 1: QQNorm
qqnorm(selic, col = "navy", main = "QQ Plot da Selic")
qqline(selic, col = "red")

# 2: Histograma
hist(selic, breaks = "Sturges", probability = TRUE,
     col = "lightblue", main = "Histograma da Selic", xlab = "Taxa (%)")

# 3: Boxplot (abaixo do histograma)
boxplot(selic, horizontal = TRUE, col = "lightblue", 
        main = "", xlab = "")

Código
# Reset layout
layout(1)

Visualmente, o histograma indica uma distribuição aproximadamente simétrica. No entanto, o boxplot evidencia uma assimetria positiva, o que é confirmado pela diferença entre a média (11,45%) e a mediana (11,22%), sendo a média mais sensível à presença de outliers. Os testes estatísticos reforçam essa observação, apontando uma assimetria positiva (S = 0,52) e uma distribuição leptocúrtica (K = 4,07), ou seja, mais concentrada em torno da média, com caudas mais pesadas do que a distribuição normal. Por fim, a tendência de queda da Selic ao longo do período é confirmada pelas taxas de “crescimento” calculadas, todas apresentando valores negativos. Tendo isso posto, é esperado que esta série não tenha distribuição normal e isso é comprovado pelo texte de Jarquebera (p-v = 0,00).

Selic Real

Código
ipca1 <- read_excel("ipca.xlsx")
ipca <- ts(ipca1$`IPCA - 12 meses (%a.m.)`, frequency = 12, start = c(2003,01), end = c(2025,05))
selic_R <- ((1+(selic/100))/(1+ipca/100))-1

# Cálculos estatísticos
maximo <- max(selic_R)
minimo <- min(selic_R)
assime <- skewness(selic_R)
curtos <- kurtosis(selic_R)
media <- mean(selic_R)
desvio <- sd(selic_R)
coef.v <- sd(selic_R)/mean(selic_R)*100

resumo <- c(Curtose = curtos, 
            Assimetria = assime,
            Media = media,
            Desvio_P = desvio,
            Coeficiente_var = coef.v,
            Maximo = maximo,
            Minimo = minimo
)

# Teste de normalidade
normalidade1 <- jarqueberaTest(selic_R)
normalidade <- c(
  Estatistica_JB = normalidade1@test$statistic,
  Valor_p = normalidade1@test$p.value
)

# Taxas de crescimento
nselic <- length(selic_R)
txlinear <- ((selic_R[nselic]/selic_R[1])-1)*100
txlinear2 <- ((selic_R[nselic]/selic_R[1])-1)/nselic*100
txcompost <- ((selic_R[nselic]/selic_R[1])^(1/nselic)-1)*100

taxas_crescimento <- c(Ponta_Ponta = txlinear,
                       Linear_Media = txlinear2,
                       Taxa_Composta = txcompost)

# Junta tudo em um vetor nomeado
tabela_completa <- c(resumo, normalidade, taxas_crescimento)

# Transforma em data frame vertical
tabela_final <- data.frame(
  Indicador = names(tabela_completa),
  Valor = as.numeric(tabela_completa),
  row.names = NULL
)

# Visualizar
kable(tabela_final, caption = "Tabela 2")
Tabela 2
Indicador Valor
Curtose 3.1210449
Assimetria -0.3519231
Media 0.0504237
Desvio_P 0.0359261
Coeficiente_var 71.2484583
Maximo 0.1295039
Minimo -0.0444077
Estatistica_JB.X-squared 5.7168266
Valor_p.Asymptotic p Value 0.0573597
Ponta_Ponta -5.2702103
Linear_Media -0.0195919
Taxa_Composta -0.0201250
Código
# Hpfilter
selic.hp <- hpfilter(na.omit(selic_R, type = "Lambda", freq = 14400))
selic.ht <- selic.hp$cycle
Código
# Gráfico de linha (Série temporal)
plot(selic_R, type = "l", col = "navy", lwd = 2,
     main = "Selic Real", xlab = "Tempo", ylab = "Taxa (%)")
adiciona_mandatos_ts()

Código
par(mfrow = c(1, 3), mar = c(4, 4, 2, 1))  # margens ajustadas
# Define layout personalizado
layout(matrix(c(1, 2,
                0, 3), nrow = 2, byrow = TRUE), heights = c(2, 1))

# Ajuste de margens
par(mar = c(4, 4, 2, 1))

# 1: QQNorm
qqnorm(selic_R, col = "navy", main = "QQ Plot da Selic Real")
qqline(selic_R, col = "red")

# 2: Histograma
hist(selic_R, breaks = "Sturges", probability = TRUE,
     col = "lightblue", main = "Histograma da Selic Real", xlab = "Taxa (%)")

# 3: Boxplot (abaixo do histograma)
boxplot(selic_R, horizontal = TRUE, col = "lightblue", 
        main = "", xlab = "")

Código
# Reset layout
layout(1)

O gráfico da série histórica mostra uma forte queda no início do período, mas, assim como observado na taxa Selic nominal, a partir de 2020 ocorre uma inversão da tendência, com a taxa voltando a subir. No entanto, nesta série, o componente de tendência é menos evidente do que na versão nominal. O histograma apresenta uma aparência quase simétrica, mas com uma leve assimetria negativa, o que já a diferencia visualmente da série nominal, que indicava assimetria positiva. O boxplot confirma essa impressão inicial, entretanto, ao analisarmos os valores centrais, observa-se que a mediana foi de 4,86% e a média de 5,04%, o que sugere uma assimetria positiva — mais alinhada ao comportamento da série nominal. A curtose foi estimada em K = 3,12, valor muito próximo ao de uma distribuição mesocúrtica, que é esperada em distribuições normais. Já a assimetria negativa (S = -0,35) confirma a leve distorção identificada visualmente no histograma. O teste de normalidade de Jarque-Bera indicou normalidade da série ao nível de significância de 5%, validando a hipótese de que a distribuição dos dados segue, aproximadamente, uma normal.Por fim, as taxas de crescimento, especialmente a ponta a ponta, foram consideravelmente menores em comparação com os resultados obtidos na série nominal, sugerindo um comportamento mais estável da taxa real de juros ao longo do tempo.

Código
par(mfrow=c(1,1))
plot(selic.ht, main = "Ciclo com HP filter - Selic Real",col = "navy", lwd = 2); abline(h =0)
adiciona_mandatos_ts()

O método de decomposição de Hodrick-Prescott (HP) foi aplicado apenas às variáveis reais, de forma a minimizar o efeito dos preços. Trata-se de um método comumente utilizado na análise do PIB real, com o objetivo de extrair o componente cíclico da economia. Aqui, o filtro HP é utilizado com fins didáticos; ainda assim, é possível obter informações relevantes a partir dessa decomposição, como a reação do Banco Central em determinados contextos.

Dessa forma, torna-se viável avaliar o comportamento da autoridade monetária em momentos específicos, como durante a pandemia, quando os juros reais foram reduzidos, refletindo uma política de estímulo à atividade econômica, considerando o cenário da época. Outro momento importante — ainda em curso — é o pós-pandemia, no qual os juros reais foram elevados, indicando uma postura contracionista do Banco Central.

3.2 Taxa de Câmbio

No início do governo Lula, a política cambial foi marcada por um regime de câmbio flutuante com intervenções pontuais do Banco Central para evitar excessiva volatilidade. A estabilidade macroeconômica e o aumento dos preços das commodities contribuíram para a apreciação do real, o que favoreceu o controle da inflação e a redução do risco-país. Durante a crise financeira de 2007-2008, o Banco Central adotou medidas para conter a desvalorização do real, utilizando as reservas internacionais acumuladas. Após a crise, no entanto, o governo passou a intervir de forma mais intensa no mercado cambial, com objetivo de conter a valorização da moeda e favorecer a indústria nacional. Segundo Barbosa (2021), essas intervenções, associadas a políticas fiscais expansionistas, distorceram os sinais do mercado e comprometeram a eficiência do regime de câmbio flutuante.

Entre 2011 e 2014, no contexto da Nova Matriz Econômica do governo Dilma, a política cambial foi utilizada como instrumento para promover competitividade industrial via desvalorização do real. O Banco Central passou a atuar de forma mais ativa no mercado de derivativos cambiais e adotou um discurso intervencionista, o que gerou incertezas entre os agentes econômicos e contribuiu para a fuga de capitais. A desvalorização cambial, acabou alimentando pressões inflacionárias e deteriorando a confiança no regime macroeconômico. Com o impeachment da ex-presidente Dilma Rousseff, o governo Temer adotou uma postura mais ortodoxa, com menor intervenção cambial e compromisso com o ajuste fiscal.

Durante o governo Bolsonaro, a política cambial seguiu formalmente o regime de câmbio flutuante, mas enfrentou forte volatilidade. A combinação de instabilidade política, incerteza fiscal, pandemia de Covid-19 e juros reais historicamente baixos pressionou o real, que sofreu uma forte depreciação em 2020. Mesmo com elevados volumes de reservas internacionais, o Banco Central atuou de forma pontual, respeitando o câmbio flutuante, embora críticas tenham surgido sobre a passividade da autoridade monetária diante da volatilidade excessiva. A partir de 2021, com a elevação da taxa Selic e o retorno do diferencial de juros em relação a outras economias, o real começou a se estabilizar, ainda que em patamar depreciado em relação ao pré-pandemia.

No governo atual, sob a presidência de Roberto Campos Neto e, posteriormente, com a crescente influência de Gabriel Galípolo no Banco Central, a postura foi de cautela, priorizando o foco na política monetária. A valorização do real ao longo de 2023 e 2024 esteve ligada à entrada de capital estrangeiro, melhora das contas externas e expectativa de consolidação fiscal, embora a percepção de risco político continue a exercer influência sobre o câmbio.

Câmbio Nominal

O gráfico da série histórica revela uma clara tendência de alta ao longo do período analisado. O histograma reforça essa percepção, ao indicar, visualmente, uma forte assimetria positiva na distribuição dos dados. A mediana da série foi de 2,94, enquanto a média atingiu 3,23, sugerindo novamente a presença de assimetria. Os testes estatísticos confirmam essa característica: assimetria positiva (S = 0,57) e distribuição platicúrtica (K = 1,97), ou seja, com menor concentração em torno da média e caudas mais leves do que uma distribuição normal. Como era de se esperar, a série não segue uma distribuição normal. As taxas de crescimento também corroboram a tendência de alta observada visualmente. Além disso, o valor absoluto da taxa de crescimento ponta a ponta foi maior para o câmbio do que para a Selic, evidenciando uma variação mais acentuada na taxa de câmbio ao longo do período.

Código
cambio1 <- read_excel("cambio.xlsx")
cambio <- ts(cambio1$`Taxa de Câmbio`, frequency = 12, start = c(2003,01), end = c(2025,05))

# Cálculos estatísticos
maximo <- max(selic)
minimo <- min(selic)
assime <- skewness(cambio)
curtos <- kurtosis(cambio)
media <- mean(cambio)
desvio <- sd(cambio)
coef.v <- sd(cambio)/mean(cambio)*100

resumo <- c(Curtose = curtos, 
            Assimetria = assime,
            Media = media,
            Desvio_P = desvio,
            Coeficiente_var = coef.v,
            Maximo = maximo,
            Minimo = minimo
)

# Teste de normalidade
normalidade1 <- jarqueberaTest(cambio)
normalidade <- c(
  Estatistica_JB = normalidade1@test$statistic,
  Valor_p = normalidade1@test$p.value
)

# Taxas de crescimento
ncambio <- length(cambio)
txlinear <- ((cambio[ncambio]/cambio[1])-1)*100
txlinear2 <- ((cambio[ncambio]/cambio[1])-1)/ncambio*100
txcompost <- ((cambio[ncambio]/cambio[1])^(1/ncambio)-1)*100

taxas_crescimento <- c(Ponta_Ponta = txlinear,
                       Linear_Media = txlinear2,
                       Taxa_Composta = txcompost)

# Junta tudo em um vetor nomeado
tabela_completa <- c(resumo, normalidade, taxas_crescimento)

# Transforma em data frame vertical
tabela_final <- data.frame(
  Indicador = names(tabela_completa),
  Valor = as.numeric(tabela_completa),
  row.names = NULL
)

# Visualizar
kable(tabela_final, caption = "Tabela 3")
Tabela 3
Indicador Valor
Curtose 1.9720510
Assimetria 0.5785800
Media 3.2355368
Desvio_P 1.3439511
Coeficiente_var 41.5371916
Maximo 26.3200000
Minimo 1.9000000
Estatistica_JB.X-squared 26.8517859
Valor_p.Asymptotic p Value 0.0000015
Ponta_Ponta 61.9319149
Linear_Media 0.2302302
Taxa_Composta 0.1793449
Código
# Gráfico de linha (Série temporal)
plot(cambio, type = "l", col = "navy", lwd = 2,
     main = "Câmbio Nominal", xlab = "Tempo", ylab = "Taxa (%)")
adiciona_mandatos_ts()

Código
par(mfrow = c(1, 3), mar = c(4, 4, 2, 1))  # margens ajustadas
# Define layout personalizado
layout(matrix(c(1, 2,
                0, 3), nrow = 2, byrow = TRUE), heights = c(2, 1))

# Ajuste de margens
par(mar = c(4, 4, 2, 1))

# 1: QQNorm
qqnorm(cambio, col = "navy", main = "QQ Plot do Câmbio Nominal")
qqline(cambio, col = "red")

# 2: Histograma
hist(cambio, breaks = "Sturges", probability = TRUE,
     col = "lightblue", main = "Histograma do Câmbio Nominal", xlab = "Taxa (%)")

# 3: Boxplot (abaixo do histograma)
boxplot(cambio, horizontal = TRUE, col = "lightblue", 
        main = "", xlab = "")

Código
# Reset layout
layout(1)

Câmbio Real

Com o câmbio real calculado, foi plotada sua série histórica, que exibiu um comportamento semelhante ao do câmbio nominal, caracterizado por uma forte tendência de alta. A análise do histograma revelou uma assimetria positiva acentuada, confirmada pelo boxplot. A média superior à mediana reforça essa assimetria positiva. Os testes estatísticos indicaram uma série platicúrtica com assimetria positiva, apresentando valores de curtose (K) de 3,02 e de assimetria (S) de 0,40. A taxa de variação “ponta a ponta” do câmbio real foi a terceira mais elevada entre as variáveis analisadas, registrando uma redução de -28,80%. A série temporal pode ser dividida em duas fases distintas. Entre 2003 e 2011, o câmbio real apresentou uma queda consistente. A partir de 2012, observa-se uma mudança de tendência, com uma alta sustentada que persiste até o período mais recente deste estudo (maio de 2025).

Código
###################################################
dados <- read_excel("indices_para_cambio_real.xlsx")

ppi <- ts(dados$PPI, frequency = 12, start = c(2003,01), end = c(2025,05))
ipa <- ts(dados$IPA, frequency = 12, start = c(2003,01), end = c(2025,05))
###################################################

cambio_r <- cambio*((ppi)/(ipa))

# Cálculos estatísticos
maximo <- max(cambio_r)
minimo <- min(cambio_r)
assime <- skewness(cambio_r)
curtos <- kurtosis(cambio_r)
media <- mean(cambio_r)
desvio <- sd(cambio_r)
coef.v <- sd(cambio_r)/mean(cambio_r)*100

resumo <- c(Curtose = curtos, 
            Assimetria = assime,
            Media = media,
            Desvio_P = desvio,
            Coeficiente_var = coef.v,
            Maximo = maximo,
            Minimo = minimo
)

# Teste de normalidade
normalidade1 <- jarqueberaTest(cambio_r)
normalidade <- c(
  Estatistica_JB = normalidade1@test$statistic,
  Valor_p = normalidade1@test$p.value
)

# Taxas de crescimento
ncambio <- length(cambio_r)
txlinear <- ((cambio_r[ncambio]/cambio_r[1])-1)*100
txlinear2 <- ((cambio_r[ncambio]/cambio_r[1])-1)/ncambio*100
txcompost <- ((cambio_r[ncambio]/cambio_r[1])^(1/ncambio)-1)*100

taxas_crescimento <- c(Ponta_Ponta = txlinear,
                       Linear_Media = txlinear2,
                       Taxa_Composta = txcompost)

# Junta tudo em um vetor nomeado
tabela_completa <- c(resumo, normalidade, taxas_crescimento)

# Transforma em data frame vertical
tabela_final <- data.frame(
  Indicador = names(tabela_completa),
  Valor = as.numeric(tabela_completa),
  row.names = NULL
)
# Visual
kable(tabela_final, caption = "Tabela 4")
Tabela 4
Indicador Valor
Curtose 3.0216897
Assimetria 0.4031365
Media 2.1255235
Desvio_P 0.4125607
Coeficiente_var 19.4098418
Maximo 3.5421961
Minimo 1.4033017
Estatistica_JB.X-squared 7.2915431
Valor_p.Asymptotic p Value 0.0261013
Ponta_Ponta -28.8022348
Linear_Media -0.1070715
Taxa_Composta -0.1262061
Código
# Hpfilter
cambio.hp <- hpfilter(na.omit(cambio_r, type = "Lambda", freq = 14400))
cambio.ht <- cambio.hp$cycle
Código
# Gráfico de linha (Série temporal)
plot(cambio_r, type = "l", col = "navy", lwd = 2,
     main = "Câmbio Real", xlab = "Tempo", ylab = "Taxa (%)")
adiciona_mandatos_ts()

Código
par(mfrow = c(1, 3), mar = c(4, 4, 2, 1))  # margens ajustadas
# Define layout personalizado
layout(matrix(c(1, 2,
                0, 3), nrow = 2, byrow = TRUE), heights = c(2, 1))

# Ajuste de margens
par(mar = c(4, 4, 2, 1))

# 1: QQNorm
qqnorm(cambio_r, col = "navy", main = "QQ Plot do Câmbio Real")
qqline(cambio_r, col = "red")

# 2: Histograma
hist(cambio_r, breaks = "Sturges", probability = TRUE,
     col = "lightblue", main = "Histograma do Câmbio Real", xlab = "Taxa (%)")

# 3: Boxplot (abaixo do histograma)
boxplot(cambio_r, horizontal = TRUE, col = "lightblue", 
        main = "", xlab = "")

Código
# Reset layout
layout(1)
Código
par(mfrow=c(1,1))
plot(cambio.ht, main = "Ciclo com HP filter - Câmbio Real", col = "navy", lwd = 2); abline(h =0)
adiciona_mandatos_ts()

A decomposição do ciclo do câmbio real por meio do filtro de Hodrick-Prescott (HP) revela informações relevantes sobre o comportamento do dólar. Primeiramente, observa-se uma significativa desvalorização da moeda norte-americana entre 2009 e 2011. No entanto, a partir de 2013, essa tendência se inverte de forma abrupta, com uma acentuada valorização no ciclo cambial.

Segundo De Bolle (2016), esse movimento ocorreu porque, durante a crise de 2008, o Federal Reserve (FED) foi obrigado a injetar liquidez na economia, com o objetivo de mitigar os impactos da crise financeira. Contudo, em meados de 2013, os mercados enfrentaram forte turbulência diante dos indícios de que o FED — o banco central dos Estados Unidos — estaria prestes a anunciar o cronograma para o encerramento dos estímulos monetários. A reação dos investidores foi uma saída sincronizada de capitais de países emergentes, o que contribuiu para o fortalecimento do dólar globalmente, especialmente frente a economias mais vulneráveis.

Adicionalmente, ao observar o gráfico do ciclo da taxa de juros real, percebe-se uma política monetária de caráter expansionista, marcada pela redução das taxas de juros.

4. Previsões

Utilizando as séries econômicas analisadas anteriormente, foram calculadas diversas projeções para cada variável por meio de diferentes métodos. A taxa de crescimento linear gerou as maiores projeções para todas as variáveis, enquanto o método econométrico (MQO) foi o mais conservador, resultando nas menores projeções para cada uma delas. Ao avaliar a proximidade entre os valores projetados e os valores observados, foi possível identificar o método mais preciso para cada variável. Para o câmbio, o método econométrico demonstrou maior consistência, enquanto, para a taxa de juros, o modelo linear apresentou maior proximidade com os valores reais e nominais.

Código
n <- length(selic)

# Previsões com taxas lineares
Selic       <- selic[n]    * (1 + (-0.1559083 ))
Selic_r     <- (selic_R[n]  * (1 + (-0.01959186)))*100
Cambio      <- cambio[n]   * (1 + ( 0.2302302))
CambioR     <- cambio_r[n] * (1 + ( 1.002432))

# Previsões com taxas compostas
Selic_2     <- selic[n]    * (1 + (-0.2019081 ))
Selic_r_2   <- (selic_R[n]  * (1 + (-0.02012499 )))*100
cambio_2    <- cambio[n]   * (1 + (0.1793449 ))
CambioR_2   <- cambio_r[n] * (1 + (0.4872046 ))

# Data frame das previsões lineares e compostas
df <- data.frame(
  Selic_Linear        = Selic,
  Selic_Composta      = Selic_2,
  Selic_R_Linear      = Selic_r,
  Selic_R_Composta    = Selic_r_2,
  Cambio_Linear       = Cambio,
  Cambio_Composta     = cambio_2,
  Cambio_R_Linear     = CambioR,
  Cambio_R_Composta   = CambioR_2
)



# =============================
# PREVISÕES POR MQO (MODELOS LINEARES)
# =============================

# Definição das séries temporais
t  <- seq(1, length(selic))
t1 <- seq(1, length(cambio_r))

# Modelos lineares com log dos dados
Selic_m   <- lm(log(selic) ~ t)
Selic_r_m <- lm(log(selic_R * 100) ~ t)
Cambio_m  <- lm(log(cambio) ~ t)
CambioR_m <- lm(log(cambio_r) ~ t1)

# Previsões para o próximo período
t_next  <- length(selic) + 1
t1_next <- length(cambio_r) + 1

pred_Selic    <- exp(predict(Selic_m, newdata = data.frame(t = t_next)))
pred_Selic_r  <- exp(predict(Selic_r_m, newdata = data.frame(t = t_next)))
pred_Cambio   <- exp(predict(Cambio_m, newdata = data.frame(t = t_next)))
pred_CambioR  <- exp(predict(CambioR_m, newdata = data.frame(t1 = t1_next)))

# Data frame das previsões MQO
df_previsao <- data.frame(
  Selic    = pred_Selic,
  Selic_R  = pred_Selic_r,
  Cambio   = pred_Cambio,
  CambioR  = pred_CambioR
)



# =============================
# COMPARAÇÃO ENTRE MÉTODOS
# =============================

comparacao <- data.frame(
  Variável  = c("Selic", "Selic Real", "Câmbio", "Câmbio Real"),
  Linear    = c(Selic, Selic_r, Cambio, CambioR),
  Composta  = c(Selic_2, Selic_r_2, cambio_2, CambioR_2),
  MQO       = c(pred_Selic, pred_Selic_r, pred_Cambio, pred_CambioR)
)

kable(comparacao)
Variável Linear Composta MQO
Selic 12.281534 11.612237 6.606180
Selic Real 8.592069 8.587397 2.928280
Câmbio 7.022277 6.731819 5.158618
Câmbio Real 5.025546 3.732469 2.197979

5. Conclusão

Utilizando uma base de dados confiável, foi possível demonstrar empiricamente diversas afirmações feitas durante a contextualização de cada período. Além disso, foi possível realizar uma avaliação econométrica de momentos importantes da economia brasileira, analisando os impactos das decisões de política econômica sobre as variáveis estudadas. A análise das séries indicou que o câmbio e a taxa de juros apresentaram, inicialmente, uma tendência de queda. No entanto, em períodos mais recentes, especialmente no caso dos juros, essa tendência se inverteu, com uma nítida elevação tanto do câmbio real quanto do câmbio nominal. A transformação das séries em termos reais mostrou-se positiva, pois melhorou o formato da distribuição dos dados. Nesse contexto, a taxa Selic real apresentou distribuição normal segundo o teste de Jarque-Bera, considerando um nível de significância de 5%.

Entretanto, é necessário aprofundar os estudos, preferencialmente com a utilização de modelos mais robustos para previsão e com o cálculo de medidas mais precisas de variabilidade, a fim de compreender de forma mais detalhada a dinâmica temporal das séries. Além disso, é fundamental realizar uma análise com maior grau de contextualização histórica, examinando cada período de forma individualizada e caracterizando de maneira mais clara as políticas econômicas adotadas em cada momento, de modo a entender os fatores determinantes para os movimentos observados nas séries temporais analisadas.

Referência

https://sgeconsult.shinyapps.io/ContasNacionaisMensais/

https://salaacoes.quarto.pub/estatistica_descritiva/

https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries

https://fred.stlouisfed.org/

BARBOSA, Fernando de Holanda. O flagelo da economia de privilégios: Brasil, 1947–2020 — crescimento, crise fiscal e estagnação. Rio de Janeiro: Editora FGV, 2021.

BAUMGARTEN DE BOLLE, Monica. Como matar a borboleta-azul: uma crônica da era Dilma. São Paulo: Intrínseca, 2016.

MORETTIN, Pedro Alberto; BUSSAB, Wilton de Oliveira. Estatística básica: probabilidade e inferência. 8. ed. São Paulo: Saraiva.Uni, 2013.