O que você vê nos painéis de gasto
A cota parlamentar — formalmente CEAP (Cota para o Exercício da Atividade Parlamentar) — é a verba pública que cada deputado usa para custear o mandato: passagens, combustível, divulgação, aluguel de escritório, consultorias. Cada gasto vira um documento (uma nota fiscal) na API da Câmara. O Cadeira Vazia ingere todos eles — cerca de 734 mil documentos, R$ 841 milhões entre 2023 e 2026 — e os apresenta em alguns painéis:
- Raio-X do gasto da cota — para onde vai o dinheiro, por categoria, por UF, e a “queima de dezembro”.
- CEAP forense — tabelas exploráveis por fornecedor, deputado e documento, com link para a nota fiscal real e uma coluna de score de anomalia.
- A rede de fachada — quais empresas concentram muitos deputados de modos suspeitos.
- Presença × anomalia — o cruzamento que mostra que faltar e gastar de forma atípica são coisas de pessoas diferentes.
Esta página explica como esses números são calculados — em especial o que é o score de anomalia e por que valores redondos são um sinal.
Por que valor redondo é sinal
A peça central da análise é uma flag simples, calculada na ingestão de cada documento: eh_redondo — o valor da nota é um múltiplo exato de R$ 100? A lógica:
Quando um serviço é realmente prestado e precificado pelo mercado, o preço quase nunca é redondo. Combustível sai R$ 3.490,60 (litros × preço da bomba); um táxi dá R$ 84,40; uma passagem aérea, R$ 1.847,33 (tarifa + taxas). O mundo real produz centavos. Valores redondos surgem quando o preço é inventado, não calculado — alguém decidiu faturar “R$ 10.000” em vez de cobrar pelas horas que deram R$ 9.347,80. É a assinatura de um contrato fixo disfarçado de pagamento por entrega.
Isso não é intuição solta — é primo da Lei de Benford, a distribuição natural dos dígitos em dados financeiros reais, usada há décadas por auditoria contábil (TCU, Receita, peritos). Dados legítimos têm uma assinatura estatística de dígitos; excesso de valores redondos a viola de um modo específico (Nigrini, Benford’s Law, 2012).
E os dados confirmam: o % de documentos redondos varia de 0,3% a 81% entre as categorias — um fator de ~270×. Se fosse ruído, seria igual em todas.
| Categoria | % redondo | Leitura |
|---|---|---|
| Divulgação da atividade parlamentar | 81,0% | preço inventado |
| Locação/fretamento de veículos | 65,1% | 2º padrão de fachada |
| Manutenção de escritório | 16,2% | misto |
| Combustíveis | 16,3% | preço de bomba — real |
| Táxi/pedágio/estacionamento | 0,6% | corrida real |
| Passagem aérea | 0,3% | tarifa de mercado |
As categorias onde é fácil inflar ou inventar (divulgação, locação) são as redondas; aquelas cujo preço é ditado pelo mercado (aéreo, táxi, combustível) são quebradas. A flag separa o que é precificado do que é combinado — não por construção, mas como fato emergente dos dados.
O detector de anomalia
A flag de valor redondo é uma das 14 características que descrevem o padrão de gasto de cada deputado. As principais:
- Gasto discricionário — gasto total sem passagem aérea. A aérea é a maior categoria, varia com a distância da UF e quase não é redonda — incluí-la diluiria a fachada e criaria viés geográfico.
- % redondo em cada categoria-fachada — separado — divulgação, locação e escritório têm cada um sua própria fração de notas redondas. Mantê-los separados (não somados num número global) é o que mais informa: medido empiricamente, separar deu desempenho melhor do que agregar (o global se dilui com combustível, que é redondo por acaso).
- Concentração no maior fornecedor (sem aéreo) — fração do gasto no top-1 fornecedor, excluindo a companhia aérea (senão a métrica viraria só “usou muito uma cia”).
- Taxa de glosa, % em dezembro, nº de fornecedores, nº de categorias, ticket máximo e mediano — o resto do perfil de gasto.
Várias dessas correções vieram da investigação: as versões ingênuas das features eram espúrias —
concentração no maior fornecedorera dominada por passagem aérea (uma cia = quase todo o transporte);% de recibosera inflada por táxi/pedágio (recibo simples legítimo);gasto totalera inflado pela aérea. Cada uma foi substituída pela versão corrigida acima. A engenharia de features é metodologia.
Sobre essas 14 características roda o detector de anomalia.
Por que não-supervisionado
Não existe uma lista oficial e completa de “quem fraudou” para treinar um classificador. Então o detector não aprende a separar “culpado” de “inocente” — ele aprende o que é o padrão normal de gasto e mede quão longe cada deputado está dele. Quem se afasta muito do normal recebe score alto. É detecção de outlier, não de culpa.
Ensemble — três olhares, não um
Usamos três detectores com vieses diferentes, combinados por média de ranking (robusto a escalas distintas):
- Isolation Forest — anomalia é o que é fácil de isolar com cortes aleatórios.
- Local Outlier Factor — anomalia é o ponto em região de baixa densidade, longe dos vizinhos.
- One-Class SVM — anomalia é o que cai fora da fronteira que envolve a maioria.
Combinar três reduz o viés de qualquer um isolado. O resultado é reprodutível (mesma semente, mesmo resultado) e estável: rodando com sementes diferentes, o conjunto de suspeitos coincide em ~96%.
Calibração — ensinar o modelo a pesar o que importa
Rodando cego, o ensemble priorizava o que é estatisticamente raro — e isso nem sempre é o que importa (ele pesava a taxa de glosa e a queima de dezembro, não o valor redondo). A investigação manual, caso a caso, é que descobriu que o discriminador real é o redondo em categoria-fachada. Então o score recebe uma calibração leve e honesta: aproxima do topo os deputados parecidos com um pequeno conjunto de casos de fachada confirmados por análise manual. Sem esses casos, o detector retorna o ensemble inalterado — a calibração nunca inventa sinal.
Como sabemos que é sinal real (e não número bonito)
Com poucos casos confirmados, uma métrica alta pode ser sinal verdadeiro ou sorte de amostra pequena. Então atacamos o próprio resultado de propósito, com três testes:
- Null model (teste de permutação). Embaralhamos os rótulos de “suspeito/limpo” 5.000 vezes e recalculamos a métrica a cada vez. Se o resultado observado não se destacar dessa nuvem de acaso, é artefato. Resultado: p ≈ 0,0006 — a chance de o padrão ser acaso é menos de 1 em mil.
- Bootstrap. Reamostramos os casos confirmados 5.000 vezes para um intervalo de confiança honesto da métrica — assumindo a incerteza de um ground truth pequeno em vez de esconder.
- LOPO (Leave-One-Positive-Out). Calibrar o score com os casos confirmados e medir nesses mesmos casos seria circular — inflaria a métrica. No LOPO, para avaliar cada caso, ele é deixado de fora da calibração: o score dele é medido contra um modelo que nunca o viu. A métrica held-out bate com a in-sample, confirmando que não há vazamento.
A validação que mais importa: olhares externos
Os testes acima provam que o padrão não é acaso — mas não que o critério está certo (afinal, nós escolhemos os casos pelo mesmo eixo que o modelo usa). A quebra real dessa circularidade veio de fora: coletamos casos sinalizados por fontes independentes que não conhecem nosso critério — STF, Polícia Federal, imprensa investigativa — e os usamos só para avaliar (nunca para calibrar).
O resultado é forte: os casos de agência de publicidade de fachada investigados pelo STF aparecem no topo do nosso ranking — um deles no #1 absoluto, outro perto disso, ambos fora da amostra de calibração. O detector encontrou, de forma independente, os mesmos padrões que a Polícia Federal e o STF investigam.
Há uma nuance honesta aqui: a fraude de locação (outro padrão investigado) se dilui no ranking por deputado e só aparece no ranking por fornecedor — porque a rede de locadoras de fachada concentra muitos deputados numa empresa só, e é nesse grão que ela fica visível. Grãos diferentes capturam fraudes diferentes.
Os três grãos
A mesma máquina roda em três níveis, cada um respondendo a uma pergunta:
- Deputado — este parlamentar tem padrão de gasto atípico? É o grão do perfil.
- Fornecedor — esta empresa é fachada? É onde a rede de repasse aparece: uma empresa que atende 70 deputados com 95% de notas redondas não some na média individual.
- Documento — esta nota é atípica? A evidência atômica, que liga ao link da nota fiscal real.
Como o painel forense é montado
O painel CEAP forense não despeja as 738 mil notas no navegador — isso seria impraticável e ilegível. Ele aplica recortes transparentes:
- Fornecedores — mostramos os relevantes: quem atende 3 ou mais deputados, OU movimenta R$ 200 mil ou mais, OU é multi-deputado com alta fração de notas redondas. São os hubs onde a rede de repasse pode aparecer. Cada um traz grau (nº de deputados que pagaram), total, % redondo, concentração no top deputado, a natureza jurídica (da Receita) e o score do detector.
- Documentos — expomos as 6 mil notas mais atípicas das 738 mil, ordenadas pelo score de anomalia do detector e, em seguida, por flags transparentes (redondo + alto valor + concentração + glosa). Cada nota leva ao documento fiscal real na API da Câmara.
- Deputados / partidos / UF — o mesmo gasto agregável por grão, com o score por deputado.
A coluna de score de anomalia vem da tabela de scores do detector (ml.ceap.scores__*), cruzada com o gold de gasto. Quando o detector ainda não rodou, a coluna degrada para vazio e o painel continua funcionando — o dado descritivo nunca depende do modelo.
O cruzamento que desmonta o “vilão único”
O painel presença × anomalia cruza dois eixos que a intuição junta mas os dados separam: quem falta (presença) e quem gasta de forma atípica (score do detector). O resultado é contraintuitivo:
A correlação entre presença e score de anomalia é praticamente nula (Spearman ≈ −0,11). Quem mais falta não é quem tem o gasto mais suspeito — são pessoas diferentes. O quadrante mais revelador é o “presente e suspeito”: deputados de alta presença com score alto de gasto atípico.
O cálculo é explícito: o eixo de presença é dividido por um corte absoluto de 90% (intuitivo — “presente” é ir à maioria das sessões; a mediana ~93,7% classificaria alguém com 91% como “ausente”, o que seria absurdo), e o de score pela mediana (não há âncora absoluta natural para um score de anomalia). O Spearman é recalculado a cada atualização, sobre deputados com ao menos 10 sessões. Cruzar os eixos desmonta a falácia do “vilão único” — faltar e gastar mal são dimensões distintas do mandato.
Limites honestos
- Ground truth pequeno. O conjunto de casos confirmados é da ordem de algumas dezenas. O intervalo de confiança reflete isso, e a maior alavanca de melhoria não é o modelo — é ampliar os casos confirmados, idealmente com decisões já julgadas pelo TCU.
- O que testamos e não vingou (registrado por honestidade). Tentamos técnicas mais modernas — um autoencoder no grão documento e um meta-modelo que consolidaria os três grãos. Nenhum melhorou a detecção neste caso (os dados são tabulares e o sinal já estava saturado pelo ensemble). Registramos os experimentos negativos porque ceticismo com o próprio trabalho é parte do método — mas eles não entram no que o site usa.
- Anomalia ≠ irregularidade. Repetimos porque é o ponto: o score prioriza auditoria. A nota fiscal está linkada justamente para o leitor verificar e julgar.
Linkagem
- CEAP forense · Rede de fachada · Raio-X da cota — onde o método aparece.
- Presença × anomalia — faltar e gastar de forma atípica são pessoas diferentes.
- Emendas & transferências — o outro eixo do dinheiro público.