"Modelos estatísticos de 'Caixa Preta' não sobrevivem a auditorias do Banco Central. Lucro real se protege com governança, higiene de dados e respeito à macroeconomia."
Este repositório documenta a construção ponta a ponta de um Scorecard de Crédito Multivariável (White-box Model). O projeto ilustra a evolução de um modelo experimental (V1) para uma Esteira de Governança de Risco (V2), detalhando o tratamento de dados brutos, a matemática do Weight of Evidence (WoE) e a simulação de impacto no balanço patrimonial sob estresse da Taxa Selic.
Modelos de risco puramente estatísticos quebram em produção por ingerirem "Lixo Operacional". Ao cruzar a base tratada com as predições na matriz de teste cega (Out-of-Time), comparamos o modelo baseline (V1) com a nossa esteira de alta governança (V2).
A introdução das réguas da FGV e o tratamento estrito de DTI no V2 eliminaram o Overfitting e recalibraram os pesos da Regressão Logística.
O Prêmio da Governança: O V2 gerou um aumento de R$ 33,69 milhões adicionais na proteção de capital em relação ao V1.
| Métrica / Auditoria | V1 (Baseline / Caixa Cinza) | V2 (Champion / Auditável) | Impacto no Balanço |
|---|---|---|---|
| GINI (Capacidade de Separação) | 31.00% (AUC: 0.6550) | 32.93% (AUC: 0.6647) | Maior precisão na distinção de risco. |
| Caloteiros Reais Barrados | 22.083 CPFs | 25.452 CPFs | + 3.369 fraudes/calotes evitados. |
| Estimativa de Loss Evitado | R$ 220.830.000,00 | R$ 254.520.000,00 | + R$ 33.690.000,00 salvos. |
O sistema opera em uma arquitetura modularizada, separando a limpeza de dados da estatística e da tesouraria:
- O Gabarito (Target): Para evitar Data Leakage, a variável original
loan_statusfoi ejetada após a criação da bússola bináriagood_bad_loan(1 = Lucro/Bom Pagador, 0 = Loss/Caloteiro). - Expurgo de Ativos Tóxicos (Regra dos 50%): Variáveis com mais de 50% de dados nulos (NaN) foram sumariamente excluídas. Imputar esses vazios configuraria fraude estatística.
- Filtro de Sobrevivência (Zero Data Loss): Rendas anuais declaradas abaixo de R$ 3.600 não indicam pobreza, mas erro de digitação na captação. Em vez de deletar esses clientes (gerando crash na API em produção), o algoritmo recalibra essas distorções internamente.
- Abrasileiramento (Padrão FGV): A renda bruta não linearizada destrói a Regressão Logística. A base foi submetida ao enquadramento oficial da Fundação Getúlio Vargas (FGV), transformando valores contínuos em "gavetas" socioeconômicas auditáveis.
Para cumprir o Acordo de Basileia, algoritmos Black-box foram descartados. A matriz foi convertida em pesos de risco utilizando o Weight of Evidence (WoE), que lineariza o risco calculando o logaritmo natural da proporção entre clientes adimplentes e inadimplentes:
- Auditoria de Monotonicidade: Variáveis chave foram forçadas a apresentar progressão lógica. Ex: Hipotecas representam risco mitigado (WoE positivo), enquanto Locatários geram risco acentuado (WoE negativo).
-
Information Value (IV): Variáveis com
$IV < 0.02$ foram classificadas como "ruído inútil" e isoladas do motor preditivo.
Modelos estáticos falham quando o custo de captação do banco aumenta. O V2 possui uma Política de Crédito Dinâmica baseada no Valor Esperado (EV), reagindo em tempo real à Taxa Selic:
| Cenário Econômico | Selic (a.a.) | Taxa de Aprovação | CPFs Reprovados | Lucro Líquido Final |
|---|---|---|---|---|
| Otimista (Dinheiro Barato) | 7.0% | 91.0% | 8.414 | R$ 94.328.100,00 |
| Base (Operação Normal) | 10.5% | 84.7% | 14.300 | R$ 68.260.750,00 |
| Estresse (Crise / Dinheiro Caro) | 14.0% | 74.3% | 24.000 | R$ 45.317.600,00 |
Este projeto não é apenas um classificador estatístico; é um motor de proteção de balanço. As decisões de modelagem foram tomadas com base no rigor de auditoria interna e na realidade da Diretoria Comercial:
Quando a Selic sobe para 14%, a simulação mostra a aprovação caindo para 74.3%. Isso não é uma "falha comercial", é a trava de segurança contra o Esmagamento de Margem (Margin Squeeze). Com o custo de captação alto, a margem de lucro não cobre o risco de clientes Subprime.
- A Estratégia: Para manter o Market Share sem gerar Loss, o modelo aponta para a exigência de Garantias Reais (Veículos ou Imóveis). Ao atrelar um bem à dívida, a Probabilidade de Default (PD) e a Severidade da Perda (LGD) despencam. A própria auditoria matemática do WoE comprova isso: clientes na categoria Mortgage (Bens Alienados) mitigam o risco a ponto de viabilizar a aprovação mesmo em cenários de juros altos.
Modelos preditivos complexos como Random Forest e XGBoost operam como "Caixas Pretas". Embora tenham alta acurácia, eles falham em auditorias do Banco Central porque a instituição precisa justificar legalmente o motivo de uma recusa de crédito.
- A escolha pela Regressão Logística com WoE lineariza o risco, lida naturalmente com missing values sem imputações artificiais e gera um Scorecard onde cada ponto ganho ou perdido pelo cliente é 100% explicável e rastreável.
A infraestrutura do pipeline segue protocolos rígidos para garantir que o modelo não "engasgue" em produção:
- Prevenção de Vazamento: A variável Target original (
loan_status) foi expurgada no momento zero para evitar Data Leakage. - Higiene de Dados: Variáveis com mais de 50% de nulidade foram descartadas. Valores anômalos (rendas irracionais) não deletam a linha do cliente (o que causaria perda de dados na API), mas são isoladas e penalizadas matematicamente. O código segue a máxima corporativa: é modular, performático e não faz "SELECT *" em bases de produção.
Para garantir alinhamento com a Diretoria Comercial, a base foi segmentada utilizando a documentação oficial da FGV (Salário Mínimo base R$ 1.380).

A "escadinha" perfeita de risco: clientes com financiamento imobiliário (Mortgage) apresentam menor propensão ao default, enquanto locatários (Rent) geram WoE negativo.

O projeto segue princípios de Clean Code e Governança de Dados, isolando as etapas críticas de transformação para garantir reprodutibilidade.
BASEL_RISK_MODELING/
├── data/ # Data Lake (Bases de Crédito Bruta e Teste)
├── img/ # Evidências Visuais e Documentação de Regras
├── src/ # Motores de Processamento (Lógica Estrita)
│ ├── data_ingestion.py # ETL e Higienização Inicial
│ ├── feature_engineering.py # Regras de Negócio (FGV e DTI)
│ ├── woe_iv.py # Motor Estatístico (Weight of Evidence)
│ ├── scorecard_scaler.py # P&L, Escalonamento e Estresse Selic
│ └── plots_woe.py # Geração de Laudos Visuais
├── 01_Challenger_V1.ipynb # Laboratório Experimental (Baseline)
├── 02_Champion_V2.ipynb # Esteira de Produção e Teste Macroeconômico (Homologado)
├── .gitignore # Ocultação de Lixo Operacional e Arquivos Locais
├── LICENSE # Compliance e Propriedade Intelectual (MIT)
├── README.md # Documentação Executiva e Laudos de Negócio
└── requirements.txt # Dependências do Motor Estatístico (Reprodutibilidade)
# Clone o repositório
git clone [https://github.com/igorcarvah/lab_risco_quant.git](https://github.com/igorcarvah/lab_risco_quant.git)