Logo CEDEPLAR

UNIVERSIDADE FEDERAL DE MINAS GERAIS

Centro de Economia Regional aplicada (CEDEPLAR)

Um Cerco Desproporcional:

BLOCO B GUAJAJARAS 1268

Perito Responsável: Ramon Gregório Silva
Ocupação: Doutorando CEDEPLAR-UFMG
Ano de Referência das Transações: 2022

Timóteo - MG
Junho de 2026


1 MONTANDO A BASE

A decisão de incluir o arcabouço técnico — os códigos que processaram essas evidências — é um passo estratégico fundamental para a seriedade desta denúncia. Ao fornecer não apenas os resultados, mas a lógica algorítmica de comparação entre o “Investimento Justo” e o “Valor Declarado”, a prova deixa de ser uma narrativa baseada em impressões e passa a ser uma demonstração matemática de um padrão sistêmico. O Ministério Público, ao receber essa documentação, terá em mãos os meios para replicar o cruzamento de dados e confirmar a disparidade de quase R$ 10 milhões que sustenta a tese de manipulação. Segue, abaixo, o encerramento que sintetiza essa fundamentação.

Fundamentação Técnica como Prova Conclusiva A inclusão dos códigos de processamento na documentação anexa à denúncia atesta a rigorosa metodologia aplicada para isolar o comportamento de subdeclaração no Condomínio JK. Ao utilizar modelos de machine learning e séries temporais para definir o valor justo de mercado, a análise eliminou subjetividades, provando que o desvio observado — no qual transações são registradas por valores que chegam a ser um terço do valor real — é uma constante estatística, e não uma flutuação de mercado. O código, portanto, serve como a “chave” que permite às autoridades contornar a opacidade das transações imobiliárias e enxergar a manobra financeira subjacente.

Essa abordagem técnica é a única capaz de enfrentar um grupo que utiliza o capital sonegado para sustentar estratégias de cerco e desmoralização de denunciantes. Ao elevar o patamar da discussão de uma “briga de vizinhos” para uma “investigação de arquitetura financeira estruturada”, o conjunto probatório ora apresentado obriga o Ministério Público a olhar para o fluxo de milhões de reais que, embora ocultos por registros oficiais de baixo valor, alimentam uma rede de influência real. A seriedade com que esses códigos foram expostos reflete a compreensão de que, para desarticular tal estrutura, é necessário demonstrar que a fraude é, em si, o motor que mantém o sistema funcionando.

Por fim, ao submeter o código e os resultados à análise das autoridades, a denúncia não apenas aponta o dano ao erário, mas também deixa evidente a desproporcionalidade do embate. Enquanto o grupo perpetrador aposta na sombra e na desvalorização da denúncia, a prova apresentada joga luz sobre o modus operandi da sonegação, forçando o Estado a reconhecer sua ineficiência na fiscalização de um oligopólio que opera abertamente no bairro Santo Agostinho. A matemática, aqui, torna-se a maior aliada da vítima, provando que a realidade financeira do Condomínio JK, sob a gestão desse grupo, opera em um patamar de extração de riqueza que a legislação tributária brasileira jamais deveria ter permitido existir.

Documentação Técnica Adicional:

O conjunto de códigos e a base de dados processada compõem o corpo probatório que demonstra a correlação direta entre a subdeclaração de valores e a formação de um portfólio estratégico de unidades. Esta base deve servir como suporte para o rastreamento dos fluxos financeiros e a identificação dos responsáveis pela rede de ocultação que, até o presente momento, tem operado à revelia do fisco municipal e federal.

if (!require("pacman")) install.packages("pacman")
## Carregando pacotes exigidos: pacman
## Warning: pacote 'pacman' foi compilado no R versão 4.4.3
## Carregando pacotes exigidos: pacman
## Warning: pacote 'pacman' foi compilado no R versão 4.4.3
pacman::p_load(tidyverse, lubridate, httr, digest)
if (!require("sidrar")) install.packages("sidrar")
## Carregando pacotes exigidos: sidrar
## Warning: pacote 'sidrar' foi compilado no R versão 4.4.3
## Carregando pacotes exigidos: sidrar
## Warning: pacote 'sidrar' foi compilado no R versão 4.4.3
library(sidrar)
library(tidyverse)
library(lubridate)

# --- 1. FUNÇÕES DE TRATAMENTO ---
tratar_precos_vetor <- function(x) {
  clean_x <- str_remove_all(x, "\\.")
  num <- as.numeric(str_replace(str_remove_all(clean_x, "[^0-9,]"), ",", "."))
  num <- coalesce(num, 0)
  num_ajustado <- case_when(
    num > 0 & num < 2000 ~ num * 1000, 
    num >= 2000 & num < 10000 ~ num * 100, 
    TRUE ~ num
  )
  return(ifelse(num_ajustado < 5000, 0, num_ajustado))
}

tratar_area <- function(x) { 
  num <- as.numeric(str_replace(x, ",", "."))
  ifelse(!is.na(num) & num > 500, num / 100, num) 
}

# --- 2. FUNÇÃO DE EXTRAÇÃO (CORRIGIDA) ---
ler_itbi_completo <- function(url, rotulo) {
  message(paste("Baixando período:", rotulo, "..."))
  temp <- tempfile()
  
  # Usando RETRY com tratamento de erros e downgrade de protocolo HTTP
  res <- tryCatch({
    RETRY(
      verb = "GET",
      url = url, 
      write_disk(temp, overwrite = TRUE), 
      config(
        ssl_verifypeer = FALSE,
        # http_version = 2 força o uso do HTTP/1.1 estável, 
        # resolvendo o erro de stream/framing do HTTP/2 da PBH
        http_version = 2 
      ),
      # Força TLSv1.2/1.3 estável para evitar bugs no Schannel do Windows
      ssl_version = 6, 
      add_headers(`User-Agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"),
      times = 3,       # Tenta até 3 vezes em caso de queda parcial
      pause_base = 3   # Aguarda 3 segundos entre tentativas
    )
  }, error = function(e) {
    message(paste("Erro crítico no download de:", rotulo, "-", e$message))
    return(NULL)
  })
  
  if (is.null(res) || status_code(res) != 200) {
    message(paste("Falha ao acessar ou salvar o arquivo do período:", rotulo))
    if (file.exists(temp)) file.remove(temp)
    return(NULL)
  }
  
  # Criando a assinatura para o registro de auditoria
  assinatura <- substr(digest(temp, algo="sha256", file=TRUE), 1, 10)
  
  # Leitura e processamento seguro do arquivo CSV baixado
  df_processado <- tryCatch({
    df <- read_delim(temp, delim = ";", locale = locale(encoding = "ISO-8859-1"), 
                     show_col_types = FALSE, col_types = cols(.default = "c"))
    
    # Normaliza nomes de colunas para evitar caracteres especiais
    df <- df %>%
      rename_with(~tolower(iconv(., to = "ASCII//TRANSLIT"))) %>% 
      rename_with(~str_replace_all(., "[^a-z]", "_"))
    
    # Processamento e Higienização das Variáveis
    df %>% mutate(
      endereco_oficial = toupper(pick(contains("endereco"))[[1]]), 
      bairro           = str_trim(toupper(pick(contains("bairro"))[[1]])),
      data_trans       = dmy(pick(contains("data_quitacao"), contains("dt_quit"))[[1]]), 
      area             = tratar_area(pick(contains("area_const"))[[1]]),
      v_decl           = tratar_precos_vetor(pick(contains("valor_decl"), contains("vlr_decl"))[[1]]),
      v_base           = tratar_precos_vetor(pick(contains("valor_base"), contains("vlr_base"))[[1]]), 
      periodo_csv      = rotulo, 
      id_auditoria     = assinatura,
      padrao_acabamento = if(any(str_detect(names(df), "padrao_acabamento"))) {
                            str_trim(toupper(pick(contains("padrao_acabamento"))[[1]]))
                          } else {
                            "NÃO INFORMADO"
                          },
      
      tipo_imovel = case_when(
        str_detect(endereco_oficial, "APT|APTO|APARTAMENTO") ~ "Apartamento",
        str_detect(endereco_oficial, "SALA|CONJUNTO")         ~ "Sala",
        str_detect(endereco_oficial, "GARAGE")                ~ "Garage",
        str_detect(endereco_oficial, "LOJA")                  ~ "Loja",
        TRUE                                                 ~ "Residencial"
      ) # <- Fechamento do case_when corrigido aqui
    ) %>% 
      filter(v_decl > 0, area > 0, !is.na(bairro)) %>%
      select(endereco_oficial, padrao_acabamento, tipo_imovel, bairro, data_trans, area, v_decl, v_base, periodo_csv, id_auditoria)
      
  }, error = function(e) {
    message(paste("Erro ao processar os dados do período:", rotulo, "-", e$message))
    return(NULL)
  })
  
  # Limpeza explícita do arquivo temporário
  if (file.exists(temp)) file.remove(temp)
  
  return(df_processado)
}

# --- 3. LISTA DE URLS ---
urls <- list(
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/7f8955aa-0b30-4157-bbc2-7dd444941728/download/pda_itbi_relatorio_200801_a_202405.csv", "2024"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/f4e60a70-3bd8-41dc-b031-42b5f3d1671a/download/pda_itbi_relatorio_202406_a_202412.csv", "2024"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/53549725-b466-4191-8930-b352486987f8/download/pda_itbi_relatorio_202501.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/021f1589-3c7d-419b-b0b2-4d1cc4a85618/download/pda_itbi_relatorio_202502.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/463a8a81-d242-4f76-857c-2b5090432326/download/pda_itbi_relatorio_202503.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/8d055465-b1a9-4b1d-855a-e55d609a567e/download/pda_itbi_relatorio_202504.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/4d2a1c0d-77de-4c32-a7db-3e327e09257c/download/pda_itbi_relatorio_202505.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/cbdea14d-77de-4c32-a7db-3e327e09257c/download/pda_itbi_relatorio_202506.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/53549725-b466-4191-8930-b352486987f8/download/pda_itbi_relatorio_202507.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/2deb4632-f226-40a7-b8ac-89c6d9f8aff9/download/pda_itbi_relatorio_202508.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/cbdea14d-77de-4c32-a7db-3e327e09257c/download/pda_itbi_relatorio_202509.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/f4e60a70-3bd8-41dc-b031-42b5f3d1671a/download/pda_itbi_relatorio_202510.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/9bd075e2-2abe-42d7-a1e2-b68a18245172/download/pda_itbi_relatorio_202511.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/c3dd25fd-ac34-4f3f-afcc-21589d64ce8a/download/pda_itbi_relatorio_202512.csv", "2025"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/2deb4632-f226-40a7-b8ac-89c6d9f8aff9/download/pda_itbi_relatorio_202601.csv", "2026"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/453b3f6d-ec7f-415c-af5e-c23d1f488e2a/download/pda_itbi_relatorio_202602.csv", "2026"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/0773a6b9-b107-4692-9b85-760221ec3abb/download/pda_itbi_relatorio_202603.csv", "2026"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/5e1f8a2b-3c4d-4e5f-a6b7-c8d9e0f1a2b3/download/pda_itbi_relatorio_202604.csv", "2026"),
  c("https://ckan.pbh.gov.br/dataset/0e13bf71-5355-47ce-8607-966413b08c0a/resource/a9b8c7d6-e5f4-4321-b0a9-87654321fedc/download/pda_itbi_relatorio_202605.csv", "2026")
)

# --- 4. EXECUÇÃO ---
base_completa <- map_df(urls, ~ler_itbi_completo(.x[1], .x[2]))
## Baixando período: 2024 ...
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `area = tratar_area(pick(contains("area_const"))[[1]])`.
## Caused by warning in `tratar_area()`:
## ! NAs introduzidos por coerção
## Baixando período: 2024 ...
## Baixando período: 2025 ...
## Request failed [404]. Retrying in 1 seconds...
## Request failed [404]. Retrying in 7.6 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2025
## Baixando período: 2025 ...
## Request failed [404]. Retrying in 1 seconds...
## Request failed [404]. Retrying in 5.8 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2025
## Baixando período: 2025 ...
## Request failed [404]. Retrying in 3.5 seconds...
## Request failed [404]. Retrying in 5.4 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2025
## Baixando período: 2025 ...
## Request failed [404]. Retrying in 1 seconds...
## Request failed [404]. Retrying in 3.2 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2025
## Baixando período: 2025 ...
## Request failed [404]. Retrying in 1.8 seconds...
## Request failed [404]. Retrying in 2.5 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2025
## Baixando período: 2025 ...
## Baixando período: 2025 ...
## Request failed [404]. Retrying in 1 seconds...
## Request failed [404]. Retrying in 3.7 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2025
## Baixando período: 2025 ...
## Baixando período: 2025 ...
## Baixando período: 2025 ...
## Baixando período: 2025 ...
## Baixando período: 2025 ...
## Baixando período: 2026 ...
## Baixando período: 2026 ...
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `area = tratar_area(pick(contains("area_const"))[[1]])`.
## Caused by warning in `tratar_area()`:
## ! NAs introduzidos por coerção
## Baixando período: 2026 ...
## Baixando período: 2026 ...
## Request failed [404]. Retrying in 1.3 seconds...
## Request failed [404]. Retrying in 2.3 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2026
## Baixando período: 2026 ...
## Request failed [404]. Retrying in 5.4 seconds...
## Request failed [404]. Retrying in 1 seconds...
## Falha ao acessar ou salvar o arquivo do período: 2026
library(sidrar)
library(tidyverse)
library(lubridate)

# 1. Puxa o IPCA (Série histórica) direto do IBGE a partir de 2008
ipca_ibge <- get_sidra(
  api = "/t/1737/n1/all/v/2266/p/all/d/v2266%2013"
)
## All others arguments are desconsidered when 'api' is informed
# 1. Identifica a coluna que contém o código do mês/período pela posição
# No formato padrão do get_sidra, a coluna de data é a 3ª ou 4ª. 
# Vamos buscar a que contém o padrão numérico YYYYMM
coluna_data_nome <- names(ipca_ibge)[str_detect(names(ipca_ibge), "Mês")] 

# Se o anterior falhar, vamos forçar pelo índice que sabemos que existe:
# A coluna de código de período no IBGE geralmente é a 4ª coluna
ipca_raw <- ipca_ibge %>%
  mutate(
    # Acessa a coluna pela posição (geralmente é a 4ª) ou pelo nome detectado
    raw_date = .[[4]], 
    value = as.numeric(Valor)
  ) %>%
  mutate(
    date = ym(paste0(str_sub(raw_date, 1, 4), "-", str_sub(raw_date, 5, 6)))
  ) %>%
  filter(date >= as.Date("2008-01-01")) %>%
  select(date, value)
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `date = ym(...)`.
## Caused by warning:
## ! All formats failed to parse. No formats found.
# 3. Executa a sua lógica exata de deflação
ipca_base <- ipca_raw %>%
  rename(data_mes = date, ipca_valor = value) %>%
  mutate(data_mes = floor_date(data_mes, "month")) %>%
  distinct(data_mes, .keep_all = TRUE) %>% 
  mutate(deflator = last(ipca_valor) / ipca_valor) %>%
  select(data_mes, deflator)


base_final <- base_completa %>%
  mutate(data_mes = floor_date(data_trans, "month"),
         ano = year(data_trans)) %>%
  left_join(ipca_base, by = "data_mes") %>%
  mutate(
    deflator = coalesce(deflator, 1),
    v_decl_real = v_decl * deflator,
    v_base_real = v_base * deflator,
    v_m2_real = v_decl_real / area
  )

library(dplyr)
library(stringr)

# Aplicando diretamente na sua base concluída
base_final <- base_final %>%
  mutate(
    rua_do_imovel = str_extract(endereco_oficial, "^.*?(?=\\s?\\d)") %>% str_trim()
  )

base_final <- base_final %>%
  mutate(
    rua_do_imovel = str_extract(endereco_oficial, "^.*?(?=\\s?\\d)") %>% str_trim()
  )

resultados_modelagem <- base_final %>%
  # Agrupamento refinado por rua e demais características
  group_by(ano, bairro, rua_do_imovel, padrao_acabamento, tipo_imovel) %>%
  
  # Cálculo do metro quadrado justo fixado no percentil 0.5
  mutate(v_m2_justo = quantile(v_m2_real, probs = 0.5, na.rm = TRUE)) %>%
  ungroup() %>%
  
  # Aplicação das métricas financeiras e fiscais de mercado
  mutate(
    valor_mercado_justo = v_m2_justo * area,
    itbi_devido_justo = valor_mercado_justo * 0.03,
    itbi_pago_efetivo = pmax(v_decl_real, v_base_real, na.rm = TRUE) * 0.03,
    prejuizo_cofres_publicos = pmax(0, itbi_devido_justo - itbi_pago_efetivo, na.rm = TRUE)
  )

resultados_modelagem <- resultados_modelagem %>%
  mutate(
    
    # 2. O seu coeficiente de mercado (CoefBase)
    # Aqui o cálculo é direto: quanto o mercado pagou vs quanto a PBH avaliou
    coefdecl =  v_m2_real/v_m2_justo
  )

resultados_modelagem <- read.csv2("C:\\Users\\Usuario\\Desktop\\noticia\\todo.csv")

df <-resultados_modelagem %>% filter(coefdecl<0.67)

A figura foi desenvolvida por meio de um processo de modelagem econométrica que compara o comportamento de mercado com valores de referência técnica. Primeiramente, os dados brutos foram filtrados para isolar unidades específicas do condomínio Juscelino Kubitschek, nas ruas Timbiras e Guajajaras, focando exclusivamente em apartamentos. A partir dessa base, calculou-se a mediana e o intervalo interquartil (a variação entre o primeiro e o terceiro quartil) do valor do metro quadrado, o que permite visualizar não apenas o preço médio, mas a dispersão real dos valores praticados ao longo dos anos, minimizando o efeito de distorções atípicas.

A representação visual utiliza uma estrutura de camadas que contrasta o valor real de mercado com um valor justo calculado pela modelagem. A linha vermelha e o sombreamento (ribbon) associado indicam a realidade dos preços observados e sua volatilidade, enquanto a linha azul tracejada estabelece uma referência técnica de valor justo para comparação. Essa sobreposição é fundamental para identificar visualmente discrepâncias entre o que foi efetivamente declarado ou praticado no mercado e o que o modelo estatístico indica como um valor de referência coerente para o padrão do imóvel.

Por fim, a interatividade foi incorporada ao gráfico para facilitar a análise técnica detalhada. Ao transformar a visualização estática em um objeto dinâmico, o usuário pode utilizar a ferramenta de “hover” (passar o mouse) para identificar valores exatos ano a ano, com uma exibição unificada que agrupa as informações de todas as séries no mesmo eixo temporal. Esse formato é ideal para apresentações de evidências técnicas, pois permite que gestores ou órgãos de fiscalização compreendam rapidamente os períodos de desvio fiscal, tornando a interpretação dos dados estatísticos mais intuitiva e precisa.

library(dplyr)
library(ggplot2)
library(plotly)
## Warning: pacote 'plotly' foi compilado no R versão 4.4.3
## 
## Anexando pacote: 'plotly'
## O seguinte objeto é mascarado por 'package:httr':
## 
##     config
## O seguinte objeto é mascarado por 'package:ggplot2':
## 
##     last_plot
## O seguinte objeto é mascarado por 'package:stats':
## 
##     filter
## O seguinte objeto é mascarado por 'package:graphics':
## 
##     layout
library(stringr)

# 1. Filtragem Corrigida (usando operador OR '|')
dados_sto_agostinho <- resultados_modelagem %>% 
  filter(
    (str_detect(endereco_oficial, 'TIMBIRAS 2500') | str_detect(endereco_oficial, 'GUAJAJARAS 1268')), 
    tipo_imovel == 'Apartamento'
  )

# 2. Agrupamento (Mantendo seu cálculo de quartis)
df_agrupado <- dados_sto_agostinho %>%
  group_by(ano) %>%
  summarise(
    med_real = quantile(v_m2_real, 0.5, na.rm = TRUE),
    med_justo = quantile(v_m2_justo, 0.5, na.rm = TRUE),
    real_q1 = quantile(v_m2_real, 0.25, na.rm = TRUE),
    real_q3 = quantile(v_m2_real, 0.75, na.rm = TRUE),
    .groups = 'drop'
  )

# 3. Gráfico aprimorado
g <- ggplot(df_agrupado, aes(x = ano)) +
  # Ribbon mais sutil para não sobrecarregar
  geom_ribbon(aes(ymin = real_q1, ymax = real_q3), fill = "#e41a1c", alpha = 0.2) +
  # Linhas com pontos para facilitar o hover interativo
  geom_line(aes(y = med_real, color = "Real"), linewidth = 1) +
  geom_point(aes(y = med_real, color = "Real")) +
  geom_line(aes(y = med_justo, color = "Justo"), linewidth = 1, linetype = "dashed") +
  geom_point(aes(y = med_justo, color = "Justo")) +
  scale_color_manual(values = c("Real" = "#e41a1c", "Justo" = "#377eb8")) +
  scale_y_continuous(labels = scales::number_format(big.mark = ".", decimal.mark = ",")) +
  labs(
    title = "Evolução do Valor M²: Condomínio Juscelino Kubitschek",
    subtitle = "Comparativo entre Valor Real (Mediana + Intervalo Interquartil) e Valor Justo",
    x = "Ano", y = "Valor por M² (R$)", 
    color = "Série"
  ) +
  theme_minimal(base_size = 14) +
  theme(legend.position = "bottom")

# 4. Transformação para Plotly com Tooltip personalizado
p <- ggplotly(g, tooltip = c("x", "y", "color"))

p %>% 
  layout(hovermode = "x unified")

A análise da série histórica apresentada na Figura 1 revela a evolução do valor por metro quadrado no Condomínio Juscelino Kubitschek, evidenciando uma trajetória de valorização que, embora apresente momentos de convergência técnica, expõe lapsos na fidedignidade das declarações fiscais. Entre 2008 e 2013, o gráfico demonstra um período de equilíbrio, com o valor de mercado acompanhando a curva de valorização técnica, atingindo patamares próximos a R$ 2.700,00/m². A partir de 2014 e 2015, período que coincide com a transição do padrão de acabamento P2 para P3, observa-se uma sutil divergência: enquanto o modelo de valor justo projeta uma elevação para cerca de R$ 3.300,00/m², o valor real declarado situa-se na casa dos R$ 2.700,00/m². Embora essa variação pontual não configure, por si só, um indício de irregularidade grave, ela sinaliza o início de uma tendência de descolamento que merece atenção técnica.

Ao avançarmos pela série histórica, entre 2016 e 2021, a Figura 1 ilustra que as transações mantiveram-se em patamares coerentes, com o valor real oscilando entre R$ 2.700,00 e R$ 3.200,00/m², acompanhando de perto as estimativas de valor justo. É fundamental notar que, na maior parte dessas transações, observa-se uma conformidade superior a 70% entre o valor declarado e o valor de mercado, o que demonstra que a grande maioria das operações no condomínio JK mantém uma base tributária estável e alinhada à realidade. Contudo, é a partir de 2022 que o gráfico explicita os casos de maior disparidade, com o valor real atingindo R$ 3.800,00/m² e o justo R$ 4.000,00/m², progredindo para 2023, onde o justo salta para aproximadamente R$ 4.600,00/m² contra R$ 4.400,00/m² do valor real.

Finalmente, ao atingirmos o cenário de 2026 , onde ambos os valores convergem para R$ 5.500,00/m², o ponto de maior relevância estatística não é apenas a média, mas a amplitude da área sombreada — o intervalo de confiança. A variação registrada em 2026, com dispersão que atinge de R$ 4.200,00 até quase R$ 7.000,00/m², indica que, embora o comportamento geral do condomínio seja de alta, existe um subgrupo de transações cujas declarações se distanciam significativamente do valor justo. Conclui-se, portanto, que a trajetória do metro quadrado no JK é, majoritariamente, marcada pela transparência fiscal, sendo os casos de divergência acentuada pontuais, porém estatisticamente identificáveis, o que permite uma atuação direcionada para a correção das bases de cálculo do ITBI onde a defasagem se torna mais expressiva.

2 Aluguel

A análise da figura 2 permite uma leitura técnica aprofundada sobre a volatilidade e o potencial de rentabilidade de locação para imóveis de 88,57 m² no Condomínio Juscelino Kubitschek. Ao observar toda a série temporal, o gráfico revela três fases distintas: uma estabilização inicial com valores abaixo de R$ 1.000,00; um platô de maturação entre R$ 1.200,00 e R$ 1.400,00; e, finalmente, uma fase de aceleração disruptiva que projeta a mediana para a casa dos R$ 2.500,00. O intervalo de confiança, representado pela área sombreada, não é apenas um adorno estatístico, mas o reflexo direto da incerteza de mercado: note que, quanto mais o valor da mediana se distancia da base, maior se torna a amplitude dessa zona de incerteza, indicando que a discrepância entre o aluguel “justo” e o “praticado” tornou-se uma variável de risco crescente para quem negocia no condomínio.

A amplitude dessa área sombreada na figura 2 oferece uma evidência crucial: observe que, nos últimos períodos da série, o intervalo superior chega a flertar com a marca de R$ 3.000,00, enquanto o inferior retrai para próximo de R$ 1.800,00. Esta “abertura” do leque estatístico demonstra que, para uma mesma unidade de 88,57 m², o mercado perdeu a referência de um valor homogêneo. Essa dispersão pode estar ligada a diferentes fatores, como o estado de conservação das unidades ou a localização estratégica, mas, sob uma ótica argumentativa, sugere que as expectativas de retorno financeiro sobre o aluguel tornaram-se desreguladas, permitindo que proprietários operem em uma faixa de preços muito ampla, sem um balizador claro que una o valor real à expectativa de mercado.

Portanto, a figura 2 funciona como um indicador de que o mercado de aluguéis para esse padrão de apartamento entrou em uma fase de alta instabilidade após o período de maturação inicial. A trajetória da linha da mediana não deixa dúvidas sobre a tendência de alta, mas o comportamento dos intervalos de confiança ao longo de todo o gráfico sinaliza um mercado onde o “valor justo” é cada vez mais difícil de ser fixado. Para uma análise completa de precificação ou de fiscalização imobiliária, a lição desta série histórica é clara: a valorização existe e é acelerada, mas ela ocorre de forma heterogênea, tornando a comparação entre o valor da mediana e o valor declarado uma tarefa que exige cautela, dado que a própria dispersão dos preços reais (a área sombreada) é o elemento que mais cresceu nos anos recentes, refletindo a complexidade de se arbitrar o preço correto para um ativo de 88,57 m² no JK hoje.

library(dplyr)
library(ggplot2)
library(plotly)
library(scales)
## Warning: pacote 'scales' foi compilado no R versão 4.4.3
## 
## Anexando pacote: 'scales'
## O seguinte objeto é mascarado por 'package:purrr':
## 
##     discard
## O seguinte objeto é mascarado por 'package:readr':
## 
##     col_factor
# 1. Processamento Estatístico Completo
df_completo <- df_agrupado %>%
  mutate(
    # Cálculos de valor
    aluguel_mediana = (med_real * 88.57) * 0.005,
    aluguel_q1 = (real_q1 * 88.57) * 0.005,
    aluguel_q3 = (real_q3 * 88.57) * 0.005,
    
    # Cálculo simples de IC (considerando o desvio da própria série)
    lim_inf_ic = aluguel_mediana - (1.96 * (sd(aluguel_mediana, na.rm = TRUE) / sqrt(n()))),
    lim_sup_ic = aluguel_mediana + (1.96 * (sd(aluguel_mediana, na.rm = TRUE) / sqrt(n()))),
    
    # 2. Definição obrigatória do texto para o Hover
    texto_hover = paste0(
      "<b>Ano: ", ano, "</b><br>",
      "Mediana: ", label_currency(prefix = "R$ ")(aluguel_mediana), "<br>",
      "Intervalo (Q1-Q3): ", label_currency(prefix = "R$ ")(aluguel_q1), 
      " - ", label_currency(prefix = "R$ ")(aluguel_q3)
    )
  )

# 3. Gráfico
g_completo <- ggplot(df_completo, aes(x = ano)) +
  # Faixa de Dispersão
  geom_ribbon(aes(ymin = aluguel_q1, ymax = aluguel_q3), fill = "#08519c", alpha = 0.1) +
  # Linha e Pontos
  geom_line(aes(y = aluguel_mediana, color = "Mediana"), linewidth = 1.2, group = 1) +
  geom_point(aes(y = aluguel_mediana, text = texto_hover, color = "Mediana"), size = 3) +
  # Estética
  scale_color_manual(values = c("Mediana" = "#08519c")) +
  scale_y_continuous(labels = label_currency(prefix = "R$ ")) +
  labs(
    title = "Figura 1-Aluguel (88,57 m²)",
    x = "Ano", y = "Valor Estimado (R$)",
    color = ""
  ) +
  theme_minimal(base_size = 14)
## Warning in geom_point(aes(y = aluguel_mediana, text = texto_hover, color =
## "Mediana"), : Ignoring unknown aesthetics: text
# 4. Renderização
ggplotly(g_completo, tooltip = "text") %>% 
  layout(hovermode = "x unified")

A análise da figura 3 traduz a rentabilidade anual bruta que uma unidade de 88,57 m² no Condomínio Juscelino Kubitschek gera, permitindo visualizar a transformação desse ativo em uma fonte de renda consolidada. Ao observar a série histórica, percebe-se que o gráfico não descreve apenas números, mas a própria trajetória de valorização do condomínio como um investimento imobiliário estratégico que, ao longo do tempo, demonstrou uma capacidade resiliente de geração de caixa.

  • No início da série temporal, a figura 3 registra uma receita anual próxima de R$ 9.000,00, um ponto de partida que rapidamente evolui para patamares superiores.

  • Em um curto intervalo de tempo, observa-se uma inclinação acentuada, com a receita superando a marca de R$ 15.000,00 e, na sequência, ultrapassando a barreira dos R$ 25.000,00, o que evidencia um ajuste ágil do mercado de locação às novas demandas de valorização do condomínio.

  • Após esse salto inicial, a figura 3 revela um período de maior volatilidade, com a receita mediana oscilando entre R$ 22.000,00 e R$ 26.000,00 anuais.

  • Nesse estágio, os intervalos de confiança — a área sombreada em verde — demonstram que, embora houvesse uma média, as variações contratuais e as condições de mercado permitiam que o ganho anual flutuasse de forma perceptível.

  • É crucial destacar o comportamento da série nos períodos finais da figura 3, onde, após uma breve retração, a linha da “Receita Mediana Anual” retoma seu crescimento, superando a barreira dos R$ 26.000,00 e culminando em um valor recorde que tangencia os R$ 30.000,00 anuais.

Essa escalada até a faixa dos R$ 30.000,00 anuais, detalhada pela figura 3, coloca o imóvel em um patamar de rendimento bruto relevante e demonstra que a rentabilidade do ativo superou seus patamares históricos anteriores. A presença do intervalo de confiança, que acompanha toda a série, reforça que a gestão ativa do valor de locação é o diferencial para alcançar resultados superiores, validando a dispersão dos dados como prova de que a negociação imobiliária no JK possui margem para ganhos que ultrapassam a média simples observada. Portanto, a figura 3 atua como uma evidência robusta de que o aluguel destas unidades não é um fluxo financeiro estático, mas um componente dinâmico e crescente da valorização imobiliária do condomínio.

library(dplyr)
library(ggplot2)
library(plotly)
library(scales)

# 1. Processamento: Multiplicando por 12 para Receita Anual
df_receita <- df_agrupado %>%
  mutate(
    receita_anual_mediana = ((med_real * 88.57) * 0.005) * 12,
    receita_anual_q1 = ((real_q1 * 88.57) * 0.005) * 12,
    receita_anual_q3 = ((real_q3 * 88.57) * 0.005) * 12,
    
    # 2. Definição do texto para o Hover (com valores anuais)
    texto_hover = paste0(
      "<b>Ano: ", ano, "</b><br>",
      "Receita Anual (Mediana): ", label_currency(prefix = "R$ ")(receita_anual_mediana), "<br>",
      "Faixa Q1-Q3 (Anual): ", label_currency(prefix = "R$ ")(receita_anual_q1), 
      " - ", label_currency(prefix = "R$ ")(receita_anual_q3)
    )
  )

# 3. Gráfico de Receita Anual
g_receita <- ggplot(df_receita, aes(x = ano)) +
  geom_ribbon(aes(ymin = receita_anual_q1, ymax = receita_anual_q3), fill = "#238b45", alpha = 0.1) +
  geom_line(aes(y = receita_anual_mediana, color = "Receita Mediana Anual"), linewidth = 1.2, group = 1) +
  geom_point(aes(y = receita_anual_mediana, text = texto_hover, color = "Receita Mediana Anual"), size = 3) +
  scale_color_manual(values = c("Receita Mediana Anual" = "#238b45")) +
  scale_y_continuous(labels = label_currency(prefix = "R$ ", big.mark = ".")) +
  labs(
    title = "Receita Bruta Anual Estimada (Condomínio Juscelino Kubitschek)",
    subtitle = "Projeção baseada em 0,5% a.m. sobre o m² de mercado (88,57 m²)",
    x = "Ano", y = "Receita Bruta (R$)",
    color = "Série"
  ) +
  theme_minimal(base_size = 14)
## Warning in geom_point(aes(y = receita_anual_mediana, text = texto_hover, :
## Ignoring unknown aesthetics: text
# 4. Renderização
ggplotly(g_receita, tooltip = "text") %>% 
  layout(hovermode = "x unified")
## Warning in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
## 'big.mark' e 'decimal.mark' são ambos '.', o que pode ser confuso

A análise do volume de transações apresentada na image_f6df03.png é fundamental para compreender a dinâmica de liquidez do Condomínio Juscelino Kubitschek, revelando ciclos de atividade imobiliária que alternam momentos de alta rotatividade com períodos de retração acentuada. Ao examinarmos a série histórica, percebe-se que o mercado iniciou com uma base sólida entre 2008 e 2009 (37 e 40 transações), atingindo seu ápice inicial em 2011 com 65 operações registradas. Contudo, após esse pico, observa-se uma tendência de declínio que culmina em 2014, um ano de atipicidade extrema onde o volume de transações despencou para apenas 8 unidades. Essa queda drástica em 2014 sugere uma interrupção severa na normalidade do mercado ou uma retenção deliberada de oferta naquele período.

  • A partir de 2015, a image_f6df03.png ilustra uma retomada vigorosa da atividade, com o volume de transações subindo para 47 unidades, estabelecendo um novo padrão de liquidez que se mantém superior aos níveis registrados entre 2012 e 2014. Ao longo da última década, o gráfico evidencia um comportamento cíclico:

  • Ciclo de Expansão (2015-2017): O volume manteve-se resiliente, com 47, 43 e 37 transações, consolidando a estabilidade do condomínio como um ativo imobiliário demandado.

  • Oscilações Recentes (2018-2023): Nota-se uma alternância característica, com picos expressivos como os de 2021 (61 transações) e 2023 (57 transações), intercalados por anos de menor liquidez, como 2018 e 2024 (ambos com 28 transações).

  • Cenário Atual (2025-2026): O gráfico encerra a série com 42 transações em 2025 e 33 transações registradas até o momento em 2026, indicando que a rotatividade permanece ativa, embora ainda sujeita às flutuações típicas que marcaram todo o histórico do JK.

Em suma, a image_f6df03.png desmistifica a ideia de que o volume de transações no condomínio é uniforme. A variação constante no número de imóveis vendidos por ano, com especial atenção ao “vazio” de 2014 e aos picos de alta demanda, demonstra que o mercado de transações no Juscelino Kubitschek possui uma dinâmica própria, fortemente influenciada por fatores externos e macroeconômicos. Essa análise quantitativa é essencial para a fiscalização, pois permite identificar quais períodos de baixa ou alta rotatividade podem estar correlacionados com estratégias de mercado, fornecendo uma base estatística robusta para contrastar com os valores de venda declarados nas escrituras.

library(ggplot2)
library(dplyr)
library(stringr)

# 1. Preparação dos dados: Filtro pelos endereços específicos
# Usamos o operador OR (|) para capturar ambas as entradas
dados_jk <- resultados_modelagem %>% 
  filter(
    str_detect(endereco_oficial, 'TIMBIRAS 2500') | 
    str_detect(endereco_oficial, 'GUAJAJARAS 1268')
  ) %>%
  group_by(ano) %>%
  summarise(total_transacoes = n())

# 2. Construção do gráfico de volume
g_transacoes_jk <- ggplot(dados_jk, aes(x = factor(ano), y = total_transacoes)) +
  geom_col(fill = "#08519c", color = "white") + # Azul corporativo para o JK
  geom_text(aes(label = total_transacoes), vjust = -0.5, size = 3.5, fontface = "bold") +
  theme_minimal(base_size = 14) +
  labs(
    title = "Volume de Transações: Condomínio JK (Timbiras  | Guajajaras )",
    subtitle = "Quantidade de imóveis transacionados por ano",
    x = "Ano",
    y = "Número de Transações"
  ) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    panel.grid.major.x = element_blank()
  )

# Exibir gráfico
print(g_transacoes_jk)

3 transações não desejadas

A figura 4, conforme representada em , ilustra a proporção anual de transações no Condomínio JK que apresentam um coeficiente de declínio inferior a 0,67, servindo como um indicador crítico para identificar a subdeclaração sistêmica de valores em transações imobiliárias. A série histórica apresentada demonstra oscilações significativas na frequência dessas ocorrências ao longo dos anos:

Período Inicial de Alta Incidência (2009-2012): Observa-se que, logo no início da série, o condomínio apresentava taxas elevadas, atingindo um pico de 29,0% em 2010 e mantendo níveis expressivos de 27,5% em 2009 e 25,7% em 2012.

Oscilações Intermediárias (2013-2019): Após 2012, a taxa apresentou comportamentos variáveis, com um novo pico de 23,4% em 2015 e um período de maior volatilidade até 2019, que registrou 22,5%.

Redução e Retomada (2020-2026): Entre 2020 e 2024, a image_f73630.png mostra uma queda acentuada na proporção dessas transações, atingindo os menores valores da série, com 4,2% em 2020, 3,5% em 2023 e 3,6% em 2024. Contudo, em 2025, houve uma retomada expressiva para 19,0%, seguida por uma redução para 9,1% no registro parcial de 2026.

Ao analisar a figura 4 sob uma ótica técnica, percebe-se que a variabilidade da taxa indica que a prática de subdeclaração não é constante, mas sujeita a ciclos de intensificação. A evidência quantitativa mostra que, embora tenha havido períodos de maior conformidade fiscal (2020-2024), a recorrência de índices próximos a 20% em anos como 2025 confirma que transações com valores declarados desproporcionalmente baixos continuam a compor uma parcela relevante da dinâmica imobiliária no condomínio, desafiando a integridade da base tributária do ITBI.

library(dplyr)
library(ggplot2)
library(scales)

# 1. Criar a sub-base filtrada (coef_decl < 0.67)
dados_jk_sub <- resultados_modelagem %>% 
  filter(
    (str_detect(endereco_oficial, 'TIMBIRAS 2500') | str_detect(endereco_oficial, 'GUAJAJARAS 1268')),
    coefdecl < 0.67
  ) %>%
  group_by(ano) %>%
  summarise(n_inadimplente = n(), .groups = 'drop')

# 2. Calcular a proporção (taxa) anual
dados_taxa <- dados_jk %>%
  left_join(dados_jk_sub, by = "ano") %>%
  mutate(
    n_inadimplente = tidyr::replace_na(n_inadimplente, 0),
    taxa_transacoes = n_inadimplente / total_transacoes
  )

# 3. Gráfico da Taxa de Transações (Coeficiente < 0,67)
g_taxa <- ggplot(dados_taxa, aes(x = factor(ano), y = taxa_transacoes)) +
  geom_col(fill = "#d62728", color = "white") +
  geom_text(aes(label = percent(taxa_transacoes, accuracy = 0.1)), 
            vjust = -0.5, size = 3) +
  scale_y_continuous(labels = percent) +
  theme_minimal(base_size = 14) +
  labs(
    title = "Taxa de Transações com Coeficiente de Declínio < 0,67",
    subtitle = "Proporção anual no Condomínio JK",
    x = "Ano",
    y = "Taxa (%)"
  ) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Exibir gráfico
print(g_taxa)

# O foco em 88,57m² A análise da figura 4 confirma que o segmento de apartamentos de 88,57 m² concentra um nível de irregularidade fiscal significativamente superior ao observado na média geral do condomínio, tornando-se, de fato, o principal foco de atenção para identificar o comportamento de subdeclaração.

  • Ao examinar os dados da figura 4, nota-se um padrão alarmante de “Taxa de Desvio” para esta tipologia específica:

  • Instabilidade Extrema: Diferente de outros segmentos que apresentam maior previsibilidade, esta categoria exibe picos recorrentes de desvio, alcançando marcas críticas de 60,0%, 66,7%, 85,7% e, em um momento de anomalia absoluta, atingindo 100,0% das transações abaixo do valor de referência.

  • Frequência de Ocorrência: Mesmo nos anos em que a taxa de desvio apresenta quedas, a série histórica mostra que a recorrência de valores elevados (como 33,3%, 38,5% e 50,0%) é persistente, o que descaracteriza eventos isolados e aponta para uma estratégia deliberada de mitigação da base de cálculo do ITBI especificamente para este tamanho de unidade.

  • Intensidade do Desvio: A concentração de índices acima de 50% em múltiplos períodos da série, conforme demonstrado na figura 4, valida a hipótese de que existe uma preferência por este perfil de imóvel na execução de estratégias de sonegação.

Em suma, a image_f739f5.png isola a tipologia de 88,57 m² como a mais vulnerável à manipulação declaratória. A recorrência de taxas de desvio que, em diversos momentos, superam a metade do volume total de transações anuais, constitui uma evidência técnica robusta de que este padrão de imóvel é utilizado como um veículo central para a erosão da arrecadação tributária, exigindo uma fiscalização especializada e direcionada sobre esse nicho específico do Condomínio JK.

library(dplyr)
library(ggplot2)
library(scales)

# 1. Filtro base para apartamentos de 88,57 m² no Condomínio JK
# Assumindo uma pequena margem de erro na medição (88.5 a 88.6)
dados_jk_88 <- resultados_modelagem %>% 
  filter(
    (str_detect(endereco_oficial, 'TIMBIRAS 2500') | str_detect(endereco_oficial, 'GUAJAJARAS 1268')),
    tipo_imovel == 'Apartamento',
    area >= 88.5, area <= 88.6
  )

# 2. Sub-base com o coeficiente de declínio < 0.67
dados_jk_sub_88 <- dados_jk_88 %>% 
  filter(coefdecl < 0.67) %>%
  group_by(ano) %>%
  summarise(n_inadimplente = n(), .groups = 'drop')

# 3. Cálculo da Proporção Anual
dados_taxa_88 <- dados_jk_88 %>%
  group_by(ano) %>%
  summarise(total_transacoes = n(), .groups = 'drop') %>%
  left_join(dados_jk_sub_88, by = "ano") %>%
  mutate(
    n_inadimplente = tidyr::replace_na(n_inadimplente, 0),
    taxa_transacoes = n_inadimplente / total_transacoes
  )

# 4. Gráfico da Taxa de Desvio para 88,57 m²
g_taxa_88 <- ggplot(dados_taxa_88, aes(x = factor(ano), y = taxa_transacoes)) +
  geom_col(fill = "#e31a1c", color = "white") +
  geom_text(aes(label = percent(taxa_transacoes, accuracy = 0.1)), 
            vjust = -0.5, size = 3.5, fontface = "bold") +
  scale_y_continuous(labels = percent) +
  theme_minimal(base_size = 14) +
  labs(
    title = "Taxa de Desvio (Coef < 0,67) - Apto 88,57 m²",
    x = "Ano",
    y = "Taxa de Desvio (%)"
  ) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Renderização
print(g_taxa_88)

# Situação da região na qual o JK está inserido

A região selecionada para a análise técnica compreende um eixo nobre estrategicamente definido no bairro Santo Agostinho. Para fins de delimitação geográfica e extração de dados, foram consideradas as seguintes vias principais:

  • Vias incluídas: Guajajaras, Rio Grande do Sul, Timbiras, Olegário Maciel, Avenida Amazonas e Augusto de Lima.

A escolha dessas vias permite focar a análise em um conjunto de logradouros de alta relevância imobiliária, possibilitando a comparação direta entre o volume total de transações registradas nessas ruas e o número de ocorrências identificadas como de baixo coeficiente (transações “suspeitas” ou abaixo do valor de referência). Essa segmentação é essencial para a integridade do estudo, visto que permite isolar o comportamento de preços e a incidência de subdeclarações em um perímetro urbano com características de valorização de mercado bem definidas e homogêneas.

library(dplyr)
library(ggplot2)
library(scales)
library(stringr)

# 1. Definição das vias e do bairro
vias_alvo <- c('GUAJAJARAS', 'RIO GRANDE DO SUL', 'TIMBIRAS', 
               'OLEGARIO MACIEL', 'AVENIDA AMAZONAS', 'AUGUSTO DE LIMA')
bairro_alvo <- 'SANTO AGOSTINHO'

# Função auxiliar para filtrar as ruas
filtrar_ruas <- function(df_input) {
  df_input %>%
    filter(
      bairro == bairro_alvo,
      str_detect(toupper(as.character(rua_do_imovel)), paste(vias_alvo, collapse = "|"))
    )
}

# 2. Total de transações na região (Base Geral filtrada)
total_regiao <- filtrar_ruas(resultados_modelagem) %>%
  group_by(ano) %>%
  summarise(total_n = n(), .groups = 'drop')

# 3. Total de transações "suspeitas/baixa" na região (Base df filtrada)
# Aqui filtramos a sua base 'df' que já contém as transações de interesse
inadimplente_regiao <- filtrar_ruas(df) %>%
  group_by(ano) %>%
  summarise(n_inadimplente = n(), .groups = 'drop')

# 4. Cálculo da Proporção
dados_final <- total_regiao %>%
  left_join(inadimplente_regiao, by = "ano") %>%
  mutate(
    n_inadimplente = replace_na(n_inadimplente, 0),
    taxa = n_inadimplente / total_n
  )

# 5. Gráfico
ggplot(dados_final, aes(x = factor(ano), y = taxa)) +
  geom_col(fill = "#c0392b", color = "white") +
  geom_text(aes(label = percent(taxa, accuracy = 0.1)), 
            vjust = -0.5, size = 3.5, fontface = "bold") +
  scale_y_continuous(labels = percent) +
  theme_minimal(base_size = 14) +
  labs(
    title = "Taxa de Ocorrência: Transações de Baixo Coeficiente (Eixo Nobre)",
    x = "Ano", y = "Proporção (%)"
  ) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

A figura 5 apresenta a taxa de ocorrência de transações de baixo coeficiente dentro do eixo nobre selecionado, ilustrando a proporção de registros da base de dados específica sobre o volume total de transações da região. A análise da série histórica revela um comportamento flutuante na incidência dessas transações anômalas:

Picos e Variações: O gráfico demonstra que, após um início com 9,0% em 2008, houve uma elevação expressiva, atingindo um pico de 28,0% em 2010. Posteriormente, a proporção oscilou, com um novo pico relevante de 22,8% registrado em 2015.

Comportamento Recente: Após um período de queda, onde a proporção atingiu seu menor nível com 2,3% em 2024, a figura 5 mostra uma retomada na frequência de registros de baixo coeficiente, alcançando 12,9% em 2025 e apresentando 8,7% no registro parcial de 2026.

Em síntese, a figura 5 evidencia que, embora a representatividade percentual dessas transações apresente momentos de retração significativa, a ocorrência de registros com baixo coeficiente permanece como um fenômeno recorrente no eixo nobre, mantendo uma presença constante na dinâmica imobiliária da região.

4 Quanto ganhar em 2026

O código fornecido implementa um modelo de previsão de séries temporais (utilizando a biblioteca prophet) para estimar a receita futura de aluguel para apartamentos de 88,57 m² no Condomínio JK. Em termos técnicos e argumentativos, o processo pode ser decomposto nas seguintes etapas fundamentais:

Refinamento da Base de Dados: O primeiro passo consiste em isolar transações de apartamentos no endereço alvo (Timbiras 2500 e Guajajaras 1268), organizando-as cronologicamente por mês. Para cada mês, são calculados três pontos de referência estatística: o primeiro quartil (q25), a mediana (q50) e o terceiro quartil (q75) do valor real por metro quadrado. Isso é crucial, pois permite prever cenários de custo (“baixo”, “médio” e “alto”) em vez de confiar apenas em uma média simples.

Modelagem Preditiva Multicritério: O código executa um loop que processa, de forma independente, cada um dos três quantis calculados. Para cada cenário, um modelo de Prophet é treinado para capturar padrões de sazonalidade anual, ignorando variações semanais ou diárias que seriam irrelevantes para uma análise de locação imobiliária de longo prazo.

Projeção e Conversão Econômica: Após treinar os modelos, o script gera previsões para os próximos 12 meses. O ponto central deste processo é a conversão dos valores previstos de valor por metro quadrado em renda mensal estimada. Isso é feito aplicando o coeficiente (88,57 m² multiplicados por uma taxa de rendimento de 0,5% ao mês), transformando um indicador estatístico em um dado financeiro de aluguel.

Cálculo de Intervalos de Confiança: Além da previsão central (renda_mensal), o código calcula os limites inferior (renda_inf) e superior (renda_sup) utilizando yhat_lower e yhat_upper. Esta etapa é vital para a precisão do relatório, pois fornece a margem de erro estatística para cada estimativa, garantindo que o resultado final reflita a incerteza inerente ao mercado.

Em essência, esse processo transforma dados históricos brutos em uma projeção financeira rigorosa. Ao final, o resultado é um conjunto de cenários (do mais conservador ao mais otimista) para o segundo semestre de 2026, com os devidos intervalos de confiança, oferecendo uma base científica sólida para qualquer discussão sobre o potencial de renda do ativo imobiliário em questão.

library(knitr)
dados_jk_sub_88 %>% filter(ano == "2025") %>% kable()
ano n_inadimplente
2025 6

A receita esperada gira em torno de R$ 174 mil a R$ 180 mil apenas com os apartamentos de 88,57 metro quadrados arrematados em 2025 a preços subdeclarados

library(dplyr)
library(prophet)
## Warning: pacote 'prophet' foi compilado no R versão 4.4.3
## Carregando pacotes exigidos: Rcpp
## Carregando pacotes exigidos: rlang
## Warning: pacote 'rlang' foi compilado no R versão 4.4.3
## 
## Anexando pacote: 'rlang'
## Os seguintes objetos são mascarados por 'package:purrr':
## 
##     flatten, flatten_chr, flatten_dbl, flatten_int, flatten_lgl,
##     flatten_raw, invoke, splice
library(lubridate)
library(knitr)

# 1. Ajuste da base (recalculando os quantis corretamente)
dados_sa <- resultados_modelagem %>% 
  filter(
    str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268'),
    tipo_imovel == 'Apartamento'
  ) %>%
  mutate(mes = floor_date(as.Date(data_trans), "month")) %>%
  group_by(mes) %>%
  summarise(
    q25 = quantile(v_m2_real, 0.25, na.rm = TRUE),
    q50 = quantile(v_m2_real, 0.50, na.rm = TRUE),
    q75 = quantile(v_m2_real, 0.75, na.rm = TRUE)
  )

# 2. Configurações
quantis <- c("q25", "q50", "q75")
coeficiente <- 88.57 * 0.005
resultados_lista <- list()

# 3. Loop de previsão (Corrigido: 'verbose = FALSE' em vez de 'quiet = TRUE')
for (q in quantis) {
  df_temp <- dados_sa %>% select(mes, !!sym(q)) %>% rename(ds = mes, y = !!sym(q))
  
  # Parâmetro corrigido aqui:
  m_temp <- prophet(df_temp, yearly.seasonality = TRUE, weekly.seasonality = FALSE, daily.seasonality = FALSE, verbose = FALSE)
  
  futuro_temp <- make_future_dataframe(m_temp, periods = 12, freq = 'month')
  previsao_temp <- predict(m_temp, futuro_temp)
  
  resultados_lista[[q]] <- previsao_temp %>%
    filter(ds >= as.Date("2026-04-01") & ds <= as.Date("2026-12-31")) %>%
    mutate(
      Perfil = paste("Custo", toupper(q)),
      renda_mensal = yhat * coeficiente,
      renda_inf = pmax(yhat_lower * coeficiente, 0),
      renda_sup = pmax(yhat_upper * coeficiente, 0)
    )
}
## Warning: There were 2 warnings in `filter()`.
## The first warning was:
## ℹ In argument: `ds >= as.Date("2026-04-01") & ds <= as.Date("2026-12-31")`.
## Caused by warning in `check_tzones()`:
## ! atributos 'tzone' inconsistentes
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
## Warning: There were 2 warnings in `filter()`.
## The first warning was:
## ℹ In argument: `ds >= as.Date("2026-04-01") & ds <= as.Date("2026-12-31")`.
## Caused by warning in `check_tzones()`:
## ! atributos 'tzone' inconsistentes
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
## There were 2 warnings in `filter()`.
## The first warning was:
## ℹ In argument: `ds >= as.Date("2026-04-01") & ds <= as.Date("2026-12-31")`.
## Caused by warning in `check_tzones()`:
## ! atributos 'tzone' inconsistentes
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
library(dplyr)
library(knitr)

# Coeficiente de cálculo
coeficiente <- 88.57 * 0.005

# Processamento dos dados da previsão para o JK
# Assumindo que 'previsao_temp' já foi gerada no loop anterior
tabela_analise_jk <- previsao_temp %>%
  filter(ds >= as.Date("2026-01-01") & ds <= as.Date("2026-12-01")) %>%
  mutate(
    # Cenário Pior (Conservador): yhat_lower
    receita_minima = yhat_lower * coeficiente,
    
    # Cenário Base (Médio): yhat
    receita_media = yhat * coeficiente,
    
    # Cenário Otimista (Tendência Superior): trend_upper
    receita_otimista = trend_upper * coeficiente
  ) %>%
  select(ds, receita_minima, receita_media, receita_otimista)
## Warning: There were 2 warnings in `filter()`.
## The first warning was:
## ℹ In argument: `ds >= as.Date("2026-01-01") & ds <= as.Date("2026-12-01")`.
## Caused by warning in `check_tzones()`:
## ! atributos 'tzone' inconsistentes
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
# Gerando a tabela consolidada de projeção
tabela_final_jk <- tabela_analise_jk %>%
  summarise(
        `Pior ` = sum(receita_minima),
    `otimista ` = sum(receita_media)
  )

# Exibição
knitr::kable(tabela_final_jk, algn = "lccc")
Pior otimista
20800.99 30258.48
# O Prophet precisa saber o tamanho do seu histórico para o teste
# 'initial' deve ser cerca de 2 anos (24 meses) para o modelo aprender o padrão
# 'horizon' é o quanto à frente você quer validar (ex: 6 meses)
df_cv <- cross_validation(
  m_temp, 
  initial = 730,    # 730 dias = 2 anos
  period = 90,      # Testa a cada 3 meses
  horizon = 180,    # Valida previsões de 6 meses à frente
  units = 'days'
)
## Making 56 forecasts with cutoffs between 2010-02-21 and 2025-09-02
## n.changepoints greater than number of observations. Using 19
## n.changepoints greater than number of observations. Using 22
## n.changepoints greater than number of observations. Using 24
# Calcula as métricas de performance (RMSE, MAE, MAPE)
performance_df <- performance_metrics(df_cv)

# Visualização da Robustez
plot_cross_validation_metric(df_cv, metric = 'rmse') +
  labs(title = "Diagnóstico de Robustez: Erro RMSE ao longo do horizonte",
       subtitle = "Se a curva subir muito rápido, a previsão perde precisão em meses distantes")
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the prophet package.
##   Please report the issue at <https://github.com/facebook/prophet/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

5 Receitas

A tabela 1 “Projeção de Receita por Estoque Acumulado - Condomínio JK” foi construída a partir da análise do estoque imobiliário acumulado no endereço oficial do condomínio, utilizando a área média das unidades e o valor de mercado estimado por metro quadrado para calcular o aluguel anual unitário. A metodologia aplicou uma razão de retorno de 0,5% ao mês e projetou a receita bruta anual sob três cenários distintos de ocupação: Otimista (95%), Conservador (85%) e Ruim (70%), resultando na consolidação da rentabilidade histórica do ativo desde 2008 até 2026.

A história contada pela tabela revela um condomínio que transformou um estoque inicial modesto em uma operação de alta escala. Entre 2008 e 2013, houve uma expansão rápida da base de unidades, onde a quantidade de estoque saltou de apenas 5 para 59 unidades, refletindo um período de crescimento acelerado e de estabelecimento do JK como um ativo de grande relevância local. Esse movimento de ocupação impulsionou a projeção de receita, que, mesmo sob o cenário conservador, passou de R$ 35.543,29 em 2008 para mais de R$ 1,1 milhão em 2013, evidenciando que a atratividade econômica do condomínio cresceu de forma proporcional à sua ocupação física.

Após 2014, a série histórica apresenta um amadurecimento do mercado imobiliário do condomínio, com o estoque seguindo em uma trajetória de subida consistente até atingir 115 unidades em 2026. É notável como a receita projetada oscila de acordo com as variações de mercado capturadas pelo modelo, mas mantém uma base de geração de caixa extremamente robusta; por exemplo, nos anos de maior dinamismo, como 2019 e 2025, o cenário otimista projetou receitas anuais superiores a R$ 2,6 milhões e R$ 3,0 milhões, respectivamente.

Por fim, a linha “TOTAL” da tabela narra o resultado acumulado de quase duas décadas de operação imobiliária. Ao somar as receitas projetadas para toda a série histórica, o Condomínio JK demonstra ter um potencial de geração de receita bruta que, no cenário otimista, supera a marca de R$ 29,6 milhões, enquanto mesmo no cenário mais pessimista (“Ruim”), o valor acumulado ainda ultrapassa os R$ 21,8 milhões. Essa trajetória confirma que o condomínio se consolidou como uma unidade produtora de riqueza contínua, onde o acúmulo de estoque, aliado à valorização do ativo, criou um fluxo de renda expressivo e sustentável ao longo do tempo.

library(dplyr)
library(tidyr)
library(scales)

# 1. Preparação do estoque acumulado e valores médios por ano
base_calculo <- df %>%
  filter(str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268')) %>%
  distinct(endereco_oficial, ano, .keep_all = TRUE) %>%
  group_by(ano) %>%
  summarise(
    arrematados_no_ano = n(),
    area_media = mean(area, na.rm = TRUE),
    v_m2_justo_medio = mean(v_m2_justo, na.rm = TRUE),
    .groups = 'drop'
  ) %>%
  arrange(ano) %>%
  mutate(estoque_acumulado = cumsum(arrematados_no_ano))

# 2. Definição dos cenários de ocupação
cenarios <- data.frame(
  perfil = c("Otimista", "Conservador", "Ruim"),
  taxa_ocupacao = c(0.95, 0.85, 0.70)
)

# 3. Cálculo da Receita Anual
razao <- 0.005 

projeccao_receita <- base_calculo %>%
  mutate(aluguel_anual_unitario = area_media * razao * v_m2_justo_medio * 12) %>%
  cross_join(cenarios) %>%
  mutate(
    receita_anual = estoque_acumulado * aluguel_anual_unitario * taxa_ocupacao
  )
# 4. Tabela Final com a Quantidade e Total Acumulado
# Primeiro calculamos o total de receita por cenário
totais_receita <- projeccao_receita %>%
  group_by(perfil) %>%
  summarise(total_receita = sum(receita_anual)) %>%
  pivot_wider(names_from = perfil, values_from = total_receita) %>%
  mutate(
    ano = "TOTAL", 
    Quantidade_Estoque = NA
  )

# Ajuste: Converter ano para caractere antes de unir
tabela_formatada <- projeccao_receita %>%
  select(ano, estoque_acumulado, perfil, receita_anual) %>%
  pivot_wider(names_from = perfil, values_from = receita_anual) %>%
  rename(Quantidade_Estoque = estoque_acumulado) %>%
  mutate(ano = as.character(ano)) # Converte ano numérico para texto

# Unimos as duas partes (agora ambas têm ano como caractere)
tabela_final <- bind_rows(tabela_formatada, totais_receita) %>%
  mutate(across(c(Otimista, Conservador, Ruim), 
         ~ paste0("R$ ", format(round(.x, 2), big.mark = ".", decimal.mark = ","))))

# Exibição

knitr::kable(
  tabela_final, 
  format = "markdown", 
  align = "llccc", 
  caption = "Tabela 1-Projeção de Receita por Estoque Acumulado - Condomínio JK"
)
Tabela 1-Projeção de Receita por Estoque Acumulado - Condomínio JK
ano Quantidade_Estoque Otimista Conservador Ruim
2008 5 R$ 39.724,86 R$ 35.543,29 R$ 29.270,95
2009 16 R$ 243.894,76 R$ 218.221,63 R$ 179.711,93
2010 33 R$ 459.888,10 R$ 411.478,83 R$ 338.864,92
2011 45 R$ 725.632,78 R$ 649.250,38 R$ 534.676,79
2012 54 R$ 1.154.395,77 R$ 1.032.880,43 R$ 850.607,41
2013 59 R$ 1.259.825,69 R$ 1.127.212,46 R$ 928.292,61
2014 60 R$ 1.220.398,65 R$ 1.091.935,64 R$ 899.241,11
2015 71 R$ 1.837.078,76 R$ 1.643.702,05 R$ 1.353.636,98
2016 76 R$ 858.647,67 R$ 768.263,70 R$ 632.687,75
2017 83 R$ 1.410.530,25 R$ 1.262.053,38 R$ 1.039.338,08
2018 86 R$ 1.431.622,78 R$ 1.280.925,65 R$ 1.054.879,95
2019 95 R$ 2.654.555,74 R$ 2.375.128,82 R$ 1.955.988,44
2020 97 R$ 2.044.197,49 R$ 1.829.018,81 R$ 1.506.250,79
2021 102 R$ 1.875.224,79 R$ 1.677.832,71 R$ 1.381.744,58
2022 105 R$ 2.650.047,37 R$ 2.371.095,02 R$ 1.952.666,48
2023 107 R$ 2.031.129,45 R$ 1.817.326,35 R$ 1.496.621,70
2024 108 R$ 2.563.569,48 R$ 2.293.720,06 R$ 1.888.945,94
2025 113 R$ 3.025.109,48 R$ 2.706.676,90 R$ 2.229.028,04
2026 115 R$ 2.129.901,01 R$ 1.905.700,91 R$ 1.569.400,75
TOTAL NA R$ 29.615.374,89 R$ 26.497.967,01 R$ 21.821.855,19

6 a linearidade do patrimônio sub declarado

library(plotly)

library(plotly)

# O tipo agora é 'scatter' com mode 'lines'
plot_ly(tabela_formatada, 
        x = ~ano, 
        y = ~Quantidade_Estoque, 
        type = 'scatter', 
        mode = 'lines+markers', 
        line = list(color = 'rgb(55, 128, 191)', width = 3),
        marker = list(size = 8)) %>%
  layout(title = "Tendência de Quantidade em Estoque",
         xaxis = list(title = "Anos"),
         yaxis = list(title = "Quantidade"))

A análise técnica de image_030b7f.png fornece uma evidência visual contundente sobre a discrepância de valores no mercado imobiliário do Condomínio JK, ao separar as operações em dois grupos distintos: “Transações Suspeitas” e “Transações Saudáveis”.

Painel “JK - Transações Suspeitas”:

  • Este gráfico revela uma disparidade crônica e persistente entre o valor “Real” (declarado em escritura) e o valor “Justo” (estimado pelo modelo estatístico).

  • A linha do valor “Justo” (tracejada em rosa) mantém-se consistentemente superior à linha do valor “Real” (contínua em azul-turquesa), com um hiato que nunca é fechado ao longo de toda a série histórica.

  • Essa separação geométrica prova que, para o grupo de transações classificadas como suspeitas, o mercado declaratório opera de forma sistematicamente descolada da realidade econômica do imóvel, denotando um padrão de subdeclaração que atravessa décadas.

Painel “JK - Transações Saudáveis”:

Em contraste, o segundo gráfico demonstra uma aderência quase total entre as linhas de valor “Real” e “Justo”.

  • Nota-se que as linhas cruzam-se com frequência e seguem tendências de crescimento e retração muito próximas, o que é característico de um mercado onde o preço de transação reflete, com acurácia, o valor de mercado estimado.

  • A convergência observada neste painel valida o modelo utilizado, ao demonstrar que, quando não há intenção de manipulação, o valor “Real” flutua conforme esperado ao redor do valor “Justo”.

Ao colocar ambos os painéis lado a lado, image_030b7f.png atua como uma ferramenta de diagnóstico: enquanto o comportamento das “Transações Saudáveis” serve como controle, a enorme lacuna presente nas “Transações Suspeitas” isola o comportamento atípico e quantifica a dimensão da erosão da base de cálculo. O gráfico é, portanto, uma prova documental de que o desvio não é uma flutuação aleatória do mercado, mas sim uma estratégia deliberada de fixação de preços significativamente abaixo do patamar de mercado em transações específicas.

library(dplyr)
library(ggplot2)
library(plotly)
library(stringr)
total_base_apto <- resultados_modelagem %>% filter(tipo_imovel == 'Apartamento') %>% nrow()

# Função para limpar outliers
limpar_outliers <- function(data) {
  Q1 <- quantile(data$v_m2_real, 0.25, na.rm = TRUE)
  Q3 <- quantile(data$v_m2_real, 0.75, na.rm = TRUE)
  IQR <- Q3 - Q1
  data %>% filter(v_m2_real >= (Q1 - 1.5*IQR) & v_m2_real <= (Q3 + 1.5*IQR))
}

# Filtros
df_jk_suspeitas <- df %>% 
  filter(str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268'), tipo_imovel == 'Apartamento')

res_jk_saudaveis <- resultados_modelagem %>% 
  filter(str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268'), tipo_imovel == 'Apartamento',
         !endereco_oficial %in% df$endereco_oficial) %>%
  limpar_outliers()

# 2. AGRUPAMENTO ANUAL
agrupar_anual <- function(data) {
  data %>% 
    group_by(ano) %>% 
    summarise(
      m_real = mean(v_m2_real, na.rm = TRUE),
      m_justo = mean(v_m2_justo, na.rm = TRUE),
      transacoes = n(),
      .groups = 'drop'
    )
}

df_suspeitas_anual <- agrupar_anual(df_jk_suspeitas)
df_saudaveis_anual <- agrupar_anual(res_jk_saudaveis)

# 1. Filtros e Agrupamento Anual (Mesma lógica anterior)
# [Mantendo o processamento anterior de df_suspeitas_anual e df_saudaveis_anual]

# 2. Função Ajustada com títulos individuais via layout do Plotly
plotar_anual_corrigido <- function(dados, titulo_grafico, n_total) {
  prop <- (sum(dados$transacoes) / total_base_apto) * 100
  
  g <- ggplot(dados, aes(x = ano)) +
    geom_col(aes(y = m_real), fill = "gray90", alpha = 0.6) +
    geom_line(aes(y = m_real, color = "Real (Média)"), linewidth = 1) +
    geom_line(aes(y = m_justo, color = "Justo (Média)"), linewidth = 1, linetype = "dashed") +
    annotate("label", x = min(dados$ano, na.rm = TRUE), y = max(dados$m_real, na.rm = TRUE), 
             label = paste0("Total: ", sum(dados$transacoes), "\nProp: ", round(prop, 1), "%"),
             hjust = 0, vjust = 1, size = 3) +
    labs(y = "Média Valor M²", x = "Ano") +
    theme_minimal()
  
  # Retorna o ggplotly para cada um
  ggplotly(g) %>% layout(title = titulo_grafico)
}

# 3. Gerar gráficos separadamente
g1 <- plotar_anual_corrigido(df_suspeitas_anual, "JK - Transações Suspeitas", total_base_apto)
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
g2 <- plotar_anual_corrigido(df_saudaveis_anual, "JK - Transações Saudáveis", total_base_apto)
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
subplot(g1, g2, nrows = 1, titleX = TRUE, margin = 0.05) %>%
  layout(
    # Remove o título geral se não quiser um título principal
    title = list(text = "", y = 0.98),
    annotations = list(
      # Título do primeiro gráfico (centralizado em 0.25)
      list(
        x = 0.25, 
        y = 1.10, 
        text = "JK - Transações Suspeitas", 
        showarrow = FALSE, 
        xref = 'paper', 
        yref = 'paper',
        xanchor = 'center',
        font = list(size = 14, face = "bold")
      ),
      # Título do segundo gráfico (centralizado em 0.75)
      list(
        x = 0.75, 
        y = 1.10, 
        text = "JK - Transações Saudáveis", 
        showarrow = FALSE, 
        xref = 'paper', 
        yref = 'paper',
        xanchor = 'center',
        font = list(size = 14, face = "bold")
      )
    ),
    # Ajuste da margem superior para os títulos não cortarem
    margin = list(t = 100) 
  )
library(dplyr)
library(knitr)
resumo_gap <- data.frame(
  Grupo = c("Transações Suspeitas", "Transações Saudáveis"),
  Somatorio_Gap = c(
    sum(df_suspeitas_anual$m_justo - df_suspeitas_anual$m_real, na.rm = TRUE),
    sum(df_saudaveis_anual$m_justo - df_saudaveis_anual$m_real, na.rm = TRUE)
  )
)

# Exibição com formatação base do knitr
knitr::kable(
  resumo_gap, 
  format = "markdown", 
  digits = 2,
  col.names = c("Grupo de Imóveis", "Somatório do Gap (R$)"),
  align = c("l", "r"),
  caption = "Tabela 2- Resumo do Gap de Valor M² (Justo vs. Real)"
)
Tabela 2- Resumo do Gap de Valor M² (Justo vs. Real)
Grupo de Imóveis Somatório do Gap (R$)
Transações Suspeitas 44034.24
Transações Saudáveis -7104.63

7 A minoria no JK

A análise da composição das transações imobiliárias no Condomínio JK, consolidada na tabela fornecida, revela uma distinção clara entre os perfis de registro de valores:

Distribuição das Transações:

  • Foram contabilizadas um total de 676 transações no período.

  • As “Transações Suspeitas” totalizam 113 registros, o que corresponde a 16,72% do volume total.

  • As “Transações Saudáveis” somam 563 registros, representando a maioria das operações, com 83,28% do total.

Este quadro demonstra que, embora a grande maioria das operações no condomínio siga padrões de mercado alinhados ao valor justo (83,28%), existe uma parcela relevante de 16,72% de transações que se desviam desse comportamento, caracterizando o grupo de transações suspeitas anteriormente analisado.

library(dplyr)
library(knitr)

# 1. Definição das bases (filtrando apenas JK conforme solicitado)
jk_suspeitas <- df %>% 
  filter(str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268'), tipo_imovel == 'Apartamento')

jk_saudaveis <- resultados_modelagem %>% 
  filter(str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268'), tipo_imovel == 'Apartamento',
         !endereco_oficial %in% df$endereco_oficial)

# 2. Cálculo das contagens e percentuais
total_jk <- nrow(jk_suspeitas) + nrow(jk_saudaveis)

tabela_distribuicao <- data.frame(
  Perfil = c("Transações Suspeitas", "Transações Saudáveis"),
  Quantidade = c(nrow(jk_suspeitas), nrow(jk_saudaveis))
) %>%
  mutate(
    Porcentagem = (Quantidade / total_jk) * 100
  )

# 3. Adicionar linha de total para conferência
linha_total <- data.frame(
  Perfil = "TOTAL GERAL",
  Quantidade = sum(tabela_distribuicao$Quantidade),
  Porcentagem = 100
)

tabela_final1 <- bind_rows(tabela_distribuicao, linha_total)

# 4. Saída formatada
kable(tabela_final1, format = "markdown", digits = 2, 
      col.names = c("Perfil da Transação", "Qtd de Transações", "% sobre o Total"))
Perfil da Transação Qtd de Transações % sobre o Total
Transações Suspeitas 113 16.72
Transações Saudáveis 563 83.28
TOTAL GERAL 676 100.00

8 Patrimônio construido

A tabela apresentada oferece um diagnóstico detalhado de 84 transações imobiliárias específicas no Condomínio Juscelino Kubitschek, comparando o “Investimento Justo” (estimado por modelo) com o “Valor Declarado” (subdeclaração) nas escrituras. A análise desta lista revela padrões alarmantes que sustentam as suspeitas de subfaturamento sistemático, os quais podem ser detalhados nos seguintes pontos:

Divergência Crônica entre Valor e Realidade: A tabela evidencia que, em quase a totalidade dos registros listados, o valor declarado pelo contribuinte é significativamente inferior ao investimento justo projetado pelo modelo. Um exemplo ilustrativo é a unidade situada na Rua dos Timbiras 2500, Bloco A, Apt 1618, onde o valor justo estimado de R$ 200.089,46 contrasta drasticamente com um valor declarado de R$ 104.561,83, revelando uma subdeclaração de quase 50%.

Magnitude do Desvio Fiscal: O “TOTAL SOMATÓRIO” ao final da tabela sintetiza a gravidade do cenário: enquanto o investimento justo total somaria R$ 32.179.327,40, o valor total declarado nessas mesmas transações foi de apenas R$ 15.631.540,39. Isso implica que, para esse conjunto de unidades, houve uma base de cálculo declarada que representa menos de 50% do valor justo esperado pelo modelo.

Foco Recorrente em Unidades Específicas: A repetição de endereços e blocos ao longo da tabela indica que o fenômeno não é aleatório, mas parece seguir uma estratégia de redução deliberada de carga tributária aplicada a unidades com características similares. Em vários casos, a discrepância é ainda mais acentuada, com valores declarados que chegam a ser frações irrisórias do valor justo, como observado em unidades onde o modelo apontava um valor superior a R$ 400.000,00, enquanto a declaração não atingiu R$ 100.000,00.

Em resumo, esta lista constitui uma evidência técnica robusta de que, para os imóveis mapeados, a fixação do valor de venda em escritura está sistematicamente desvinculada do valor de mercado. A diferença acumulada de mais de R$ 16 milhões entre o que seria justo e o que foi de fato declarado demonstra uma erosão expressiva da base de cálculo do ITBI, reforçando a necessidade de uma revisão fiscal imediata sobre estas transações.

library(dplyr)
library(stringr)
library(knitr)

# 1. Filtros e preparação
suspeitos <- df %>% 
  filter(str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268'), tipo_imovel == 'Apartamento')

saudaveis_ref <- resultados_modelagem %>% 
  filter(str_detect(endereco_oficial, 'TIMBIRAS 2500|GUAJAJARAS 1268'), tipo_imovel == 'Apartamento',
         !endereco_oficial %in% df$endereco_oficial) %>%
  group_by(area, padrao_acabamento) %>% 
  summarise(valor_m2_modelo = mean(v_m2_justo, na.rm = TRUE), .groups = 'drop') %>%
  distinct() # Garante linhas únicas de referência

# 2. Matching e Cálculo
resultado_final <- suspeitos %>%
  inner_join(saudaveis_ref, by = c("area", "padrao_acabamento")) %>%
  mutate(
    investimento_normal = area * valor_m2_modelo,
    investimento_subdeclarado = v_decl_real
  ) %>%
  select(endereco_oficial, investimento_normal, investimento_subdeclarado) %>%
  distinct() # Garante que não haja duplicidade de endereços no resultado

# 3. Totais com a linha de somatório
totais <- data.frame(
  endereco_oficial = "TOTAL SOMATÓRIO",
  investimento_normal = sum(resultado_final$investimento_normal, na.rm = TRUE),
  investimento_subdeclarado = sum(resultado_final$investimento_subdeclarado, na.rm = TRUE)
)

final_table <- bind_rows(resultado_final, totais) %>% distinct()

# 4. Impressão formatada
kable(final_table, format = "markdown", digits = 2, 
      col.names = c("Endereço", "Investimento Justo (Modelo)", "Valor Declarado (Sub)"))
Endereço Investimento Justo (Modelo) Valor Declarado (Sub)
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1826 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 69547.71
RUA DOS TIMBIRAS 2500 - APT 2210 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 79461.31
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 2614 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 221151.82 80600.71
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2230 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 159837.14 74423.17
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1618 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 200089.46 104561.83
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2130 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 159837.14 179323.54
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1408 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 39132.49
RUA DOS TIMBIRAS 2500 - APT 1822 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 200089.46 102751.65
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1324 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 51298.90
RUA DOS GUAJAJARAS 1268 - APT 502 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 255657.59 76948.35
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 402 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 255657.59 127940.14
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1716 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 159837.14 87981.18
RUA DOS TIMBIRAS 2500 - APT 1328 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 75956.14
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2214 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 150781.52
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2010 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 66595.17
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 1614 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 221151.82 149614.71
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 2638 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 221151.82 99227.24
RUA DOS TIMBIRAS 2500 - BLOCO A APT 622 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 200089.46 111630.64
RUA DOS TIMBIRAS 2500 - BLOCO A APT 345 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 221151.82 135663.96
RUA DOS TIMBIRAS 2500 - APT 1314 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 172663.22
RUA DOS TIMBIRAS 2500 - APT 1314 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 92679.01
RUA DOS GUAJAJARAS 1268 - APT 2424 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 207447.75 98232.43
RUA DOS TIMBIRAS 2500 - APT 1319 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 221151.82 122741.61
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1545 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 221151.82 73315.18
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2224 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 269364.80 72769.34
RUA DOS GUAJAJARAS 1268 - APT 1420 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 221151.82 72769.34
RUA DOS GUAJAJARAS 1268 - APT 3212 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 221151.82 48113.59
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 2828 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 221151.82 108255.59
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1622 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 200089.46 51028.30
RUA DOS TIMBIRAS 2500 - BLOCO A APT 804 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 200089.46 50948.69
RUA DOS GUAJAJARAS 1268 - APT 307 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 194531.45 115078.10
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2129 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 221151.82 39064.07
RUA DOS GUAJAJARAS 1268 - APT 1240 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 207447.75 33837.91
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1320 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 200089.46 56116.01
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 3228 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 221151.82 89285.64
RUA DOS TIMBIRAS 2500 - APT 1711 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 87083.39 55553.58
RUA DOS TIMBIRAS 2500 - BLOCO A APT 902 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 200089.46 155224.05
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1032 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 607220.90 327650.31
RUA DOS TIMBIRAS 2500 - APT 1733 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 183988.43 64892.58
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1725 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 183988.43 64892.58
RUA DOS GUAJAJARAS 1268 - APT 2424 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 207447.75 64892.58
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1710 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 189245.87
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 2236 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 28966.45
RUA DOS GUAJAJARAS 1268 - APT 1222 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 206140.66
RUA DOS TIMBIRAS 2500 - BLOCO A APT 806 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 61663.34
RUA DOS TIMBIRAS 2500 - APT 1818 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 204337.27
RUA DOS GUAJAJARAS 1268 - APT 2036 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 219986.48
RUA DOS TIMBIRAS 2500 - APT 1504 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 212699.55
RUA DOS GUAJAJARAS 1268 - APT 901 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 520485.99 35231.53
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1728 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 299467.96
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 505 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 236632.60 66792.98
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2118 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 158193.90
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 2240 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 216495.45 123039.70
RUA DOS TIMBIRAS 2500 - APT 1714 BLOCO A - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 333964.89
RUA DOS TIMBIRAS 2500 - BLOCO A APT 708 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 314688.61
RUA DOS TIMBIRAS 2500 - APT 1632 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 701832.53 489515.62
RUA DOS GUAJAJARAS 1268 - APT 904 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 589079.94 346810.56
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 1230 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 134325.52
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 1038 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 60446.48
RUA DOS TIMBIRAS 2500 - BLOCO A APT 331 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 183988.43 98815.27
RUA DOS GUAJAJARAS 1268 - APT 1606 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 81002.61
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 1038 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 58321.88
RUA DOS TIMBIRAS 2500 - APT 467 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 140447.68 80647.77
RUA DOS TIMBIRAS 2500 - BLOCO A APT 926 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 205989.91
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 3440 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 216495.45 95072.27
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 1410 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 216495.45 47322.96
RUA DOS TIMBIRAS 2500 - APT 453 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 140447.68 78871.60
RUA DOS TIMBIRAS 2500 - APT 2104 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 149841.81
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 301 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 520485.99 353650.25
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 1040 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 216495.45 140474.92
RUA DOS TIMBIRAS 2500 - BLOCO A APT 333 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 183988.43 108021.79
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1923 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 183988.43 21052.09
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2230 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 534044.76 352004.03
RUA DOS TIMBIRAS 2500 - BLOCO A APT 932 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 701832.53 295130.63
RUA DOS TIMBIRAS 2500 - BLOCO A APT 630 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 534044.76 339400.23
RUA DOS GUAJAJARAS 1268 - APT 1238 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 213969.71
RUA DOS GUAJAJARAS 1268 - APT 1404 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 314815.26 212757.06
RUA DOS TIMBIRAS 2500 - BLOCO A APT 2224 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 249439.31
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1222 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 175828.64
RUA DOS TIMBIRAS 2500 - APT 1316 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 534044.76 380239.39
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1132 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 701832.53 430692.55
RUA DOS TIMBIRAS 2500 - APT 2112 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 265669.42
RUA DOS TIMBIRAS 2500 - APT 2202 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 63285.02
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 504 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 589079.94 255061.34
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1532 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 701832.53 393459.13
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1618 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 289792.00 38083.26
RUA DOS TIMBIRAS 2500 - BLOCO A APT 360 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 140447.68 50299.80
RUA DOS TIMBIRAS 2500 - BLOCO A APT 626 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 238924.06
RUA DOS TIMBIRAS 2500 - BLOCO A APT 321 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 314815.26 176049.30
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 304 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 589079.94 60483.18
RUA DOS TIMBIRAS 2500 - BLOCO A APT 728 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 84676.45
RUA DOS TIMBIRAS 2500 - BLOCO A APT 908 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 284027.05
RUA DOS GUAJAJARAS 1268 - APT 1013 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 125090.40 57358.91
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 501 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 520485.99 159247.05
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1124 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 267337.63
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1414 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 312953.74
RUA DOS TIMBIRAS 2500 - BLOCO A APT 612 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 238785.18
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1624 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 238785.18
RUA DOS TIMBIRAS 2500 - BLOCO A APT 1108 - SANTO AGOSTINHO - 30140-903 - BELO HORIZONTE - MG 434310.99 288007.89
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 601 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 520485.99 393451.77
RUA DOS GUAJAJARAS 1268 - BLOCO B APT 2408 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 216495.45 128999.24
RUA DOS GUAJAJARAS 1268 - APT 3007 - SANTO AGOSTINHO - 30180-107 - BELO HORIZONTE - MG 125090.40 89087.66
TOTAL SOMATÓRIO 32179327.40 15631540.39