A SELIC (Sistema Especial de Liquidação e Custódia) é a taxa básica de juros da economia brasileira, utilizada como referência para diversas operações financeiras, como empréstimos, financiamentos e investimentos. Ela é definida pelo Comitê de Política Monetária (COPOM), um órgão do Banco Central do Brasil, que se reúne a cada 45 dias para avaliar as condições econômicas e decidir sobre ajustes na taxa.
A principal função da SELIC é controlar a inflação, influenciando o custo do crédito e o consumo. Quando a inflação está alta, o COPOM pode aumentar a taxa SELIC para encarecer o crédito e reduzir o consumo, ajudando a conter a alta dos preços. Por outro lado, quando a economia precisa de estímulo, a taxa SELIC pode ser reduzida, tornando o crédito mais acessível e incentivando o consumo e os investimentos.
Além disso, a SELIC serve como um indicador de risco e retorno para os investidores. Ela é considerada o “custo de oportunidade” da economia, pois representa o retorno mínimo esperado em aplicações financeiras de baixo risco, como os títulos públicos. Por isso, suas variações têm impacto direto no mercado financeiro, influenciando desde a renda fixa até o mercado de ações.
Este estudo tem como público-alvo estudiosos do mercado de capitais brasileiro e investidores, e analisa a relação entre a taxa SELIC e o comportamento das ações listadas na B3 (Brasil, Bolsa, Balcão) no período de 2011 a 2022. O objetivo é ir além da observação macro, detalhando como as variações da SELIC impactam a bolsa. A intenção é auxiliar os investidores a compreenderem melhor os momentos estratégicos para alocação de capital em ações, oferecendo uma visão mais clara dos riscos envolvidos em diferentes cenários de política monetária, além de possibilitar a minimização de prejuízos e a identificação de períodos mais seguros para investir na bolsa brasileira.
O contexto brasileiro de juros altos e ciclos voláteis torna essa análise crucial. Historicamente, o Brasil enfrentou longos períodos de inflação elevada, o que levou o Banco Central a empregar a SELIC de forma vigorosa, resultando em frequentes e acentuados ciclos de alta e baixa da taxa básica de juros. É muito comum a taxa atingir patamares elevados para controlar a economia. Essas mudanças na política monetária alteram fundamentalmente o ambiente de investimento, impactando a atratividade relativa entre ativos de renda fixa e renda variável.
Este estudo busca responder:
Pacotes utilizados neste estudo:
library(readr) # Importação de dados CSV
library(dplyr) # Manipulação de dados
library(tidyr) # Organização de dados
library(lubridate) # Manipulação de datas
library(ggplot2) # Visualização de dados
library(zoo) # Séries temporais
library(scales) # Formatação de escalas nos gráficos
library(DT) # Tabelas interativas
library(stringr) # Manipulação de strings
Este estudo utiliza o dataset Brazilian Stock Market disponibilizado publicamente no Kaggle.
Sobre o dataset:
A B3 é a única bolsa de valores pública do Brasil, a 13ª maior economia do mundo, com capitalização de mercado de R$ 5,2 trilhões em 2021. Este dataset contém dados históricos de mais de 400 ações listadas na B3, além de indicadores macroeconômicos brasileiros, sendo atualizado diariamente para fins de análise quantitativa e educação financeira.
# URLs dos datasets no Kaggle
stocks_url <- "https://www.kaggle.com/datasets/andrewmvd/brazilian-stock-market/data?select=bovespa_stocks.csv"
macro_url <- "https://www.kaggle.com/datasets/andrewmvd/brazilian-stock-market/data?select=economic_indicators.csv"
# Carrega os arquivos csvs em variáveis
stocks_raw <- readr::read_csv("bovespa_stocks.csv", show_col_types = FALSE)
macro_raw <- readr::read_csv("economic_indicators.csv", show_col_types = FALSE)
# Conversão de datas para forçar a interpretação do tipo como uma data em R
stocks_raw <- stocks_raw %>% mutate(Date = as.Date(Date))
macro_raw <- macro_raw %>% mutate(Date = as.Date(Date))
Dataset de ações (bovespa_stocks.csv):
Contém preços históricos diários (OHLC - Open, High, Low, Close) e volume de mais de 400 ações negociadas na B3. Os dados são atualizados diariamente e cobrem um extenso período histórico, permitindo análises de séries temporais e rentabilidade.
| Coluna | Descrição |
|---|---|
Date |
Data da observação (formato YYYY-MM-DD) |
Symbol |
Ticker do ativo (ex: PETR4, VALE3, ITUB4) |
Open |
Preço de abertura do pregão |
High |
Preço máximo do dia |
Low |
Preço mínimo do dia |
Close |
Preço de fechamento do pregão |
Adj Close |
Preço de fechamento ajustado para eventos corporativos (splits, dividendos, bonificações) |
Volume |
Volume financeiro negociado no dia (em reais) |
Dataset de indicadores macro (economic_indicators.csv):
Contém os principais indicadores econômicos brasileiros com frequência mensal, permitindo análise da relação entre variáveis macroeconômicas e o desempenho do mercado de ações.
| Coluna | Descrição |
|---|---|
Date |
Data da divulgação/vigência do indicador |
Taxa Selic |
Taxa básica de juros da economia brasileira (% ao ano) - principal instrumento de política monetária do Banco Central |
IPCA |
Índice Nacional de Preços ao Consumidor Amplo (% acumulado) |
IGP-M |
Índice Geral de Preços (% acumulado) |
INPC |
Índice Nacional de Preços ao Consumidor (% acumulado) |
Desemprego PNADC |
Taxa de desemprego da Pesquisa Nacional por Amostra de Domicílios Contínua (%) |
Observação: Para este estudo, utilizaremos apenas a Taxa SELIC como variável macroeconômica de referência.
Nesta seção, é apresentado um consolidado quantitativo dos dois arquivos utilizados na análise. São exibidos, para cada dataset, o total de registros, o número de valores ausentes (NAs), o número de ativos distintos (quando aplicável) e o período coberto pelas observações. Olhando a consolidação das estatísticas abaixo, é possível reparar que o dataset de ações tem mais de 1 milhão de registros e ambos datasets têm um período em torno de 15 anos. O dataset com informações macroeconômicas tem um total de 21.451 registros com NAs.
# Estatísticas do dataset de ações
stocks_stats <- data.frame(
Dataset = "bovespa_stocks.csv",
`Total de Registros` = format(nrow(stocks_raw), big.mark = ".", decimal.mark = ","),
`Total de NAs` = sum(is.na(stocks_raw)),
`Número de Ativos` = length(unique(stocks_raw$Symbol)),
`Data Inicial` = format(min(stocks_raw$Date, na.rm = TRUE), "%d/%m/%Y"),
`Data Final` = format(max(stocks_raw$Date, na.rm = TRUE), "%d/%m/%Y"),
`Período (anos)` = round(as.numeric(difftime(max(stocks_raw$Date, na.rm = TRUE),
min(stocks_raw$Date, na.rm = TRUE),
units = "days")) / 365.25, 1),
check.names = FALSE
)
# Estatísticas do dataset macro
macro_stats <- data.frame(
Dataset = "economic_indicators.csv",
`Total de Registros` = format(nrow(macro_raw), big.mark = ".", decimal.mark = ","),
`Total de NAs` = sum(is.na(macro_raw)),
`Número de Ativos` = "N/A (indicadores)",
`Data Inicial` = format(min(macro_raw$Date, na.rm = TRUE), "%d/%m/%Y"),
`Data Final` = format(max(macro_raw$Date, na.rm = TRUE), "%d/%m/%Y"),
`Período (anos)` = round(as.numeric(difftime(max(macro_raw$Date, na.rm = TRUE),
min(macro_raw$Date, na.rm = TRUE),
units = "days")) / 365.25, 1),
check.names = FALSE
)
# Combinar e exibir
all_stats <- rbind(stocks_stats, macro_stats)
knitr::kable(all_stats, align = c("l", "r", "r", "r", "c", "c", "r"))
| Dataset | Total de Registros | Total de NAs | Número de Ativos | Data Inicial | Data Final | Período (anos) |
|---|---|---|---|---|---|---|
| bovespa_stocks.csv | 1.031.282 | 0 | 472 | 04/01/2010 | 17/02/2025 | 15.1 |
| economic_indicators.csv | 5.537 | 21451 | N/A (indicadores) | 01/01/2010 | 27/02/2025 | 15.2 |
As tabelas a seguir exibem parte dos dados compostos nos datasets, para facilitar o entendimento da estrutura com exemplos.
Amostra de bovespa_stocks.csv:
Amostra de economic_indicators.csv:
bovespa_stocks.csv)O dataset original é bastante extenso, abrangendo muitos anos e centenas de ativos. Por isso, aplicamos filtros para tornar a análise mais objetiva:
Esses filtros evitam vieses causados por ativos ilíquidos, descontinuados ou com histórico incompleto.
# Período: 2011-01-01 a 2022-12-31 para evitar lidar com muitos dados
start_date <- as.Date("2011-01-01")
end_date <- as.Date("2022-12-31")
stocks_period <- stocks_raw %>% filter(Date >= start_date & Date <= end_date)
# Remover duplicidades
stocks_period <- stocks_period %>% distinct(Symbol, Date, .keep_all = TRUE)
# Filtro de Liquidez (Volume médio negociado >= 1,000,000)
liq_stats <- stocks_period %>%
group_by(Symbol) %>%
summarize(mean_vol = mean(Volume, na.rm = TRUE))
keep_liquid <- liq_stats %>% filter(mean_vol >= 1000000) %>% pull(Symbol)
stocks_period <- stocks_period %>% filter(Symbol %in% keep_liquid)
# Filtro para considerar Símbolos com exatamente 5 caracteres (ex: ITUB4, PETR4).
# Este filtro ajuda a removermos ativos que nao sao empresas (fundos de investimentos, por exemplo)
stocks_period <- stocks_period %>% filter(nchar(Symbol) == 5)
# Filtro para considerar apenas ativos com registros em todos os anos do período
anos_periodo <- seq(lubridate::year(start_date), lubridate::year(end_date))
anos_por_symbol <- stocks_period %>%
mutate(ano = lubridate::year(Date)) %>%
distinct(Symbol, ano) %>%
count(Symbol, name = "anos_com_dados")
full_coverage <- anos_por_symbol %>%
filter(anos_com_dados >= length(anos_periodo)) %>%
pull(Symbol)
stocks_final <- stocks_period %>% filter(Symbol %in% full_coverage)
O gráfico abaixo mostra, para cada ano, a quantidade de ativos que não possuem registros. Perceba que em 2023 há uma grande quantidade de ativos com informações faltantes, justificando assim o filtro que limita o período até o ano de 2022, pois os registros faltantes causariam uma distorção ao calcular a rentabilidade do ativo.
economic_indicators.csv)Neste estudo, optamos por analisar apenas a taxa SELIC dentre os indicadores macroeconômicos disponíveis. A escolha se deve ao fato de a SELIC ser o principal instrumento de política monetária do Brasil e referência direta para o custo de oportunidade dos investimentos. Assim, descartamos outros índices como IPCA, IGP-M e INPC para manter o foco e a objetividade da análise.
# Extrair apenas SELIC
macro <- macro_raw %>%
select(Date, selic = `Taxa Selic`) %>%
filter(Date >= start_date & Date <= end_date)
# Forward fill: repetir o valor enquanto nos registros seguintes for nulo
macro <- macro %>%
arrange(Date) %>%
mutate(selic_ff = zoo::na.locf(selic, na.rm = FALSE))
# Variação da SELIC
macro <- macro %>%
mutate(selic_chg = selic_ff - lag(selic_ff))
Nesta seção, consolidamos os dados de ações e indicadores econômicos em um único dataset. O objetivo é unir as informações diárias de preços das ações com os dados da taxa SELIC, além de calcular os retornos diários dos ativos (ret_d), que será importante para calcularmos a rentabilidade dos ativos em determinados períodos. Essa etapa é essencial para explorar a relação entre a política monetária e o desempenho do mercado de capitais. Ao final, exibiremos uma tabela com os dados tratados para facilitar a visualização.
As colunas adicionadas ao dataset final incluem:
# Merge diário por "Date"
final_data <- stocks_final %>%
left_join(macro %>% select(Date, selic_ff, selic_chg),
by = "Date")
# Calcular retorno diario por Symbol (ret_d)
final_data <- final_data %>%
group_by(Symbol) %>%
arrange(Date, .by_group = TRUE) %>%
mutate(
ret_d = Close / lag(Close) - 1
) %>%
ungroup()
# Exibir os dados tratados em formato de tabela
DT::datatable(
head(final_data, 100),
options = list(
pageLength = 10,
scrollX = TRUE,
dom = 'frtip'
),
rownames = FALSE
)
Nesta seção, analisamos a rentabilidade acumulada dos ativos filtrados em comparação com o retorno acumulado de um investimento 100% atrelado à taxa SELIC. O objetivo é observar como o mercado acionário se comporta em relação à renda fixa ao longo do tempo. Para isso, calculamos o retorno médio diário dos ativos e acumulamos esses retornos para obter uma trajetória temporal. Simultaneamente, acumulamos os retornos diários da SELIC, considerando sua taxa anualizada convertida para uma base diária.
O gráfico gerado apresenta duas linhas principais: uma azul, representando a rentabilidade acumulada média dos ativos filtrados, e uma vermelha, que mostra o retorno acumulado de um investimento 100% SELIC. Esse gráfico permite identificar períodos de convergência e divergência entre os dois indicadores, destacando momentos em que o mercado acionário superou ou ficou abaixo do desempenho da renda fixa. A análise visual desses padrões é essencial para compreender a dinâmica entre os dois tipos de investimento ao longo do tempo.
A análise dos resultados demonstra que o retorno acumulado de um investimento 100% referenciado pela Taxa Selic (ou CDI) superou a rentabilidade média dos ativos de renda variável por uma porção significativa do período analisado. Este achado levanta um ponto de reflexão crucial sobre a relação risco-retorno, uma vez que a Selic representa um ativo de baixíssimo risco quando comparado à volatilidade intrínseca dos ativos listados na B3.
# Retorno médio diário agregado
agg_daily <- final_data %>%
group_by(Date) %>%
summarize(ret_mean = mean(ret_d, na.rm = TRUE))
# Caminho acumulado da média dos ativos
market_cum <- agg_daily %>%
arrange(Date) %>%
mutate(mkt_cum = cumprod(1 + coalesce(ret_mean, 0)) - 1)
# Caminho acumulado SELIC (taxa anual -> fator diário)
selic_path <- macro %>%
arrange(Date) %>%
mutate(
selic_daily_ret = (1 + selic_ff/100)^(1/252) - 1,
selic_cum = cumprod(1 + selic_daily_ret) - 1
) %>%
select(Date, selic_cum)
# Juntar
plot_df <- market_cum %>%
left_join(selic_path, by = "Date") %>%
tidyr::pivot_longer(cols = c(mkt_cum, selic_cum), names_to = "Serie", values_to = "ret_cum") %>%
mutate(Serie = dplyr::recode(Serie, mkt_cum = "Média Ativos", selic_cum = "SELIC (100%)"))
ggplot(plot_df, aes(Date, ret_cum, color = Serie)) +
geom_line(size = 1) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_color_manual(values = c("Média Ativos" = "steelblue", "SELIC (100%)" = "firebrick")) +
labs(title = "Rentabilidade acumulada: Média dos ativos filtrados vs investimento 100% SELIC",
subtitle = "Período: 2011–2022",
x = "Data", y = "Retorno acumulado", color = NULL) +
theme_minimal() +
theme(legend.position = "top")
Aqui, buscamos identificar e categorizar os ciclos de alta e baixa da taxa SELIC no período analisado. Essa categorização é feita ao observar as mudanças na direção da taxa ao longo do tempo, classificando os períodos em que a SELIC esteve em alta, baixa ou estável. O objetivo é entender como essas fases da política monetária impactam o mercado acionário.
O gráfico gerado nesta seção mostra a evolução da taxa SELIC ao longo do tempo, com áreas sombreadas para destacar os ciclos identificados. Os ciclos de alta são representados por retângulos vermelhos, enquanto os ciclos de baixa aparecem em azul.
# Identificar ciclos de alta e baixa da SELIC
selic_cycles <- macro %>%
arrange(Date) %>%
mutate(
selic_diff = selic_ff - lag(selic_ff),
direction = case_when(
selic_diff > 0 ~ "alta",
selic_diff < 0 ~ "baixa",
TRUE ~ "estavel"
)
) %>%
filter(!is.na(direction))
# Identificar mudanças de direção para determinar início e fim dos ciclos
cycle_points <- selic_cycles %>%
mutate(
direction_change = direction != lag(direction, default = ""),
cycle_start = direction_change & direction != "estavel"
) %>%
filter(cycle_start | row_number() == 1 | row_number() == n()) %>%
select(Date, selic_ff, direction)
# Criar dataframe dos ciclos completos
cycles <- data.frame()
for(i in 1:(nrow(cycle_points)-1)) {
cycle_type <- cycle_points$direction[i]
if(cycle_type %in% c("alta", "baixa")) {
cycles <- rbind(cycles, data.frame(
cycle_type = cycle_type,
start_date = cycle_points$Date[i],
end_date = cycle_points$Date[i+1],
start_selic = cycle_points$selic_ff[i],
end_selic = cycle_points$selic_ff[i+1]
))
}
}
# Gráfico da evolução da SELIC com ciclos marcados
p_selic_cycles <- ggplot(macro, aes(Date, selic_ff)) +
geom_line(color = "firebrick", size = 1.2) +
labs(title = "Evolução da Taxa SELIC com Ciclos de Alta e Baixa Identificados",
subtitle = "Período: 2011–2022 | Retângulos vermelhos = Ciclos de Alta | Retângulos azuis = Ciclos de Baixa",
x = "Data",
y = "SELIC (% a.a.)") +
theme_minimal()
# Adicionar retângulos para marcar os ciclos
if(nrow(cycles) > 0) {
for(i in 1:nrow(cycles)) {
cycle_color <- ifelse(cycles$cycle_type[i] == "alta", "#ffcccc", "#ccccff")
p_selic_cycles <- p_selic_cycles +
annotate("rect",
xmin = cycles$start_date[i],
xmax = cycles$end_date[i],
ymin = -Inf,
ymax = Inf,
fill = cycle_color,
alpha = 0.3)
}
}
p_selic_cycles
A análise do gráfico anterior permite identificar um total de cinco ciclos no período: três ciclos de alta e dois ciclos de baixa da Taxa Selic. Adicionalmente, conforme mostrado abaixo, a Selic apresentou um valor médio de 9,17% ao ano, uma taxa considerada significativamente alta para a economia.
# Calcular a média da taxa SELIC no período analisado
selic_mean <- macro %>%
summarize(mean_selic = mean(selic_ff, na.rm = TRUE)) %>%
pull(mean_selic)
# Exibe o resultado
cat("A taxa SELIC média no período analisado foi de", round(selic_mean, 2), "% ao ano")
## A taxa SELIC média no período analisado foi de 9.17 % ao ano
Nesta última aba, comparamos a rentabilidade acumulada dos ativos durante os diferentes ciclos da SELIC. O objetivo é avaliar se há diferenças significativas no desempenho dos ativos entre períodos de alta e baixa da taxa de juros. Para isso, calculamos a rentabilidade acumulada dos ativos em cada ciclo identificado, filtrando outliers extremos para evitar distorções.
O gráfico gerado é um boxplot que ilustra a distribuição da rentabilidade dos ativos em cada tipo de ciclo. Ele permite observar a mediana, a dispersão e possíveis outliers em cada grupo. Os ciclos de alta e baixa são representados por cores distintas, facilitando a comparação visual.
Olhando o gráfico gerado, o resultado demonstra que o desempenho do mercado acionário é claramente superior durante os ciclos de baixa da Taxa Selic. Os resultados demonstram as seguintes diferenças cruciais entre os regimes de juros:
Mediana: O Boxplot Azul (Ciclo de Baixa) mostra que a mediana da rentabilidade acumulada é positiva (acima de 0%) e significativamente mais alta em comparação com o Boxplot Vermelho (Ciclo de Alta). Durante os ciclos de alta, a mediana da rentabilidade dos ativos se posiciona abaixo de 0% (ou muito próxima dele), indicando que, na maior parte das vezes, os investidores tiveram retornos negativos ou nulos nesse período.
Primeiro e Terceiro Quartil (Corpo da Caixa): A área central (50% das observações) do Boxplot Azul está amplamente situada no campo positivo, enquanto a área central do Boxplot Vermelho está concentrada no campo negativo ou ligeiramente abaixo de 0%.
Dispersão e Risco: Embora ambos os ciclos apresentem alta dispersão (indicada pelos whiskers longos e pela presença de outliers), a faixa de retornos negativos é muito mais acentuada e provável durante os ciclos de alta.
Em suma, esta evidência sugere que, quando a política monetária promove a redução dos juros, o custo de oportunidade da renda fixa diminui, incentivando a migração de capital para a renda variável e resultando em uma distribuição de rentabilidade globalmente mais favorável para os ativos listados na B3.
# Agrupar ciclos consecutivos do mesmo tipo
cycles_with_groups <- cycles %>%
arrange(start_date) %>%
mutate(
cycle_group_change = cycle_type != lag(cycle_type, default = ""),
cycle_group_id = cumsum(cycle_group_change)
)
# Consolidar períodos consecutivos e filtrar ciclos com pelo menos 12 meses para remover períodos muito curtos
cycle_data <- cycles_with_groups %>%
group_by(cycle_group_id, cycle_type) %>%
summarise(
start_date = min(start_date),
end_date = max(end_date),
.groups = "drop"
) %>%
mutate(
duration_months = as.numeric(difftime(end_date, start_date, units = "days")) / 30.44,
# Obter SELIC no início e fim do ciclo
start_selic = sapply(start_date, function(d) {
macro %>% filter(Date >= d) %>% slice(1) %>% pull(selic_ff)
}),
end_selic = sapply(end_date, function(d) {
macro %>% filter(Date <= d) %>% slice_tail(n=1) %>% pull(selic_ff)
}),
selic_variation = end_selic - start_selic
) %>%
filter(duration_months >= 12) %>%
mutate(cycle_id = row_number())
# Calcular rentabilidade dos ativos para cada ciclo
cycle_returns <- data.frame()
for(i in 1:nrow(cycle_data)) {
cycle_stocks <- final_data %>%
filter(Date >= cycle_data$start_date[i] & Date <= cycle_data$end_date[i]) %>%
group_by(Symbol) %>%
summarize(
n_obs = n(),
first_price = first(Close[!is.na(Close)]),
last_price = last(Close[!is.na(Close)]),
ret_cum_cycle = (last_price / first_price) - 1,
.groups = "drop"
) %>%
filter(!is.na(ret_cum_cycle), is.finite(ret_cum_cycle), n_obs >= 20) %>%
mutate(
cycle_type = cycle_data$cycle_type[i],
cycle_id = i
)
cycle_returns <- rbind(cycle_returns, cycle_stocks)
}
# Filtrar outliers extremos
cycle_returns_filtered <- cycle_returns %>%
filter(ret_cum_cycle <= 3.0, ret_cum_cycle >= -0.9, !is.na(cycle_type))
# Boxplot comparativo
p_boxplot <- ggplot(cycle_returns_filtered, aes(x = cycle_type, y = ret_cum_cycle, fill = cycle_type)) +
geom_boxplot(alpha = 0.7, outlier.alpha = 0.5) +
geom_jitter(width = 0.2, alpha = 0.3, size = 0.8) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_fill_manual(values = c("alta" = "#ff9999", "baixa" = "#9999ff")) +
labs(
title = "Rentabilidade dos Ativos por Tipo de Ciclo da SELIC",
subtitle = paste0("Distribuição da rentabilidade acumulada dos ativos durante ciclos de alta vs baixa\n",
"Total de observações: ", nrow(cycle_returns_filtered)),
x = "Tipo de Ciclo da SELIC",
y = "Rentabilidade Acumulada (%)",
fill = "Ciclo"
) +
theme_minimal() +
theme(legend.position = "none")
p_boxplot
A análise apresentada neste relatório permitiu identificar importantes relações entre a taxa SELIC e o mercado acionário brasileiro. As principais conclusões obtidas são:
Desempenho da SELIC em relação à Bolsa: O retorno acumulado de um investimento 100% referenciado pela taxa SELIC superou, em boa parte do período analisado, a rentabilidade média dos ativos de renda variável. Isso reforça o papel da SELIC como uma alternativa de baixo risco e atrativa em cenários de juros elevados.
Ciclos de Alta e Baixa da SELIC: A análise confirmou que a economia brasileira é marcada por ciclos de alta e baixa da taxa SELIC, com uma taxa média de 9,17% ao ano no período analisado. Esse patamar elevado exige que os investidores avaliem cuidadosamente o momento de realizar aportes, considerando o impacto dos ciclos de juros sobre os ativos de renda variável. Alternativamente, a renda fixa pode ser uma escolha mais segura em cenários de alta volatilidade.
Impacto da SELIC na Rentabilidade dos Ativos: Foi observada uma correlação significativa entre os ciclos da SELIC e a rentabilidade dos ativos. Durante ciclos de alta, muitos ativos apresentaram retornos negativos, gerando prejuízos. Isso destaca a importância de os investidores compreenderem o impacto da política monetária em suas estratégias de investimento.
Apesar das conclusões relevantes, algumas limitações devem ser consideradas:
Registros Faltantes: O dataset apresentou lacunas em alguns períodos, o que pode ter limitado a abrangência e a precisão de algumas análises.
Período Analisado: O intervalo de 2011 a 2022, embora recente, pode não capturar ciclos econômicos mais longos e suas implicações no mercado.
Efeito da Pandemia: A pandemia de COVID-19 trouxe volatilidade significativa ao mercado financeiro, o que pode ter influenciado os resultados observados, especialmente em 2020 e 2021.
Essas limitações não invalidam os achados, mas sugerem cautela na generalização das conclusões. Estudos futuros poderiam ampliar o período analisado e incorporar métodos para lidar com dados ausentes, além de explorar outros fatores macroeconômicos que influenciam o mercado de capitais.