# ============================
# 1. Carregamento das bibliotecas
# ============================
# Importa o pacote Highcharter, utilizado para criar gráficos interativos.
library(highcharter)
# Importa os pacotes usados para ler a planilha de séries históricas
# Abrainc-Fipe e agregar as vendas por padrão imobiliário por trimestre.
library(readxl)
library(dplyr)
library(tidyr)
library(lubridate)
# Importa os pacotes usados para buscar séries direto da API do Banco
# Central (SGS), usadas na ótica do consumidor (Selic e taxas de
# financiamento imobiliário reguladas vs. de mercado).
library(httr)
library(jsonlite)
# ============================
# 2. Contador global de gráficos
# ============================
# Cada gráfico do relatório recebe um número sequencial automático
# (Gráfico 1, Gráfico 2, ...), na ordem em que aparece no documento.
# Isso evita renumerar manualmente o texto sempre que um gráfico for
# adicionado, removido ou reordenado.
contador_graficos <- 0
proximo_numero_grafico <- function() {
contador_graficos <<- contador_graficos + 1
contador_graficos
}
# ============================
# 4. Tema padrão da IbMacro BH
# ============================
# Cria um tema personalizado para padronizar a identidade visual dos gráficos.
tema_ibmacro <- hc_theme_merge(
hc_theme_smpl(),
hc_theme(
colors = c(
"#FEB712",
"#02023C",
"#363E6B",
"#FFD57A",
"#46B1E1",
"#A6A6A6",
"#111827"
),
chart = list(
backgroundColor = "#FFFFFF",
style = list(
fontFamily = "Arial, Helvetica, sans-serif"
)
),
title = list(
style = list(
color = "#02023C",
fontWeight = "bold",
fontSize = "18px"
)
),
subtitle = list(
style = list(
color = "#4B5563",
fontSize = "13px"
)
),
xAxis = list(
gridLineWidth = 1,
gridLineColor = "#E5E7EB",
lineColor = "#9CA3AF",
tickColor = "#9CA3AF",
labels = list(
style = list(
color = "#4B5563"
)
)
),
yAxis = list(
gridLineColor = "#E5E7EB",
lineColor = "#9CA3AF",
labels = list(
style = list(
color = "#4B5563"
)
)
),
legend = list(
enabled = TRUE,
itemStyle = list(
color = "#111827",
fontWeight = "normal"
)
)
)
)
# Função padrão de formatação. Recebe também "fonte", já que os gráficos
# deste relatório vêm de fontes diferentes (Abrainc-Fipe, Banco Central,
# Abecip, ANBIMA, Banco Safra etc.), ao contrário do exemplo genérico do
# guia, que fixa uma única fonte para todos os gráficos.
#
# A numeração é aplicada automaticamente aqui: o título exibido passa a
# ser "Gráfico N — <titulo>", com N atribuído em ordem de renderização.
hc_formatar_padrao <- function(
hc,
titulo,
subtitulo = NULL,
texto_y = "%",
fonte = "Banco Central e IBGE"
) {
numero <- proximo_numero_grafico()
titulo_numerado <- paste0("Gráfico ", numero, " — ", titulo)
hc %>%
hc_add_theme(tema_ibmacro) %>%
hc_title(text = titulo_numerado) %>%
hc_subtitle(text = subtitulo) %>%
hc_yAxis(
title = list(text = texto_y)
) %>%
hc_tooltip(
shared = TRUE,
valueDecimals = 2,
valueSuffix = paste0(" ", texto_y)
) %>%
hc_exporting(enabled = TRUE) %>%
hc_credits(
enabled = TRUE,
text = paste0("Fonte: ", fonte, ". Elaboração própria IbMacro BH."),
style = list(
color = "#6B7280",
fontSize = "10px"
)
)
}A compra de um imóvel raramente acontece à vista. No Brasil, a maioria dos casos, depende de crédito financiado em parcelas que podem chegar a 420 meses, ou 35 anos. Essa dependência não é um detalhe operacional, é a própria condição de existência do mercado imobiliário residencial num país onde o valor de um imóvel médio equivale a vários anos de renda familiar. Sem crédito acessível não há mercado, nem para quem compra nem para quem constrói, já que as incorporadoras também financiam parte de suas operações com dívida. O custo desse crédito é, portanto, a variável que organiza a oferta e a demanda de moradia no país. E essa dependência resistiu bem ao crédito mais caro: segundo a Abecip, mais de 680 mil imóveis foram financiados só no primeiro semestre de 2026, movimentando R$ 180,9 bilhões, alta de 23% frente ao mesmo período de 2025.
Foi esse custo que mudou de patamar. A Selic saiu da mínima histórica de 2% ao ano, na pandemia, para um ciclo de altas que a levou a 13,75% entre 2021 e 2022, o maior reajuste do século. Depois de uma trégua parcial, um segundo aperto, entre o fim de 2024 e meados de 2025, levou a taxa a 15%, o maior nível em quase duas décadas. Hoje, em 14% ao ano, a Selic segue elevada e, descontada a inflação, coloca o Brasil como o país de maior juro real do mundo.
No Brasil, esse movimento é reforçado pelo crescimento da dívida pública, pelo risco fiscal e pela instabilidade política. Mas o fenômeno não é uma exclusividade brasileira: juros mais altos apareceram em boa parte do mundo, puxados pela recuperação pós-pandemia, pela guerra na Ucrânia e, mais recentemente, pelos conflitos no Oriente Médio. O gráfico abaixo mostra as taxas de juros reais em quatro países desde 2016:
juros_tempo <- data.frame(
ano = rep(2016:2026, times = 4),
pais = rep(c("Brasil", "EUA", "Zona do Euro", "Rússia"), each = 11),
nominal = c(
13.75, 7.00, 6.50, 4.50, 2.00, 9.25, 13.75, 11.75, 12.25, 15.00, 14.00,
0.54, 1.30, 2.40, 1.55, 0.09, 0.07, 4.33, 5.33, 4.33, 3.63, 3.64,
-0.40, -0.40, -0.40, -0.50, -0.50, -0.50, 2.00, 4.00, 3.00, 2.00, 2.50,
10.00, 7.75, 7.75, 6.25, 4.25, 8.50, 7.50, 16.00, 21.00, 16.00, 14.00
),
inflacao = c(
6.29, 2.95, 3.75, 4.31, 4.52, 10.06, 5.79, 4.62, 4.83, 4.26, 4.44,
2.1, 2.1, 1.9, 2.3, 1.4, 7.0, 6.5, 3.4, 2.9, 2.7, 3.4,
1.1, 1.4, 1.6, 1.3, -0.3, 5.0, 9.2, 2.9, 2.4, 1.9, 3.3,
5.4, 2.5, 4.3, 3.0, 4.9, 8.4, 11.9, 7.4, 9.5, 5.6, 6.3
)
)
juros_tempo$juro_real <- round(
(1 + juros_tempo$nominal / 100) / (1 + juros_tempo$inflacao / 100) * 100 - 100,
2
)# ============================
# 5. Construção do gráfico
# ============================
anos <- as.character(sort(unique(juros_tempo$ano)))
paises <- c("Brasil", "EUA", "Zona do Euro", "Rússia")
grafico <- highchart() %>%
hc_chart(type = "line") %>%
hc_xAxis(categories = anos) %>%
hc_colors(c("#FEB712", "#02023C", "#A6A6A6", "#46B1E1"))
for (p in paises) {
serie <- juros_tempo[juros_tempo$pais == p, ]
serie <- serie[order(serie$ano), ]
grafico <- grafico %>%
hc_add_series(name = p, data = serie$juro_real)
}
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Taxa de juros real (2016-2026)",
subtitulo = "Brasil, EUA, Zona do Euro e Rússia",
texto_y = "%",
fonte = "Bancos centrais (Brasil, EUA, Zona do Euro e Rússia)"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoO crédito ficou mais caro no mundo todo, mas o Brasil, já habituado a juros altos, sentiu o movimento de forma amplificada. Chegou a 2026 com o maior juro real entre os quatro países da série.
A expectativa teórica é direta: se o financiamento é a porta de entrada para a compra de um imóvel, e essa porta ficou mais cara, o consumo imobiliário deveria ter recuado. Não foi isso, porém, que se observou. O número de lançamentos seguiu crescendo entre 2022 e 2025. Para investigar essa relação, serão analisados dados do período, relacionando a trajetória dos juros às condições de crédito e ao comportamento da demanda no mercado imobiliário brasileiro.
Sob a perspectiva do consumidor, a taxa de juros constitui um dos principais fatores capazes de influenciar a dinâmica do mercado imobiliário, sobretudo por seus efeitos sobre o custo e as condições de acesso ao crédito habitacional. Como a compra de um imóvel geralmente envolve financiamentos de longo prazo e elevado comprometimento da renda familiar, alterações nas taxas de juros podem afetar diretamente o valor das parcelas, a capacidade de financiamento e o momento da decisão de compra. Dessa forma, esta seção busca responder à seguinte questão: como as variações da taxa de juros afetam a capacidade de compra e a decisão das famílias de adquirir imóveis no Brasil?
Entre 2016 e 2025, a Meta Selic passou por ciclos bastante distintos, refletindo mudanças importantes no cenário econômico brasileiro. Em 2016, a taxa permaneceu em 14,25% durante boa parte do ano e começou a ser reduzida apenas a partir de outubro, em meio à atividade econômica ainda fraca e ao avanço do processo de desinflação. Esse movimento de queda se intensificou nos anos seguintes, levando a Selic a 6,50% em 2018 e 4,50% ao fim de 2019, em um contexto de inflação relativamente controlada e recuperação econômica gradual. Com a pandemia de Covid-19, em 2020, o forte choque sobre a atividade e o elevado grau de incerteza levaram o Banco Central a aprofundar o estímulo monetário, reduzindo a Selic até 2% ao ano. A partir de 2021, porém, o cenário se inverteu: a retomada da economia veio acompanhada de forte aceleração inflacionária e piora das expectativas, fazendo o Copom iniciar um rápido ciclo de aperto monetário, que levou a taxa a 13,75% e a manteve nesse patamar até 2023. Com a melhora do quadro inflacionário e o avanço da desinflação, o Banco Central iniciou em agosto de 2023 um novo ciclo de cortes, levando a Selic até 10,50% em 2024. Entretanto, ainda em 2024, a combinação de atividade econômica e mercado de trabalho mais aquecidos que o esperado, inflação acima da meta e expectativas de inflação desancoradas levou o Copom a interromper os cortes e retomar as altas, fazendo a Meta Selic alcançar 15% ao ano em junho de 2025, nível mantido até o fim daquele ano, como observado no gráfico 2.
# Busca a Meta Selic (série 432) direto da API de séries temporais do
# Banco Central (SGS), evitando depender do pacote rbcb (desatualizado e
# incompatível com a mudança que o Bacen fez na API em 26/03/2025).
get_bcb_series <- function(codigo, data_inicial, data_final) {
# Busca ano a ano: a API do Bacen às vezes devolve uma página de erro em
# XML (em vez de JSON) para consultas longas. Cada pedaço é tentado até
# 3 vezes antes de desistir.
ini <- as.Date(data_inicial, format = "%d/%m/%Y")
fim <- as.Date(data_final, format = "%d/%m/%Y")
inicios <- seq(ini, fim, by = "year")
pedacos <- lapply(inicios, function(d0) {
d1 <- min(seq(d0, by = "year", length.out = 2)[2] - 1, fim)
url <- sprintf(
"https://api.bcb.gov.br/dados/serie/bcdata.sgs.%s/dados?formato=json&dataInicial=%s&dataFinal=%s",
codigo, format(d0, "%d/%m/%Y"), format(d1, "%d/%m/%Y")
)
for (tentativa in 1:3) {
resp <- httr::GET(url, httr::add_headers(
`User-Agent` = "Mozilla/5.0 (R script)",
Accept = "application/json"
))
txt <- httr::content(resp, as = "text", encoding = "UTF-8")
if (httr::status_code(resp) == 200 && grepl("^\\s*\\[", txt)) {
return(jsonlite::fromJSON(txt))
}
Sys.sleep(2)
}
stop("A API do Bacen não devolveu JSON para a série ", codigo,
" (", format(d0, "%Y"), "). Resposta: ", substr(txt, 1, 200))
})
df <- do.call(rbind, pedacos[sapply(pedacos, length) > 0])
df <- df[!duplicated(df$data), ]
df$data <- as.Date(df$data, format = "%d/%m/%Y")
df$valor <- as.numeric(gsub(",", ".", df$valor))
df
}
# Datas em dd/mm/aaaa, formato exigido pela API do Bacen. O intervalo
# (01/01/2016 a 31/12/2025) fica dentro do limite de 10 anos por consulta.
selic_raw <- get_bcb_series(432, "01/01/2016", "31/12/2025")
selic_df <- data.frame(date = selic_raw$data, value = selic_raw$valor)# ============================
# 5. Construção do gráfico
# ============================
grafico <- highchart() %>%
hc_chart(type = "areaspline") %>%
hc_add_series(
data = selic_df,
type = "areaspline",
hcaes(x = date, y = value),
step = "left",
name = "Meta Selic",
color = "#02023C",
lineWidth = 2.5,
fillColor = list(
linearGradient = list(x1 = 0, y1 = 0, x2 = 0, y2 = 1),
stops = list(
list(0, "rgba(2, 2, 60, 0.35)"),
list(1, "rgba(2, 2, 60, 0.02)")
)
),
marker = list(enabled = FALSE)
) %>%
hc_xAxis(
type = "datetime",
gridLineWidth = 0,
dateTimeLabelFormats = list(year = "%Y")
) %>%
hc_legend(enabled = FALSE)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Taxa de juros - Meta Selic definida pelo Copom",
subtitulo = "Evolução da meta da taxa Selic (% a.a.), 2016-2025",
texto_y = "%",
fonte = "Banco Central do Brasil (SGS 432)"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoA variação da Selic não é transmitida de forma uniforme para o crédito imobiliário, uma vez que as condições de financiamento dependem das características de cada modalidade, de suas fontes de recursos e das regras de contratação. Nesse contexto, destacam-se as operações com taxas reguladas e com taxas de mercado, relacionadas respectivamente ao Sistema Financeiro da Habitação (SFH) e ao Sistema de Financiamento Imobiliário (SFI). Compreender essa estrutura é essencial para analisar por que as mudanças na política monetária afetam de maneira distinta o custo do financiamento e, consequentemente, o consumidor.
SFH — Sistema Financeiro da Habitação: Criado em 1964, o SFH foi desenvolvido para ampliar o acesso da população ao crédito habitacional e funciona sob regras específicas definidas pelo Conselho Monetário Nacional. Seus financiamentos utilizam principalmente recursos direcionados, como os depósitos da caderneta de poupança (SBPE) e do FGTS, o que ajuda a diferenciar sua dinâmica daquela observada no crédito livre. As operações enquadradas no sistema estão sujeitas a limites, entre eles o custo efetivo máximo de 12% ao ano, considerando juros, comissões e outros encargos financeiros. Além disso, existe um limite para o valor do imóvel: durante a maior parte do período analisado era de R$ 1,5 milhão, sendo elevado para R$ 2,25 milhões em outubro de 2025. Essas características ajudam a explicar por que as operações classificadas como taxas reguladas apresentam menor volatilidade e menor sensibilidade imediata às oscilações da Selic, como mostra o gráfico 3.
SFI — Sistema de Financiamento Imobiliário: Criado em 1997, o SFI surgiu para complementar o SFH e ampliar o financiamento imobiliário por meio de condições mais próximas às praticadas no mercado. Diferentemente do SFH, não existe um limite geral para o valor do imóvel e as taxas de juros são livremente negociadas entre a instituição financeira e o cliente, permitindo que o banco considere com maior intensidade fatores como seu custo de captação, risco do tomador, prazo da operação e condições do mercado financeiro. O sistema também está associado a fontes privadas de financiamento e instrumentos do mercado de capitais, ampliando as possibilidades de captação de recursos para o setor imobiliário. Por essa maior liberdade na formação das condições do crédito, as operações classificadas como taxas de mercado, muitas delas relacionadas ao SFI, tendem a responder de maneira mais intensa às mudanças no ambiente de juros, o que ajuda a explicar a maior volatilidade observada no gráfico 3 entre 2016 e 2025.
# Busca as taxas de juros do financiamento imobiliário para pessoas
# físicas: taxas reguladas (série 20773) e taxas de mercado (série
# 20772), via a mesma função de acesso ao SGS/BCB definida acima.
reguladas_raw <- get_bcb_series(20773, "01/01/2016", "31/12/2025")
mercado_raw <- get_bcb_series(20772, "01/01/2016", "31/12/2025")
reguladas_df <- data.frame(date = reguladas_raw$data, value = reguladas_raw$valor)
mercado_df <- data.frame(date = mercado_raw$data, value = mercado_raw$valor)# ============================
# 5. Construção do gráfico
# ============================
grafico <- highchart() %>%
hc_chart(type = "line") %>%
hc_add_series(
data = mercado_df,
type = "line",
hcaes(x = date, y = value),
name = "Taxas de mercado",
color = "#FEB712",
lineWidth = 2.5
) %>%
hc_add_series(
data = reguladas_df,
type = "line",
hcaes(x = date, y = value),
name = "Taxas reguladas",
color = "#02023C",
lineWidth = 2.5
) %>%
hc_xAxis(
type = "datetime",
gridLineWidth = 0,
dateTimeLabelFormats = list(year = "%Y")
)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Financiamento imobiliário: taxas reguladas vs. taxas de mercado",
subtitulo = "Taxa média de juros das operações de crédito com recursos direcionados - pessoas físicas (% a.a.), 2016-2025",
texto_y = "%",
fonte = "Banco Central do Brasil (SGS 20772 e 20773)"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoA evolução das taxas de financiamento imobiliário entre 2016 e 2025 mostra que as operações com taxas de mercado e as operações com taxas reguladas acompanham, em linhas gerais, os grandes ciclos da política monetária, mas com intensidades distintas. Entre 2016 e 2021, ambas apresentaram trajetória de queda, acompanhando o processo de redução da Selic, embora as taxas de mercado tenham recuado de patamares próximos a 15%–16% ao ano para cerca de 8%, enquanto as reguladas caíram de aproximadamente 10% para níveis próximos de 7%. A partir de 2021, com a reversão do ciclo monetário, as duas voltaram a subir, porém as taxas de mercado reagiram de forma mais intensa. Essa diferença se torna ainda mais evidente em 2025, quando as taxas de mercado se aproximam novamente de 15% ao ano, enquanto as reguladas permanecem próximas de 10%. O comportamento sugere que as regras específicas e as fontes direcionadas de recursos associadas ao crédito regulado amortecem parte da transmissão das variações da Selic, enquanto as operações de mercado permanecem mais expostas às condições financeiras da economia. Para o consumidor, essa diferença é relevante porque o impacto de um ciclo de alta dos juros depende da modalidade de financiamento à qual ele consegue ter acesso. Famílias que dependem de condições de mercado tendem a enfrentar elevações mais intensas no custo do crédito, enquanto modalidades reguladas oferecem maior proteção contra oscilações bruscas das taxas.
As concessões de crédito imobiliário apresentaram crescimento expressivo entre 2016 e 2025, especialmente nas operações com taxas reguladas, que representam a maior parcela do volume financiado, outrossim, as operações com taxas de mercado também ganharam participação ao longo do período, principalmente a partir de 2020, como mostra o gráfico 4. Entretanto, como os dados estão expressos em valores nominais, o aumento das concessões não significa necessariamente que mais famílias passaram a financiar imóveis, podendo refletir também o aumento do valor médio dos imóveis e dos próprios financiamentos.
# Busca as concessões de crédito para financiamento imobiliário (pessoas
# físicas): taxas reguladas (série 20703) e taxas de mercado (série
# 20702), via a mesma função de acesso ao SGS/BCB definida acima.
concessoes_reguladas_raw <- get_bcb_series(20703, "01/01/2016", "31/12/2025")
concessoes_mercado_raw <- get_bcb_series(20702, "01/01/2016", "31/12/2025")
concessoes_reguladas_df <- data.frame(date = concessoes_reguladas_raw$data, value = concessoes_reguladas_raw$valor)
concessoes_mercado_df <- data.frame(date = concessoes_mercado_raw$data, value = concessoes_mercado_raw$valor)# ============================
# 5. Construção do gráfico
# ============================
grafico <- highchart() %>%
hc_chart(type = "line") %>%
hc_add_series(
data = concessoes_mercado_df,
type = "line",
hcaes(x = date, y = value),
name = "Taxas de mercado",
color = "#FEB712",
lineWidth = 2.5
) %>%
hc_add_series(
data = concessoes_reguladas_df,
type = "line",
hcaes(x = date, y = value),
name = "Taxas reguladas",
color = "#02023C",
lineWidth = 2.5
) %>%
hc_xAxis(
type = "datetime",
gridLineWidth = 0,
dateTimeLabelFormats = list(year = "%Y")
)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Financiamento imobiliário: concessões com taxas reguladas vs. de mercado",
subtitulo = "Concessões de crédito com recursos direcionados - pessoas físicas (R$ milhões), 2016-2025",
texto_y = "R$ mi",
fonte = "Banco Central do Brasil (SGS 20702 e 20703)"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoPor isso, torna-se necessário observar também a quantidade de unidades efetivamente financiadas, indicador mais adequado para avaliar o acesso do consumidor ao crédito habitacional.
# Unidades financiadas com recursos da poupança SBPE (mil), conferido
# diretamente nos boletins DATA ABECIP de dez/2020, dez/2024 e dez/2025.
unidades_abecip_df <- data.frame(
ano = 2016:2025,
valor = c(199.7, 175.6, 228.4, 298.0, 426.8, 866.3, 713.2, 499.1, 532.1, 457.7)
)# ============================
# 5. Construção do gráfico
# ============================
grafico <- highchart() %>%
hc_chart(type = "column") %>%
hc_add_series(
data = unidades_abecip_df$valor,
name = "Unidades financiadas",
color = "#02023C",
dataLabels = list(enabled = TRUE, format = "{y:.0f}", y = -4)
) %>%
hc_xAxis(
categories = as.character(unidades_abecip_df$ano),
gridLineWidth = 0
) %>%
hc_legend(enabled = FALSE)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Unidades financiadas com recursos da poupança SBPE(Sistema Brasileiro de Poupança e Empréstimo)",
subtitulo = "Quantidade de imóveis financiados (mil unidades), 2016-2025",
texto_y = "mil unidades",
fonte = "DATA ABECIP"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoA evolução do número de unidades financiadas com recursos da poupança SBPE entre 2016 e 2025 evidencia mudanças importantes no acesso das famílias ao crédito imobiliário. Entre 2016 e 2021, observa-se forte expansão da quantidade de imóveis financiados, que passou de 200 mil para 866 mil unidades, movimento compatível com o ambiente de redução da Selic e do custo do financiamento habitacional no período. A partir de 2022, contudo, o número de unidades financiadas recuou para 713 mil, chegando a 499 mil em 2023, em um contexto de aperto monetário e encarecimento do crédito. Em 2024 houve recuperação parcial, com 532 mil unidades financiadas, mas em 2025 o indicador voltou a cair para 458 mil, como apresentado no gráfico 5. Esses dados sugerem que, embora outros fatores também influenciem o mercado imobiliário, as condições de juros exercem papel relevante sobre a capacidade das famílias de acessar financiamento para aquisição de imóveis. A comparação entre a Meta Selic média anual e o número de unidades financiadas com recursos do SBPE reforça a hipótese de que as condições de juros afetam o acesso das famílias ao crédito imobiliário. Entre 2016 e 2021, a queda da Selic foi acompanhada por forte expansão das unidades financiadas, que passaram de 200 mil para 866 mil. A partir de 2022, com a reversão do ciclo monetário e o encarecimento do crédito, observou-se retração no número de imóveis financiados, que caiu para 713 mil em 2022 e 499 mil em 2023. Em 2024, a redução da Selic esteve associada a uma recuperação parcial do indicador, enquanto em 2025, com nova elevação dos juros, o número de unidades voltou a recuar para 458 mil. Como pode ser observado no gráfico 6.
# Meta Selic média anual, calculada a partir da série diária (SGS 432)
# já buscada acima, para comparar com as unidades financiadas do SBPE.
selic_raw$ano <- as.integer(format(selic_raw$data, "%Y"))
selic_anual_df <- aggregate(valor ~ ano, data = selic_raw, FUN = mean)
selic_anual_df <- merge(data.frame(ano = 2016:2025), selic_anual_df, by = "ano", all.x = TRUE)
selic_anual_df <- selic_anual_df[order(selic_anual_df$ano), ]# ============================
# 5. Construção do gráfico
# ============================
grafico <- highchart() %>%
hc_add_series(
data = unidades_abecip_df$valor,
type = "column",
name = "Unidades financiadas (mil)",
color = "#02023C",
yAxis = 0,
dataLabels = list(enabled = TRUE, format = "{y:.0f}", y = -4)
) %>%
hc_add_series(
data = selic_anual_df$valor,
type = "line",
name = "Meta Selic média (% a.a.)",
color = "#FEB712",
lineWidth = 3,
yAxis = 1,
marker = list(enabled = TRUE, radius = 4)
) %>%
hc_xAxis(
categories = as.character(unidades_abecip_df$ano),
gridLineWidth = 0
) %>%
hc_yAxis_multiples(
list(title = list(text = "Unidades financiadas (mil)"),
min = 0, gridLineDashStyle = "Dash", opposite = FALSE),
list(title = list(text = "Meta Selic média (% a.a.)"),
labels = list(format = "{value}%"),
min = 0, gridLineWidth = 0, opposite = TRUE)
)
# ============================
# 6. Aplicação da formatação
# ============================
# Este gráfico usa dois eixos Y (hc_yAxis_multiples), por isso a
# formatação é aplicada diretamente em vez de hc_formatar_padrao(), que
# define um único eixo Y e substituiria a configuração de eixo duplo acima.
# Como não passa por hc_formatar_padrao(), o número sequencial é obtido
# manualmente aqui, para manter a numeração global consistente com os
# demais gráficos do relatório.
numero_grafico_selic_unidades <- proximo_numero_grafico()
grafico <- grafico %>%
hc_add_theme(tema_ibmacro) %>%
hc_title(text = paste0("Gráfico ", numero_grafico_selic_unidades, " — Unidades financiadas (SBPE) vs. Meta Selic")) %>%
hc_subtitle(text = "Unidades financiadas (mil) e meta Selic média anual (% a.a.), 2016-2025") %>%
hc_tooltip(shared = TRUE, valueDecimals = 1) %>%
hc_exporting(enabled = TRUE) %>%
hc_credits(
enabled = TRUE,
text = "Fonte: DATA ABECIP e Banco Central do Brasil (SGS 432). Elaboração própria IbMacro BH.",
style = list(color = "#6B7280", fontSize = "10px")
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoA elevação das taxas de juros reduz diretamente a capacidade de compra das famílias no mercado imobiliário. Isso ocorre porque, para um mesmo valor de financiamento e prazo, juros mais altos aumentam o valor das parcelas e o custo total da operação. Como os bancos também consideram a renda do consumidor para definir quanto ele pode comprometer mensalmente, uma família que antes conseguia financiar determinado imóvel pode passar a ter acesso a um valor menor. Nesse cenário, o comprador pode precisar aumentar a entrada, escolher um imóvel mais barato ou adiar a aquisição até que as condições de crédito se tornem mais favoráveis. Esse efeito, porém, não é igual para todas as famílias: é amortecido para quem acessa o crédito regulado (SFH), que em 2025 girava em torno de 10% ao ano, e sentido de forma bem mais intensa por quem depende do crédito de mercado (SFI), cujas taxas se aproximaram de 15% ao ano no mesmo período. Os dados confirmam essa dinâmica na prática: o número de unidades financiadas pela poupança SBPE, que havia crescido para 866 mil em 2021 sob juros baixos, recuou para 458 mil em 2025, acompanhando de perto o novo ciclo de alta da Selic. Dessa forma, as variações das taxas de juros afetam não apenas o custo do financiamento, mas também o próprio acesso das famílias ao mercado imobiliário, influenciando diretamente sua capacidade e decisão de compra, de maneira mais aguda para quem não tem acesso ao crédito regulado.
Cyrela, MRV, Direcional e Cury são as quatro maiores incorporadoras da B3 e, juntas, cobrem boa parte do espectro de renda do mercado residencial. Nelas, o choque de juros não gerou retração: lançamentos cresceram em três das quatro entre 2022 e 2025, e margens se recuperaram ou seguem em patamar recorde. Como isso foi possível?
Antes de olhar para essas quatro empresas, vale perguntar: o setor todo cresceu, ou só elas? A resposta é que ele cresceu junto. Em 2025 o Brasil lançou 453 mil unidades residenciais (+10,6% frente a 2024), somando R$ 292,3 bi em VGV (Abrainc-Fipe), recorde da série. O painel consolidado da Abrainc-Fipe (~20 companhias) expandiu ainda mais rápido, de R$ 37,0 bi (2022) para R$ 57,9 bi (2024) e R$ 69,9 bi (2025), quase dobrando em três anos. As quatro companhias analisadas oscilaram entre 59% e 65% desse painel no período, sem salto de concentração:
setor_df <- data.frame(
ano = factor(rep(c(2022, 2024, 2025), each = 2), levels = c(2022, 2024, 2025)),
segmento = factor(
rep(c("Resto do painel (~16 empresas)", "4 companhias analisadas"), times = 3),
levels = c("Resto do painel (~16 empresas)", "4 companhias analisadas")
),
valor = c(13.3, 23.7, 23.7, 34.2, 24.5, 45.4),
participacao = rep(c(64.1, 59.1, 65.0), each = 2)
)# ============================
# 5. Construção do gráfico
# ============================
anos_setor <- as.character(sort(unique(as.numeric(as.character(setor_df$ano)))))
grafico <- highchart() %>%
hc_chart(type = "column") %>%
hc_plotOptions(column = list(stacking = "normal")) %>%
hc_xAxis(categories = anos_setor) %>%
hc_add_series(
name = "Resto do painel (~16 empresas)",
data = setor_df$valor[setor_df$segmento == "Resto do painel (~16 empresas)"]
) %>%
hc_add_series(
name = "4 companhias analisadas",
data = setor_df$valor[setor_df$segmento == "4 companhias analisadas"]
)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Painel Abrainc-Fipe cresceu; as 4 companhias mantiveram a fatia",
subtitulo = "VGV total quase dobrou (R$ 37,0 bi para R$ 69,9 bi); as 4 empresas seguem entre 59% e 65% do painel",
texto_y = "R$ bi",
fonte = "Abrainc-Fipe"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoPor conta da alta taxa de juros e da dificuldade de crédito, o setor que mais se mostrou resiliente com o alto custo de financiamento foi o que faz referência a imóveis para o público de mais baixa renda, tais como os do MCMV(Minha Casa, Minha Vida) que apresentam um financiamento facilitado, taxas mais baixas e oferece incentivos fiscais aos construtores imobíliarios. O gráfico a seguir demonstra o aumento de participação de imóveis do MCMV a partir de 2022, com uma crescente demanda.
# Carrega a base de séries históricas Abrainc-Fipe e organiza as vendas por
# padrão (MAP, MCMV/CVA e Outros), agregadas por trimestre, além do total
# de unidades lançadas no mesmo período (usado como linha de referência).
# Procura a planilha (com qualquer sufixo, ex.: "_1") primeiro na pasta do
# .Rmd e em pasta_dados; se não achar, procura em Downloads, Área de
# Trabalho, OneDrive e Documentos do usuário.
padrao_abrainc <- "^series-historicas-abraincfipe.*\\.xlsx$"
perfil <- Sys.getenv("USERPROFILE")
locais <- unique(c(".", pasta_dados,
file.path(perfil, c("Downloads", "Desktop", "OneDrive", "Documents"))))
locais <- locais[dir.exists(locais)]
arq_abrainc <- unlist(lapply(locais, list.files, pattern = padrao_abrainc,
full.names = TRUE, recursive = TRUE))[1]
if (is.na(arq_abrainc)) {
stop("Planilha Abrainc-Fipe não encontrada. Coloque o arquivo ",
"series-historicas-abraincfipe.xlsx na mesma pasta deste .Rmd.")
}
serie_abrainc <- read_excel(
arq_abrainc,
sheet = "Indicadores Abrainc-Fipe",
col_names = FALSE,
skip = 6
)
serie_abrainc <- serie_abrainc %>%
select(2, 3, 8, 9, 10, 11) %>%
setNames(c("data", "lancadas_total", "vendidas_total",
"vendidas_MAP", "vendidas_MCMV", "vendidas_outros")) %>%
mutate(
data = as.Date(data),
across(-data, ~ suppressWarnings(as.numeric(.x))) # "-" vira NA
) %>%
filter(!is.na(data)) %>%
mutate(trimestre = floor_date(data, "quarter"))
# só mantém trimestres com dado de padrão nos 3 meses (evita trimestre truncado)
trimestres_completos <- serie_abrainc %>%
group_by(trimestre) %>%
summarise(n_meses = sum(!is.na(vendidas_MAP)), .groups = "drop") %>%
filter(n_meses == 3) %>%
pull(trimestre)
mcmv_trimestre_df <- serie_abrainc %>%
filter(trimestre %in% trimestres_completos) %>%
group_by(trimestre) %>%
summarise(
lancadas_total = sum(lancadas_total, na.rm = TRUE),
vendidas_MAP = sum(vendidas_MAP, na.rm = TRUE),
vendidas_MCMV = sum(vendidas_MCMV, na.rm = TRUE),
vendidas_outros = sum(vendidas_outros, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(trimestre) %>%
mutate(rotulo = paste0(quarter(trimestre), "T", format(trimestre, "%y")))# ============================
# 5. Construção do gráfico
# ============================
grafico <- highchart() %>%
hc_chart(type = "area") %>%
hc_plotOptions(area = list(stacking = "normal")) %>%
hc_xAxis(categories = mcmv_trimestre_df$rotulo) %>%
hc_add_series(name = "Minha Casa Minha Vida / CVA", data = mcmv_trimestre_df$vendidas_MCMV) %>%
hc_add_series(name = "Médio e Alto Padrão (MAP)", data = mcmv_trimestre_df$vendidas_MAP) %>%
hc_add_series(name = "Outros empreendimentos", data = mcmv_trimestre_df$vendidas_outros) %>%
hc_add_series(
name = "Total de unidades lançadas",
data = mcmv_trimestre_df$lancadas_total,
type = "line",
color = "#111827"
)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Vendas por padrão imobiliário vs. total de lançamentos",
subtitulo = "Unidades vendidas por padrão (MAP, MCMV/CVA e Outros) e total de unidades lançadas, por trimestre (1T15-1T26)",
texto_y = "unidades",
fonte = "Abrainc-Fipe"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoA série confirma o padrão: o MCMV/CVA(Casa Verde e Amarela) é o segmento mais vendido em todos os trimestres da série (desde 2015) e sua participação nas vendas totais, que havia recuado para 67% em 2022, no pico do primeiro ciclo de alta da Selic (13,75% a.a.), voltou a subir de forma consistente logo em seguida, 75% (2024), 80% (2025) e mais de 83% no início de 2026 -, mesmo com o total de lançamentos também em expansão no período. O padrão médio e alto (MAP), mais dependente do crédito de mercado, é justamente o que perde espaço relativo nesse movimento.
O mix de produto das quatro incorporadoras também respondeu ao ciclo, mas pelo lado da oferta, não do financiamento ao consumidor. Os programas de crédito subsidiado (FGTS/MCMV) ficam para uma análise futura dedicada; aqui o foco é a decisão da própria empresa. A Cyrela é o caso mais claro de realocação deliberada, migrando o banco de terrenos do alto padrão para o segmento elegível ao crédito subsidiado em apenas dois anos:
cyrela_mix_df <- data.frame(
periodo = factor(rep(c("4T23", "4T25"), times = 2), levels = c("4T23", "4T25")),
segmento = rep(c("Alto padrão", "MCMV"), each = 2),
percentual = c(91.3, 58.6, 3.1, 28.3)
)# ============================
# 5. Construção do gráfico
# ============================
grafico <- highchart() %>%
hc_chart(type = "column") %>%
hc_xAxis(categories = levels(cyrela_mix_df$periodo)) %>%
hc_add_series(
name = "Alto padrão",
data = cyrela_mix_df$percentual[cyrela_mix_df$segmento == "Alto padrão"]
) %>%
hc_add_series(
name = "MCMV",
data = cyrela_mix_df$percentual[cyrela_mix_df$segmento == "MCMV"]
)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Cyrela: realocação do banco de terrenos por segmento",
subtitulo = "Decisão de portfólio da empresa, não o financiamento ao consumidor final",
texto_y = "%",
fonte = "Cyrela (releases de resultados)"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoMRV e Direcional seguem na mesma direção, mas de uma base já concentrada: mantêm praticamente todos os lançamentos no público elegível a crédito subsidiado desde antes do ciclo de alta.
Poupança, LCI(Letra de Crédito Imobiliário) e CRI(Certificado de Recebíveis Imobiliários) não afetam todos os compradores da mesma forma. O crédito via FGTS/MCMV segue protegido da Selic por taxas subsidiadas e desconto em folha, o que explica por que o volume financiado seguiu crescendo mesmo com juros elevados. Já o funding do crédito de mercado (SBPE) está prestes a mudar de regra. Hoje, 65% dos depósitos de poupança do SBPE vão obrigatoriamente para crédito imobiliário, 20% ficam retidos como compulsório no Banco Central e 15% são de livre aplicação pelos bancos. A partir de 2027, um novo modelo do CMN reduz gradualmente esse compulsório, cerca de 5 p.p. já no primeiro ano e mais 1,5 p.p. ao ano até a extinção, desde que o valor liberado também vá para o setor. No limite, a poupança converge para quase 100% direcionada ao crédito imobiliário, o que o governo estima poder injetar cerca de R$ 111 bilhões adicionais em financiamento habitacional.
À primeira vista isso parece só uma boa notícia: mais poupança carimbada para o setor, não menos. O problema é que a poupança está estagnada como base de captação e perde recursos num ritmo cada vez maior. Em junho de 2025 o estoque somava R$ 762 bi, no mesmo patamar de um ano antes, e a captação líquida foi negativa em quatro dos últimos cinco anos (ANBIMA/InfoMoney). Com a Selic elevada, ela perde feio em rentabilidade para CDB, Tesouro Direto e a própria LCI, e o dinheiro migra para outras fontes de funding. No mix completo de jun/2025, instrumentos de mercado como LCI, FII(Fundo de Investimento Imobiliário) e CRI já respondem por quase 40% do funding imobiliário total (R$ 2,52 tri):
funding_df <- data.frame(
instrumento = factor(
c("Poupança (SBPE)", "FGTS", "LCI", "FII", "CRI"),
levels = c("Poupança (SBPE)", "FGTS", "LCI", "FII", "CRI")
),
valor = c(762, 656, 473, 272, 239),
grupo = c(
"Funding tradicional", "Funding tradicional",
"Mercado de capitais", "Mercado de capitais", "Mercado de capitais"
),
crescimento = c("estável (0%)", "n.d.", "+30% a.a.", "+10% a.a.", "+15% a.a.")
)# ============================
# 5. Construção do gráfico
# ============================
ordem_funding <- funding_df$instrumento[order(funding_df$valor)]
funding_df <- funding_df[order(funding_df$valor), ]
trad_vals <- ifelse(funding_df$grupo == "Funding tradicional", funding_df$valor, NA)
mercado_vals <- ifelse(funding_df$grupo == "Mercado de capitais", funding_df$valor, NA)
grafico <- highchart() %>%
hc_chart(type = "bar") %>%
hc_xAxis(categories = as.character(ordem_funding)) %>%
hc_add_series(name = "Funding tradicional", data = trad_vals) %>%
hc_add_series(name = "Mercado de capitais", data = mercado_vals)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "De onde vem o funding do crédito imobiliário (jun/2025)",
subtitulo = "Poupança estagnada; LCI, FII e CRI crescem de dois dígitos ao ano",
texto_y = "R$ bi",
fonte = "ANBIMA, InfoMoney e Banco Central do Brasil"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoEssa migração não é recente: o estoque de títulos ligados ao crédito imobiliário (CRI, LCI, Letra Hipotecária e Letra Imobiliária Garantida) já vem em trajetória de alta desde 2021-2022, bem antes de a poupança começar a perder fôlego com a força que perde hoje:
titulos_df <- data.frame(
data = rep(as.Date(c(
"2014-04-01", "2015-02-01", "2016-02-01", "2017-02-01", "2018-02-01",
"2019-02-01", "2020-02-01", "2021-02-01", "2022-02-01", "2023-02-01",
"2024-02-01", "2025-02-01"
)), times = 4),
instrumento = factor(
rep(c("LCI", "LIG", "CRI", "LH"), each = 12),
levels = c("LH", "CRI", "LIG", "LCI")
),
valor = c(
123, 168, 188, 173, 188, 128, 108, 88, 128, 188, 248, 283,
0, 0, 0, 0, 0, 10, 20, 30, 50, 85, 115, 140,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
)
)# ============================
# 5. Construção do gráfico
# ============================
anos_titulos <- format(sort(unique(titulos_df$data)), "%Y")
instrumentos_titulos <- c("LH", "CRI", "LIG", "LCI")
grafico <- highchart() %>%
hc_chart(type = "area") %>%
hc_plotOptions(area = list(stacking = "normal")) %>%
hc_xAxis(categories = anos_titulos)
for (inst in instrumentos_titulos) {
serie <- titulos_df[titulos_df$instrumento == inst, ]
serie <- serie[order(serie$data), ]
grafico <- grafico %>%
hc_add_series(name = inst, data = serie$valor)
}
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Estoque de títulos ligados ao crédito imobiliário",
subtitulo = "Leitura do painel do Banco Central",
texto_y = "R$ bi",
fonte = "Banco Central do Brasil"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoO LCI segue como o maior componente desse estoque, mas o LIG (Letra Imobiliária Garantida, mais recente) ganhou espaço rápido desde 2019. Diferente da poupança, que capta de uma base cativa, esses títulos pagam taxa competitiva de mercado: a LCI acelerou de +13% (2024) para +31% ao ano (2025) e já responde por 12% da captação do Sistema Financeiro Nacional (dez/2025).
Para o incorporador, isso significa depender cada vez mais do apetite de investidores de mercado, e não de uma base cativa de poupadores. A análise técnica que acompanhou a nova regra (FGV/IBRE) já aponta o risco: o descasamento entre os prazos dos financiamentos, de até 35 anos, e os papéis que os financiarão “não é desprezível, sendo potencialmente maior” do que o histórico com a poupança. Uma LCI costuma vencer em 5 a 7 anos, prazo bem mais curto, o que tende a pesar justamente quando o crédito está mais escasso e caro.
Com o funding (fontes de recursos utilizadas pelos bancos e empresas para financiar suas operações e conceder crédito imobiliário) cada vez mais dependente de mercado de capitais, cabe uma pergunta natural: os bancos estão assumindo mais risco no crédito imobiliário, na mesma proporção em que a inadimplência sobe no sistema? Os dados apontam o contrário. Segundo o Banco Safra (maio de 2026), a deterioração está concentrada em outras modalidades: cartão de crédito (9,5%, rotativo em 63%), crédito pessoal (10,5%), consignado privado (7,9%) e agronegócio (7,6%, mais que dobrou em doze meses). O crédito imobiliário, na mesma análise, é o segmento “robusto” do sistema, com expansão anual de 12,7% e sem sinal de piora, o oposto do padrão nas demais modalidades.
Essa robustez não é nova: segundo a Abecip, a inadimplência do SBPE fechou 2024 em 1,0%, o menor patamar desde 2006, beneficiada pela garantia real do próprio imóvel (alienação fiduciária) e, na fatia via FGTS/MCMV, pelo desconto em folha. A inadimplência geral do sistema, por comparação, fechou em 4,7%, alta de mais de 1 p.p. em doze meses:
inadimplencia_segmentos_df <- data.frame(
segmento = factor(
c("Imobiliário (SBPE)", "Sistema geral", "Agronegócio",
"Consignado privado", "Cartão de crédito", "Crédito pessoal"),
levels = c("Imobiliário (SBPE)", "Sistema geral", "Agronegócio",
"Consignado privado", "Cartão de crédito", "Crédito pessoal")
),
inadimplencia = c(1.0, 4.7, 7.6, 7.9, 9.5, 10.5),
periodo = c("2024", "mai/2026", "mai/2026", "mai/2026", "mai/2026", "mai/2026"),
grupo = c("Imobiliário", "Sistema geral", "Demais modalidades",
"Demais modalidades", "Demais modalidades", "Demais modalidades")
)# ============================
# 5. Construção do gráfico
# ============================
categorias_inad <- levels(inadimplencia_segmentos_df$segmento)
imob_vals <- ifelse(inadimplencia_segmentos_df$grupo == "Imobiliário",
inadimplencia_segmentos_df$inadimplencia, NA)
sistema_vals <- ifelse(inadimplencia_segmentos_df$grupo == "Sistema geral",
inadimplencia_segmentos_df$inadimplencia, NA)
demais_vals <- ifelse(inadimplencia_segmentos_df$grupo == "Demais modalidades",
inadimplencia_segmentos_df$inadimplencia, NA)
grafico <- highchart() %>%
hc_chart(type = "column") %>%
hc_xAxis(categories = categorias_inad) %>%
hc_add_series(name = "Imobiliário", data = imob_vals) %>%
hc_add_series(name = "Sistema geral", data = sistema_vals) %>%
hc_add_series(name = "Demais modalidades", data = demais_vals)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "Inadimplência por modalidade de crédito",
subtitulo = "Imobiliário (2024, Abecip) segue o menor patamar; demais modalidades, mai/2026 (Safra)",
texto_y = "%",
fonte = "Abecip e Banco Safra"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoNa prática, a hipótese de bancos elevando o risco no crédito habitacional não se sustenta nos dados: o segmento seguiu como o canto mais seguro do balanço bancário mesmo com a Selic elevada. Isso ajuda a explicar por que o funding imobiliário cresceu (mais de 680 mil imóveis financiados no 1S26, Abecip) apesar do aperto geral de crédito. O risco discutido antes, o descasamento de prazos entre poupança/LCI e financiamento imobiliário, é estrutural e de funding, não um sinal de crédito pior.
As peças do lado da empresa, aliás, se encaixam bem: menos capital parado em terrenos reduz o custo de oportunidade do balanço, e a realocação de portfólio concentra lançamentos no segmento menos sensível à Selic. O setor como um todo acompanhou esse fôlego, sinal de que a demanda por crédito habitacional seguiu firme mesmo com a Selic elevada.
Falta ainda um terceiro ator nessa equação: o sistema financeiro que origina e distribui o crédito. A poupança segue majoritariamente carimbada para o setor, e deve ficar ainda mais concentrada a partir de 2027, mas seu estoque está estagnado, o que empurra o funding para instrumentos como a LCI, de prazos mais curtos do que o financiamento que sustentam. É um risco de descasamento de prazos, não de qualidade de crédito: a inadimplência imobiliária segue a mais baixa do sistema. A resiliência das quatro incorporadoras não veio apesar desse sistema financeiro: veio de um sistema que, mesmo mais dependente de captação de mercado, manteve o crédito habitacional como seu segmento mais seguro.
Fechando com o retrato agregado: desde 2017, o painel de grandes incorporadoras (Abrainc-Fipe, valores reais) cresceu de forma consistente, mesmo atravessando dois ciclos completos de queda e alta da Selic:
paradoxo_df <- data.frame(
ano = rep(2017:2025, times = 2),
serie = factor(
rep(c("Selic (Brasil)", "VGV do painel Abrainc-Fipe"), each = 9),
levels = c("Selic (Brasil)", "VGV do painel Abrainc-Fipe")
),
indice = c(
100, 92.86, 64.29, 28.57, 132.14, 196.43, 167.86, 175.00, 214.29,
100, 145.07, 140.38, 131.46, 204.23, 177.93, 210.33, 256.81, 337.09
)
)# ============================
# 5. Construção do gráfico
# ============================
anos_paradoxo <- as.character(sort(unique(paradoxo_df$ano)))
selic_vals <- paradoxo_df$indice[paradoxo_df$serie == "Selic (Brasil)"][
order(paradoxo_df$ano[paradoxo_df$serie == "Selic (Brasil)"])
]
vgv_vals <- paradoxo_df$indice[paradoxo_df$serie == "VGV do painel Abrainc-Fipe"][
order(paradoxo_df$ano[paradoxo_df$serie == "VGV do painel Abrainc-Fipe"])
]
grafico <- highchart() %>%
hc_chart(type = "line") %>%
hc_xAxis(categories = anos_paradoxo) %>%
hc_add_series(name = "Selic (Brasil)", data = selic_vals) %>%
hc_add_series(name = "VGV do painel Abrainc-Fipe", data = vgv_vals)
# ============================
# 6. Aplicação da formatação
# ============================
grafico <- grafico %>%
hc_formatar_padrao(
titulo = "O setor cresceu mais rápido do que os juros, mesmo com dois ciclos completos de alta",
subtitulo = "Índices (2017 = 100). Selic nominal; VGV do painel Abrainc-Fipe em valores reais (Fipe/Abrainc, jan/2026)",
texto_y = "pts",
fonte = "Banco Central do Brasil e Abrainc-Fipe"
)
# ============================
# 7. Exibição do gráfico
# ============================
graficoEntre 2017 e 2025, a Selic passou por dois ciclos de alta, mas o VGV(Valor Geral de Vendas) do painel de incorporadoras terminou o período mais de 3x maior, contra pouco mais do que o dobro da Selic nominal no mesmo intervalo. Esse descolamento não é acaso. Cyrela, MRV e Direcional concentraram-se no público elegível ao crédito subsidiado, acompanhando um mercado em que o MCMV/CVA, depois de recuar a 67% das vendas em 2022, voltou a superar 83% em 2026. Ajudou também o fato de o crédito imobiliário ter permanecido o segmento mais seguro do sistema financeiro: com inadimplência de apenas 1,0% no SBPE em 2024, frente a 4,7% do sistema geral, bancos e investidores mantiveram o apetite por financiar o setor mesmo com juros elevados. O funding, por sua vez, se reinventou, já que LCI, CRI e FII cobrem hoje quase 40% do financiamento imobiliário, compensando uma poupança estagnada, ainda que às custas de um descasamento de prazos que a regra de 2027 deve tornar mais sensível. No fim, as incorporadoras não driblaram os juros altos: encontraram, dentro do próprio setor, o terreno mais blindado contra eles.
A análise mostra que os juros afetam de forma bem diferente o consumidor e a incorporadora. Para o consumidor, juros mais altos encarecem o financiamento e reduzem a capacidade de compra, dificultando o acesso ao crédito habitacional. Já as incorporadoras não sofreram uma retração generalizada nesse período, e essa resistência tem explicações concretas.
Primeiro, o setor se voltou cada vez mais para o segmento MCMV/CVA, que depende pouco da Selic e sustentou boa parte das vendas. Segundo, o funding se diversificou: enquanto poupança e FGTS estagnaram, LCI, CRI e FII ganharam espaço como fonte de recursos. Terceiro, esse crescimento não trouxe mais risco ao sistema, já que o crédito imobiliário continua com a menor inadimplência entre todas as modalidades de crédito no Brasil.
Assim, não dá para tratar a relação entre juros e mercado imobiliário como algo direto e único para todos os agentes. O consumidor sente o impacto de forma mais imediata, enquanto as incorporadoras conseguiram se adaptar mudando o público-alvo e as fontes de financiamento. Os juros altos seguem sendo uma restrição real para o setor, mas o efeito depende de quem está do outro lado da operação.
*
ABECIP. DATA ABECIP: dezembro de 2020. Associação Brasileira das Entidades de Crédito Imobiliário e Poupança, dez. 2020. Disponível em: https://www.abecip.org.br/admin/assets/uploads/anexos/data-abecip-2020-12.pdf. Acesso em: 14 set. 2026.
ABECIP. DATA ABECIP: dezembro de 2024. Associação Brasileira das Entidades de Crédito Imobiliário e Poupança, dez. 2024. Disponível em: https://www.abecip.org.br/admin/assets/uploads/anexos/data-abecip-2024-12.pdf. Acesso em: 14 set. 2026.
ABECIP. DATA ABECIP: dezembro de 2025. Associação Brasileira das Entidades de Crédito Imobiliário e Poupança, dez. 2025. Disponível em: https://www.abecip.org.br/admin/assets/uploads/anexos/data-abecip-2025-12-novo.pdf. Acesso em: 14 set. 2026.
BANCO CENTRAL DO BRASIL. Concessões de crédito com recursos direcionados — pessoas físicas — financiamento imobiliário (série 20703). Dados Abertos BCB. Disponível em: https://dadosabertos.bcb.gov.br/dataset/20703-concessoes-de-credito-com-recursos-direcionados---pessoas-fisicas---financiamento-imobiliario. Acesso em: 14 set. 2026.
BANCO CENTRAL DO BRASIL. Concessões de crédito com recursos direcionados — pessoas físicas — financiamento imobiliário (série 20702). Dados Abertos BCB. Disponível em: https://dadosabertos.bcb.gov.br/dataset/20702-concessoes-de-credito-com-recursos-direcionados---pessoas-fisicas---financiamento-imobiliario. Acesso em: 14 set. 2026.
BANCO CENTRAL DO BRASIL. Taxa média de juros das operações de crédito com recursos direcionados — pessoas físicas — financiamento imobiliário (série 20773). Dados Abertos BCB. Disponível em: https://dadosabertos.bcb.gov.br/dataset/20773-taxa-media-de-juros-das-operacoes-de-credito-com-recursos-direcionados---pessoas-fisicas---fi. Acesso em: 14 set. 2026.
BANCO CENTRAL DO BRASIL. Taxa média de juros das operações de crédito com recursos direcionados — pessoas físicas — financiamento imobiliário (série 20772). Dados Abertos BCB. Disponível em: https://dadosabertos.bcb.gov.br/dataset/20772-taxa-media-de-juros-das-operacoes-de-credito-com-recursos-direcionados---pessoas-fisicas---fi. Acesso em: 14 set. 2026.
BANCO CENTRAL DO BRASIL. Taxa de juros — meta Selic definida pelo Copom (série 432). Dados Abertos BCB. Disponível em: https://dadosabertos.bcb.gov.br/dataset/432-taxa-de-juros---meta-selic-definida-pelo-copom. Acesso em: 14 set. 2026.
FUNDAÇÃO GETULIO VARGAS - IBRE. Sobre o novo modelo de crédito imobiliário. Blog do IBRE, 18 nov. 2025. Disponível em: https://blogdoibre.fgv.br/posts/sobre-o-novo-modelo-de-credito-imobiliario. Acesso em: 14 set. 2026.
ANBIMA. Estatísticas de captação líquida da poupança. Associação Brasileira das Entidades dos Mercados Financeiro e de Capitais. Disponível em: https://www.anbima.com.br. Acesso em: 14 set. 2026.
BANCO SAFRA. Análises Safra: crédito e inadimplência. O Especialista, Banco Safra. Disponível em: https://oespecialista.safra.com.br/analises-safra/. Acesso em: 14 set. 2026.