🏦 Aurora Crédito Digital · Motor de Decisão
Estima a probabilidade de inadimplência de 90+ dias no horizonte de dois anos, aplica o limiar econômico da política de crédito e explica, cliente a cliente, quais fatores pesaram na decisão. O modelo roda aqui, no seu navegador — nenhum dado que você digitar sai desta página.
📚 Como este modelo decide — e de onde sai o corte de 9,09%
A régua da decisão vem do custo, não da acurácia. A área de risco fechou os dois erros em valores diferentes, e é essa assimetria que organiza tudo:
| Erro | O que se perde | Custo |
|---|---|---|
| Falso negativo | o principal emprestado a quem deu calote | R$ 5.000 |
| Falso positivo | a margem de quem teria pagado | R$ 500 |
Como o falso negativo custa dez vezes mais, o limiar que minimiza o custo esperado é
p* = 500 / (500 + 5.000) = 0,0909. Usar o 0,50 que vem de fábrica no
predict() custaria R$ 4 milhões a mais na carteira de teste —
a conta completa está no epílogo da série.
Números do modelo em 37.500 clientes nunca vistos: ROC AUC 0,8692 · PR AUC 0,4101 · Brier 0,0485 · probabilidade média 0,0666 contra taxa real 0,0668. A calibração é o que permite tratar a saída como probabilidade de verdade, e não como um ranking — sem ela, o limiar econômico não faria sentido.
⚙️ Como um modelo de gradient boosting foi parar dentro de uma página estática
O app original é Streamlit: um servidor Python que carrega o
.joblib, importa LightGBM, scikit-learn e SHAP, e responde a cada clique
pela rede. Funciona, mas o primeiro acesso paga o preço de acordar o contêiner e
importar tudo isso.
Aqui o caminho é outro. O pipeline treinado foi exportado para um artefato JSON com as 600 árvores achatadas em arrays e as duas medianas aprendidas no treino. A página traz três funções escritas à mão em JavaScript puro, sem nenhuma biblioteca:
- preparação — deriva as 6 features e aplica as regras de tratamento,
linha a linha igual ao
aurora/preparacao.py; - predição — percorre as 600 árvores e soma as folhas;
- TreeSHAP — o algoritmo exato de Lundberg, o mesmo que o
shap.TreeExplainerexecuta em Python.
Não é aproximação. A conferência de integridade no topo desta página é a mesma do app
Python: um cliente fixo tem que devolver 0,1569673418089306. Em 400 clientes
sorteados, a diferença máxima contra o pipeline original ficou em 1,1 × 10⁻¹⁶
na probabilidade e 1,3 × 10⁻¹⁵ nos valores SHAP — o limite da precisão de
ponto flutuante, não do método.
O artefato tem 700 KB (cerca de 200 KB comprimidos), é baixado uma única vez e fica em cache. Depois disso, cada decisão leva poucos milissegundos e acontece inteiramente no seu dispositivo.
📋 Dados da proposta
Preencha os 10 campos. As outras 6 variáveis que o modelo usa são derivadas automaticamente pelo mesmo código que preparou o treino.
📂 Enviar uma base de clientes
Um CSV com estas 10 colunas, exatamente com estes nomes. O arquivo é lido no seu navegador e não é enviado para nenhum servidor.
| Coluna | Tipo | Faixa aceita |
|---|---|---|
idade | inteiro | 18 a 100 |
renda_mensal | decimal | 0 a 50.000 (acima disso o modelo trata como 50.000) |
dependentes | inteiro | 0 a 10 |
uso_limite_rotativo | decimal | 0,0 a 2,0 |
razao_divida | decimal | 0,0 a 2,0 |
linhas_credito_abertas | inteiro | 0 a 40 |
financiamentos_imobiliarios | inteiro | 0 a 10 |
atrasos_30_59_dias | inteiro | 0 a 20 |
atrasos_60_89_dias | inteiro | 0 a 20 |
atrasos_90_mais_dias | inteiro | 0 a 20 |
Regras que evitam erro de leitura: separador de coluna
; ou , (detectado sozinho) · decimal com ponto ou vírgula
(também detectado) · 96 e 98 nas colunas de atraso são
códigos de "sem histórico no birô", não quantidade — a validação avisa quando encontra ·
campos em branco em renda_mensal e dependentes são aceitos e
viram informação · colunas extras são ignoradas, inclusive inadimplente_2anos
se vier junto · as 6 features derivadas não devem estar no arquivo.
CSV até alguns milhares de linhas. A leitura e a pontuação acontecem no navegador.
O case completo está na série de 12 artigos, na documentação técnica e no repositório no GitHub ↗.
Base pública de risco de crédito, fintech fictícia, finalidade de portfólio. Nenhuma decisão real de crédito deve ser tomada com este aplicativo.