ITBI São Paulo — dataset e análise

Transações imobiliárias com recolhimento de ITBI na cidade de São Paulo, 2019–2026, extraídas das planilhas oficiais da Secretaria Municipal da Fazenda, limpas, agregadas em negócios e geocodificadas.

Gerado em 2026-08-15 · valores reais deflacionados pelo IPCA, base 202607 · 2026 é um ano parcial (a fonte cobre apenas os primeiros meses), então comparações que terminam em 2026 comparam um ano incompleto com anos completos

1 290 782
linhas DTI
1 linha = 1 declaração paga
1 227 863
negócios
41 799 agregados de 2+ linhas
695 254
vendas de mercado
compra e venda, 100%, com VVR
-4.5%
R$/m² real 2019→2026
nominal +38.5%
92.5%
linhas geocodificadas
confiança alta ou média

O preço real por m² caiu, mesmo com o preço nominal subindo.

A mediana nominal de R$/m² de apartamentos em condomínio subiu ao longo de 2019–2026, mas a inflação acumulada no período foi maior. Em reais constantes o apartamento mediano de São Paulo está mais barato hoje do que em 2019. Qualquer leitura da série nominal isolada inverte essa conclusão.

Preço por m² — apartamentos em condomínio

Série is_clean_price: compra e venda de 100% do imóvel, com valor venal de referência, dentro dos limites absolutos e sem outliers contra o próprio mercado local. Uso IPTU 20, área construída acima de 20 m². É a mesma definição usada pelo explorador e pela CLI.

R$ 3 407R$ 4 055R$ 4 703R$ 5 352R$ 6 00020192020202120222023202420252026Real (2026 R$) · 2019: R$ 5 432Real (2026 R$) · 2020: R$ 5 407Real (2026 R$) · 2021: R$ 5 348Real (2026 R$) · 2022: R$ 5 024Real (2026 R$) · 2023: R$ 5 114Real (2026 R$) · 2024: R$ 5 211Real (2026 R$) · 2025: R$ 5 248Real (2026 R$) · 2026: R$ 5 189Real (2026 R$)Nominal · 2019: R$ 3 703Nominal · 2020: R$ 3 810Nominal · 2021: R$ 4 065Nominal · 2022: R$ 4 179Nominal · 2023: R$ 4 453Nominal · 2024: R$ 4 733Nominal · 2025: R$ 5 000Nominal · 2026: R$ 5 128Nominal
Mediana de R$/m², nominal e deflacionada pelo IPCA.
AnoNegóciosNominal R$/m²Real R$/m² (202607)
201943 727R$ 3 703R$ 5 432
202045 055R$ 3 810R$ 5 407
202163 340R$ 4 065R$ 5 348
202249 668R$ 4 179R$ 5 024
202349 272R$ 4 453R$ 5 114
202458 694R$ 4 733R$ 5 211
202561 480R$ 5 000R$ 5 248
202629 339R$ 5 128R$ 5 189

Volume transacionado

0 bi30 bi60 bi90 bi120 bi20192020202120222023202420252026Volume (R$ bi, real) · 2019: 73 biVolume (R$ bi, real) · 2020: 80 biVolume (R$ bi, real) · 2021: 102 biVolume (R$ bi, real) · 2022: 75 biVolume (R$ bi, real) · 2023: 75 biVolume (R$ bi, real) · 2024: 87 biVolume (R$ bi, real) · 2025: 90 biVolume (R$ bi, real) · 2026: 42 biVolume (R$ bi, real)
Soma dos valores de transação de vendas de mercado, em reais constantes. 2026 é um ano parcial — a fonte publicada cobre apenas os primeiros meses, então a queda no último ponto é de cobertura, não de mercado.
AnoNegócios de mercadoVolume real (R$ bi)
201973 08772.6
202075 20279.6
2021103 287101.9
202281 84874.6
202379 71574.7
202493 09587.4
202596 78389.9
202644 56942.2

Preço por distrito

Apartamentos, negócios a partir de 2025, distritos com pelo menos 40 negócios (91 distritos qualificados).

Jardim PaulistaJardim Paulista: R$ 8 983R$ 8 983MoemaMoema: R$ 8 926R$ 8 926Itaim BibiItaim Bibi: R$ 8 817R$ 8 817PinheirosPinheiros: R$ 8 515R$ 8 515Alto De PinheirosAlto De Pinheiros: R$ 7 486R$ 7 486Vila MarianaVila Mariana: R$ 7 333R$ 7 333ConsolacaoConsolacao: R$ 7 226R$ 7 226PerdizesPerdizes: R$ 6 951R$ 6 951Campo BeloCampo Belo: R$ 6 928R$ 6 928Vila LeopoldinaVila Leopoldina: R$ 6 800R$ 6 800Santo AmaroSanto Amaro: R$ 6 711R$ 6 711Barra FundaBarra Funda: R$ 6 534R$ 6 534Bela VistaBela Vista: R$ 6 393R$ 6 393LapaLapa: R$ 6 222R$ 6 222SaudeSaude: R$ 5 792R$ 5 792
15 distritos mais caros por mediana de R$/m² real.
Ver os 25 primeiros em tabela
DistritoNegóciosR$/m² real
Jardim Paulista2 863R$ 8 983
Moema2 835R$ 8 926
Itaim Bibi4 284R$ 8 817
Pinheiros2 235R$ 8 515
Alto De Pinheiros526R$ 7 486
Vila Mariana3 822R$ 7 333
Consolacao1 718R$ 7 226
Perdizes2 822R$ 6 951
Campo Belo1 844R$ 6 928
Vila Leopoldina860R$ 6 800
Santo Amaro2 334R$ 6 711
Barra Funda1 162R$ 6 534
Bela Vista1 579R$ 6 393
Lapa1 842R$ 6 222
Saude2 683R$ 5 792
Republica2 385R$ 5 758
Ipiranga1 720R$ 5 659
Santa Cecilia2 341R$ 5 513
Liberdade1 248R$ 5 295
Tatuape2 194R$ 5 245
Cursino1 090R$ 5 239
Mooca1 542R$ 5 074
Butanta861R$ 5 070
Grajau96R$ 4 992
Agua Rasa1 006R$ 4 989

Ágio sobre o valor venal de referência

Razão entre o valor declarado e o valor venal de referência da Prefeitura. Serve como termômetro de mercado e também de pressão por subdeclaração.

AnoValor declarado / valor venal de referência
20191.13×
20201.20×
20211.31×
20221.19×
20231.19×
20241.23×
20251.23×
20261.21×

Financiamento

Ano% financiadoLTV mediano
201928.5%69.3%
202032.9%72.7%
202136.9%72.6%
202233.1%72.2%
202332.2%71.7%
202435.2%71.3%
202529.4%68.4%
202635.8%71.9%

Agregação de transações — o que foi feito e o quanto importa

A fonte não tem identificador de negócio: cada linha é uma DTI de um único SQL. Um apartamento vendido com sua vaga são duas linhas sem nenhum vínculo explícito. A agregação é inferida em tiers, e cada negócio carrega o tier que o produziu.

O efeito sobre os negócios afetados

Nos 29 017 negócios efetivamente agregados (tiers A e B, residenciais), a mediana de R$/m² passa de R$ 5 410 sem agregação para R$ 6 280 com agregação — uma diferença de +16.1%. Somar a vaga ao valor sem somá-la à área é o que corrige o número.

O efeito sobre o agregado

No total da cidade o deslocamento é pequeno, porque só uma fração dos negócios é agregada. Isso é um resultado, não uma decepção: para estatística agregada a agregação quase não muda nada; para o preço de um imóvel específico muda muito. A política agressiva é mostrada apenas para quantificar o erro que ela cometeria.

PolíticaNegóciosAgregadosMaior grupoR$/m² medianovs. sem agregação
no_merge444 54101R$ 4 667+0.00%
A428 72911 66841R$ 4 709+0.90%
A+B428 25412 01941R$ 4 710+0.92%
A+B+C426 94512 527100R$ 4 710+0.92%
aggressive301 63653 245542R$ 4 750+1.78%

Precisão medida em amostra rotulada

Amostra estratificada de grupos reais, rotulada manualmente a partir de complemento, uso, valores, áreas e proximidade de matrícula. A matrícula é um sinal independente: o algoritmo de agregação nunca a consulta.

GrupoRotuladosMesma transaçãoNãoIncertoPrecisão
A141400100%
B9901100%
C6602100%
REFUSED:launch_guard_multi_main60600% recusa indevida

Amostra pequena e rotulada por uma única pessoa — trate como indicativo, não como medida definitiva. A planilha completa de rotulagem está em validation/labeling_sheet.csv para ampliar a amostra.

Corroboração independente pela matrícula

Matrículas das unidades de um mesmo prédio são abertas em bloco, e as unidades transferidas na mesma escritura ficam próximas nesse bloco. O algoritmo de agregação nunca consulta a matrícula, então ela é uma evidência independente. Comparamos pares principal+acessório que foram agregados contra pares principal+acessório do mesmo prédio que não foram.

ParesNDistância mediana de matrículap90Até 50
Agregados pelo matcher (tiers A e B)53 357595464.4%
Mesmo prédio, não agregados (nulo)200 0001 17148 1199.7%

Pares agregados ficam 234× mais próximos no registro do que pares não agregados no mesmo prédio (mediana 5 contra 1 171). Se a agregação fosse arbitrária as duas distribuições coincidiriam.

Distribuição por tier

TierNegóciosR$/m² real mediano
SINGLE1 186 064R$ 5 018
A38 688R$ 6 303
C2 065R$ 2 177
B1 046R$ 6 104

Geocodificação

Cada SQL é resolvido para uma coordenada pela camada de lotes do GeoSampa, em ordem decrescente de confiança. Unidades de condomínio não têm polígono próprio — o prédio aparece como lote 0000 com código de condomínio — então elas são resolvidas por endereço dentro do próprio setor/quadra.

RegraSQLs%
condo_address521 50570.2%
sql_exact179 41424.1%
street_nearest_number19 1662.6%
block_centroid17 0452.3%
street_in_block2 8320.4%
setor_street_nearest2 4320.3%
address_city3360.1%
sql_no_dv2880.0%
street_near_block900.0%
none300.0%

Validação independente

A área do lote registrada pelo GeoSampa é comparada com a área do lote registrada na própria planilha do ITBI, e SQLs resolvíveis por duas regras diferentes são comparados por distância.

área do lote: {"n_compared": 179413, "pct_lot_area_within_2pct": 99.68, "median_abs_area_diff_m2": 0.0}
concordância entre regras: {"n_compared": 163653, "median_distance_m": 0.0, "p90_distance_m": 0.0, "pct_within_100m": 99.96}

Qualidade dos dados

Nada é descartado silenciosamente: linhas problemáticas são mantidas e sinalizadas, e a contagem de cada flag é recalculada a cada execução.

Flag de qualidadeLinhas% do total
area_construida_zero187 12914.50%
numero_placeholder132 49810.26%
vvr_proporcional_zero38 3262.97%
valor_transacao_nominal19 5341.51%
identity_base_calculo_violated1 2930.10%
proporcao_out_of_range1830.01%
area_construida_building_level1300.01%
valor_transacao_non_positive180.00%
data_transacao_missing120.00%
identity_vvr_proporcional_violated120.00%
cells_beyond_schema:AC60.00%
ano_construcao_implausible50.00%
cep_outside_sao_paulo30.00%
header_text_in_cell:complemento30.00%
acc_recovered_from_column_ac20.00%
header_text_in_cell:sql10.00%
sql_missing10.00%

Verificações automáticas — 25 ok · 1 avisos · 0 falhas

VerificaçãoStatusValorDescrição
row_countOK1290782curated transaction rows
row_uid_uniqueOK1290782row_uid must uniquely identify a curated row
parse_reconcilesOK1290782every sheet's rows accounted for as header/blank/data
clean_row_conservationOK1290782no row silently lost between parse and curated table
sql_lengthOK0every SQL is exactly 11 digits after zero-padding
sql_presentWARN1rows with no cadastral number (source contamination)
setor_092_absentOK0the data dictionary states setor 092 does not exist
base_calculo_identityOK1293base_calculo = max(valor, vvr_proporcional), excluding excess-tax naturezas
no_future_datesOK0transaction dates in the future
guia_not_long_before_transactionOK4guia paid more than a month before the deed date
guia_lag_boundedOK5753guia paid more than two years after the deed date
guia_months_completeOK1each source year should carry 12 guia months (current year excepted)
apartment_price_per_m2_plausibleOK4250.0median R$/m2 for condominium apartments across 2019-2026
price_series_no_implausible_dropOK0nominal median R$/m2 should not fall more than 10% year on year
deal_row_conservationOK1285824every canonical transaction row belongs to exactly one deal
launch_guard_holdsOK0no deal may contain two or more main units
no_row_in_two_dealsOK0a transaction row may not appear in more than one deal
deal_values_non_negativeOK0deal totals >= 0
enriched_matches_dealsOK1227863the enriched table has exactly one row per deal
enriched_deal_id_uniqueOK0the geocode join must not multiply rows
every_market_deal_judgedOK0no market sale escapes the outlier test for want of a peer group
outlier_share_reasonableOK3.128share of market sales flagged as price outliers
clean_series_within_boundsOK0the clean price series respects its own absolute bounds
coords_inside_sao_pauloOK0every geocoded point falls inside the municipal bounding box
geocode_assigned_precisionOK95.81share of SQLs whose ASSIGNED precision estimate is <= 100 m (a label from the rule that resolved them, not a measurement)
geocode_coverageOK99.996share of distinct SQLs resolved to a coordinate

Ressalvas

A fonte identifica a transação pela guia paga, não pela escritura: a aba mensal da planilha é o mês de pagamento, e a data de transação pode ser bem anterior. Todas as séries aqui usam a data de transação.

Valores são declarados pelo contribuinte. Subdeclaração existe e o ágio sobre o valor venal de referência é um indicador indireto dela.

Unidades de lançamento ainda não individualizadas aparecem com uso “terreno” e, às vezes, com a área construída do prédio inteiro; essas linhas são sinalizadas e excluídas das estatísticas de preço.

A área construída é a do cadastro do IPTU. Em condomínio ela é a fração ideal aplicada à área construída total do empreendimento — o rateio das áreas comuns vem incluído — e por isso é maior que a área privativa dos anúncios: na R. Canário 130, 675–789 m² no cadastro contra 406–463 m² anunciados, um fator de ~1,6. O R$/m² daqui sai menor que o R$/m² “privativo” dos portais; a comparação entre imóveis dentro da base permanece consistente.

Nomes de compradores e vendedores não são divulgados, o que torna impossível provar que duas linhas pertencem ao mesmo negócio. Daí a estrutura em tiers.