{
 "dicionario_indicadores": [
  {
   "nome": "Inadimplência (>90 dias)",
   "definicao": "Parcela do saldo da carteira com ao menos uma parcela vencida há mais de 90 dias.",
   "formula": "saldo em atraso >90d ÷ saldo total da carteira",
   "numerador": "Operações com atraso >90d (R$)",
   "denominador": "Saldo total da modalidade (R$)",
   "interpretacao": "Alta = deterioração da qualidade da carteira; reage com defasagem ao ciclo econômico.",
   "limitacoes": "Renegociações podem mascarar atrasos; baixas para prejuízo retiram operações do indicador.",
   "periodicidade": "mensal"
  },
  {
   "nome": "Spread médio",
   "definicao": "Diferença entre a taxa média das operações de crédito e o custo de captação de referência.",
   "formula": "taxa média das concessões − custo de captação",
   "numerador": "—",
   "denominador": "—",
   "interpretacao": "Alta = crédito mais caro relativo ao funding; incorpora risco, custos, impostos e margem.",
   "limitacoes": "Composição de modalidades afeta a média agregada (efeito mix).",
   "periodicidade": "mensal"
  },
  {
   "nome": "Comprometimento de renda",
   "definicao": "Parcela da renda das famílias comprometida com o serviço da dívida no SFN.",
   "formula": "serviço da dívida (juros+amortização) ÷ renda disponível",
   "numerador": "Serviço mensal da dívida",
   "denominador": "Renda disponível das famílias",
   "interpretacao": "Alta = menor folga para novos compromissos; antecede atrasos de PF.",
   "limitacoes": "Não captura dívidas fora do SFN (crediários, fintechs não IF).",
   "periodicidade": "mensal"
  },
  {
   "nome": "IBCC",
   "definicao": "Índice sintético de condições de crédito (100 = média histórica; acima = condições melhores).",
   "formula": "100 + 10 × média dos z-scores dos 6 componentes (preço, qualidade, capacidade, atividade, oferta, antecedentes)",
   "numerador": "—",
   "denominador": "—",
   "interpretacao": "Resume o ciclo de crédito em um número comparável no tempo.",
   "limitacoes": "Pesos iguais entre componentes; sensível à janela histórica de cada série.",
   "periodicidade": "mensal"
  },
  {
   "nome": "Score de estresse setorial",
   "definicao": "Posição do setor no espectro de estresse (0 = mínimo, 100 = máximo).",
   "formula": "50 + 20 × Σ(peso × z) — só componentes observados: atividade 0,69; condições de crédito 0,31 (RJ e emprego em construção, peso zero)",
   "numerador": "—",
   "denominador": "—",
   "interpretacao": ">55 = atenção; >75 = crítico. Ler junto com tendência e velocidade.",
   "limitacoes": "1 de 4 componentes demonstrativo (estresse empresarial (RJ)), com peso zero; sem normalização por tamanho do setor.",
   "periodicidade": "mensal"
  },
  {
   "nome": "Score de risco de instituições",
   "definicao": "Risco relativo ao grupo de pares prudencial (0 = menor risco relativo, 100 = maior).",
   "formula": "média dos percentis de 4 razões contábeis dentro do grupo (ROE invertido, alavancagem, carteira/ativo, captações/ativo)",
   "numerador": "—",
   "denominador": "—",
   "interpretacao": "Posição relativa, não probabilidade de default.",
   "limitacoes": "Sem Basileia/liquidez; ROE não anualizado; ferramenta acadêmica, não é rating.",
   "periodicidade": "trimestral"
  }
 ],
 "model_cards": [
  {
   "nome": "Ensemble univariado — inad_total",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "inad_total",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 0.6178,
    "mae_naive_h12": 0.6044,
    "ganho_vs_naive_pct_h12": -2.2,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — inad_pf",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "inad_pf",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 0.8493,
    "mae_naive_h12": 0.7984,
    "ganho_vs_naive_pct_h12": -6.4,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — inad_pj",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "inad_pj",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 0.3353,
    "mae_naive_h12": 0.3372,
    "ganho_vs_naive_pct_h12": 0.6,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — concessoes_total",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "concessoes_total",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 51140.2334,
    "mae_naive_h12": 69199.24,
    "ganho_vs_naive_pct_h12": 26.1,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — concessoes_pf",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "concessoes_pf",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 21105.0404,
    "mae_naive_h12": 33660.4,
    "ganho_vs_naive_pct_h12": 37.3,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — concessoes_pj",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "concessoes_pj",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 31190.2001,
    "mae_naive_h12": 36107.48,
    "ganho_vs_naive_pct_h12": 13.6,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — saldo_total",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "saldo_total",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 270010.1155,
    "mae_naive_h12": 650018.64,
    "ganho_vs_naive_pct_h12": 58.5,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — saldo_pf",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "saldo_pf",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 141140.0231,
    "mae_naive_h12": 448564.2,
    "ganho_vs_naive_pct_h12": 68.5,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — saldo_pj",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "saldo_pj",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 111681.7728,
    "mae_naive_h12": 201454.36,
    "ganho_vs_naive_pct_h12": 44.6,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — spread_total",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "spread_total",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 1.8387,
    "mae_naive_h12": 1.7968,
    "ganho_vs_naive_pct_h12": -2.3,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — spread_pf",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "spread_pf",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 2.4423,
    "mae_naive_h12": 2.3532,
    "ganho_vs_naive_pct_h12": -3.8,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — spread_pj",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "spread_pj",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 0.932,
    "mae_naive_h12": 0.9128,
    "ganho_vs_naive_pct_h12": -2.1,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — taxa_total",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "taxa_total",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 2.4818,
    "mae_naive_h12": 2.5412,
    "ganho_vs_naive_pct_h12": 2.3,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — taxa_pf",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "taxa_pf",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 3.0825,
    "mae_naive_h12": 3.0716,
    "ganho_vs_naive_pct_h12": -0.4,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Ensemble univariado — taxa_pj",
   "objetivo": "Previsão 1–12 meses com bandas de incerteza",
   "variavel_alvo": "taxa_pj",
   "algoritmo": "Ensemble (naive, sazonal, drift, média móvel, AR(1) em diferenças, Holt) ponderado por 1/MAE",
   "validacao": "Backtest walk-forward, janela expansiva, ~24 cortes, por horizonte; sem look-ahead",
   "benchmark": "Último valor (naive)",
   "desempenho": {
    "mae_h12": 1.6585,
    "mae_naive_h12": 1.6064,
    "ganho_vs_naive_pct_h12": -3.2,
    "n_backtests": 25
   },
   "incerteza": "Quantis preditivos p10/p50/p90 por deslocamento dos quantis dos resíduos fora da amostra (conformal)",
   "limitacoes": "Univariado; não modela quebras estruturais nem covariáveis; bandas refletem erro histórico recente",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "IBCC",
   "objetivo": "Índice sintético de condições de crédito",
   "variavel_alvo": "condições de crédito",
   "algoritmo": "Média de z-scores por componente; média igual entre 6 componentes; 100 + 10×z",
   "validacao": "Interpretação por percentil histórico; PCA/fatores dinâmicos previstos na Fase 2",
   "benchmark": "—",
   "desempenho": {
    "componentes": 6
   },
   "incerteza": "Sensível à janela histórica; pesos fixos",
   "limitacoes": "Pesos iguais entre componentes (versão explicável); PCA/fatores dinâmicos previstos na Fase 2. Sujeito a revisões das séries de origem.",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Score de instituições",
   "objetivo": "Risco relativo a pares prudenciais",
   "variavel_alvo": "risco relativo",
   "algoritmo": "Percentil intra-grupo (Sr) de 4 razões contábeis; média das dimensões",
   "validacao": "Faixas ainda não calibradas empiricamente (Fase 3)",
   "benchmark": "mediana do grupo",
   "desempenho": {
    "instituicoes": 100,
    "periodo": "202606"
   },
   "incerteza": "Sem Basileia/liquidez; ROE não anualizado",
   "limitacoes": "Sem liquidez, inadimplência por IF ou qualidade de resultado (Fase 3b). ROE acumulado do período IF.data, não anualizado. Score relativo ao grupo, não absoluto. Instituições sem capital reportado têm a dimensão omitida (nunca imputada; nº de dimensões exibido). Vulnerabilidade usa choque agregado uniforme — sem heterogeneidade de carteira. Custo de captação é estimativa (fórmula declarada por instituição): estoque de pontas, não saldo médio diário; DRE do IF.data acumula por semestre (mar/set=3m, jun/dez=6m).",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Estresse setorial",
   "objetivo": "Ranking de estresse por atividade industrial",
   "variavel_alvo": "estresse setorial",
   "algoritmo": "50 + 20×Σ(peso×z), 4 componentes",
   "validacao": "componente demonstrativo com peso zero impede validação plena",
   "benchmark": "—",
   "desempenho": {
    "setores": 43
   },
   "incerteza": "1 de 4 componentes demonstrativo (estresse empresarial (RJ)), com peso zero",
   "limitacoes": "As três pesquisas medem VOLUME de atividade, não inadimplência setorial (indisponível nas fontes públicas). Condições de crédito ainda sem corte setorial (usa agregado PJ). Emprego entra por seção CNAE, não por divisão: as 24 divisões da transformação recebem o mesmo z; grupos da PMS que cruzam seções recebem a média das seções listadas. Universos distintos por pesquisa — os scores são comparáveis na régua (z-score da própria história), não nos níveis absolutos entre pesquisas. O componente de RJ está em construção e FORA do score. Normalização por nº de empresas/estoque de crédito setorial entra com o SCR (Fase 4).",
   "versao": "0.2.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Protocolo de indicadores antecedentes",
   "objetivo": "Promoção formal de candidatos a antecedente",
   "variavel_alvo": "Δ mensal da inadimplência (total/PF/PJ)",
   "algoritmo": "Correlação cruzada k=0..12; Granger AR(3); ganho OOS de AR(1)+candidato vs AR(1) (walk-forward h=1); estabilidade por metades",
   "validacao": "4 critérios obrigatórios; candidatos ex-ante por racional econômico; nº de testes reportado",
   "benchmark": "AR(1)",
   "desempenho": {
    "criterio_ganho_oos": "> 2% de redução de MAE"
   },
   "incerteza": "F aproximado por qui-quadrado; sem correção de múltiplos testes formal; sem vintages em tempo real ainda",
   "limitacoes": "Ganho medido em h=1; integração ao ensemble de previsão na Fase 2b",
   "versao": "0.3.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Detector de regimes",
   "objetivo": "Sinalizar hipóteses de mudança de regime/quebra estrutural",
   "variavel_alvo": "6 séries de crédito estacionarizadas",
   "algoritmo": "CUSUM (k=0,5σ, h=5σ) sobre resíduos AR(1) + sup-F de quebra na média (trimming 15%)",
   "validacao": "Valores críticos aproximados (Andrews 8,85 a 5%); mudança tratada como hipótese",
   "benchmark": "—",
   "desempenho": {
    "series_monitoradas": 6
   },
   "incerteza": "Univariado; uma quebra por busca; sensível a revisões",
   "limitacoes": "Bai-Perron múltiplo e Markov-switching na Fase 2b",
   "versao": "0.3.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  },
  {
   "nome": "Elasticidades de cenário (empíricas)",
   "objetivo": "Parametrizar a transmissão de choques nos cenários",
   "variavel_alvo": "Δ12m da inadimplência total",
   "algoritmo": "MQO: Δ12 Selic (t-6), Δ12 desemprego, IBC-Br yoy (t-3, proxy PIB), câmbio yoy/10 (t-3)",
   "validacao": "Checagem de sinal econômico; fallback para ilustrativas se implausível",
   "benchmark": "elasticidades ilustrativas do config",
   "desempenho": {
    "intervalo": "±2 EP clássicos"
   },
   "incerteza": "Sem HAC (incerteza subestimada com dados sobrepostos); associação, não causalidade",
   "limitacoes": "Identificação causal e heterogeneidade por segmento na Fase 2b",
   "versao": "0.3.0",
   "atualizado_em": "2026-09-24T15:24:29+00:00"
  }
 ],
 "score_cards": [
  {
   "nome": "Score de risco de instituições (v3)",
   "componentes": [
    "capital (Basileia, invertido)",
    "rentabilidade (ROE, invertido)",
    "alavancagem",
    "concentração em crédito",
    "dependência de captações",
    "concentração setorial (HHI)"
   ],
   "pesos": "iguais entre as dimensões disponíveis",
   "normalizacao": "percentil dentro do grupo de pares prudencial",
   "tratamento_ausencia": "dimensão omitida (nunca imputada); nº de dimensões exibido; cobertura e confiança reportadas",
   "cobertura": "30 maiores conglomerados (score completo); demais IFs sem score nesta versão",
   "sensibilidade": "efeito máximo aproximado de remover uma dimensão exibido na decomposição",
   "validacao": "faixas NÃO calibradas empiricamente; uso acadêmico",
   "versao": "0.5.0"
  },
  {
   "nome": "IBCC (total, PF, PJ)",
   "componentes": [
    "preço",
    "qualidade",
    "capacidade de pagamento (só total/PF)",
    "atividade",
    "oferta",
    "antecedentes"
   ],
   "pesos": "iguais",
   "normalizacao": "z-score vs. histórico completo de cada série",
   "tratamento_ausencia": "componente omitido (PJ sem capacidade de pagamento — documentado)",
   "cobertura": "séries mensais desde 2012",
   "sensibilidade": "decomposição por componente exibida",
   "validacao": "interpretação por percentil histórico; PCA na Fase 2b",
   "versao": "0.2.0"
  },
  {
   "nome": "Estresse setorial",
   "componentes": [
    "atividade 0,69 (observado)",
    "condições de crédito 0,31 (observado)",
    "estresse empresarial (em construção — fora do score)",
    "capacidade financeira (em construção — fora do score)"
   ],
   "pesos": "fixos documentados",
   "normalizacao": "z-scores; score = 50 + 20×Σ(peso×z), truncado [0,100]",
   "tratamento_ausencia": "setor sem série suficiente é excluído",
   "cobertura": "indústria (PIM), comércio (PMC) e serviços (PMS); 1 de 4 componentes demonstrativo (estresse empresarial (RJ)), com peso zero",
   "sensibilidade": "contribuições por componente exibidas",
   "validacao": "plena só após o último componente demonstrativo virar observado",
   "versao": "0.2.0"
  }
 ],
 "changelog": [
  {
   "versao": "0.17.0",
   "data": "2026-07-28",
   "mudancas": [
    "Open Finance v2: subabas (Visão Geral, Consentimentos, APIs & Endpoints, Iniciação, Concentração, Índices, Alertas, Qualidade, Instituições) com síntese determinística.",
    "Novos dados reais: chamadas por ENDPOINT e por família em cada fase (Saldos da Conta lidera com 10,6 bi) e rankings nominais das 3 fases — incluindo iniciação de pagamentos (Nubank 18,8%, Itaú 13,6%).",
    "Concentração por fase: top-1/5/10, fora do top-5 e HHI parcial (rotulado como limite inferior sobre o universo divulgado); histórico de snapshots para mobilidade futura.",
    "Quatro índices separados (adoção, utilização, conversão, qualidade técnica) com componentes, pesos, cobertura e confiança — conversão declarada INDISPONÍVEL (funil não publicado) em vez de estimada.",
    "Alertas do OF com regra/limiar/persistência (sucesso <97% nas fases transacional e iniciação disparados); painel de qualidade dos dados com indisponibilidades explícitas.",
    "Relação exploratória OF×crédito: scatter share de chamadas × share de carteira (n=11 matches, Spearman ρ=0,40) — associação, não causalidade."
   ]
  },
  {
   "versao": "0.16.0",
   "data": "2026-07-28",
   "mudancas": [
    "Inadimplência REAL por instituição (>90 dias): 790 conglomerados com carteira inadimplente, ativos problemáticos (Res. 4.966) e provisões de crédito, em 5 trimestres — relatório por instrumentos financeiros do IF.data (lids 148834/148833/140202), validado contra os grandes bancos (Itaú 2,25%, BB 5,39%, Caixa 3,68%).",
    "Visão geral: seção 'Inadimplência nas instituições financeiras' com mediana do sistema (4,75%) e por grupo de pares (nunca média ponderada), dispersão em quartis, contadores de alta, top-5 deteriorações com 3 critérios lado a lado (Δinad + Δcarteira + Δcobertura) e frases determinísticas com regra e base.",
    "Página da instituição: subaba 'Risco e Inadimplência' com série histórica vs. mediana/q3 do grupo, tendência por regras analíticas parametrizáveis (±0,20/0,50 p.p.), matriz crescimento×inadimplência, cobertura contábil aproximada com nota metodológica e alertas institucionais (5 regras transparentes).",
    "Tabela de instituições com coluna de inadimplência e ordenação por nível e por deterioração 4T.",
    "Rotulagem honesta: amostra inicia na estrutura 2025-T1 (sem quebra interna — máx/mín de 3 anos declarado indisponível); sem decomposição de inadimplência por modalidade/instituição (não existe no corte público); cobertura marcada como aproximação contábil, não razão regulatória."
   ]
  },
  {
   "versao": "0.15.0",
   "data": "2026-07-28",
   "mudancas": [
    "Rotas de caminho compartilháveis (/overview, /credit, /sectors, /recoveries, /institutions/{cod}, /sectors/{cod}, /methodology…) com histórico do navegador e filtros na URL; hash mantido no ambiente local.",
    "Visão geral: painel de saúde dos dados (% séries atualizadas, pipelines com falha, demonstrativos remanescentes), coluna de cenário adverso nas projeções e mini-KPIs de estoque/concessões/spread no Bloco A.",
    "Fichas individuais de setor (produção, yoy, decomposição, exposição das instituições quando o CNAE corresponde, limitações declaradas).",
    "Página da instituição: subnavegação interna, resumo executivo em 5 blocos (avaliação, fortes, atenção, mudanças, limitações — cada frase com base), composição transparente do grupo de pares (critério, quartis, membros) e score com cobertura de dados e confiança.",
    "Central de alertas com estados geridos pelo usuário (ativo/em análise/acompanhado/resolvido/descartado, persistidos localmente); score cards na metodologia (§11.4)."
   ]
  },
  {
   "versao": "0.14.0",
   "data": "2026-07-28",
   "mudancas": [
    "Páginas individuais para TODO o universo: 1.422 conglomerados prudenciais com página própria (JSON sob demanda + busca por nome), no novo formato aprovado — cabeçalho com chips, cartão de score, KPIs com sparkline e Δ trimestral, destaques rule-based, composição da carteira (donut PF/PJ + modalidades + setores), evolução base-100, histograma de comparação com o grupo de pares completo e reclamações com histórico.",
    "Pares deixam de ser o top-30: percentis e medianas calculados no grupo prudencial COMPLETO (ex.: S5 com 808 instituições).",
    "Correção metodológica: variação trimestral do lucro suprimida (acúmulo anual do IF.data tornaria o Δ um artefato da virada de ano).",
    "Interface adaptativa: instituições sem carteira detalhada/score/reclamações mostram o motivo — nunca zero."
   ]
  },
  {
   "versao": "0.13.0",
   "data": "2026-07-28",
   "mudancas": [
    "Páginas individuais de instituições — entrega inicial com 3 pilotos (Itaú, Daycoval, Banco Volkswagen): cabeçalho cadastral com nível de consolidação explícito, indicadores com Δ trimestral/anual, mediana e percentil dos pares e histórico de 5 trimestres, composição de carteira, score com vulnerabilidade, Open Finance, citações em RJs e síntese factual frase a frase com base declarada.",
    "Nova fonte real: Ranking de Reclamações do BCB (rdrweb, 4 trimestres) — indicador operacional/reputacional, nunca de solvência; Volkswagen com índice 243,7 vs. Itaú 46,9.",
    "Interface adaptativa: indicadores indisponíveis (LCR/NSFR, eficiência, qualidade por IF) declarados com motivo — ausência nunca vira zero; aviso de comparabilidade para modelo de negócio incompatível com o grupo de pares.",
    "Relatório de cobertura pré-escala (docs/RELATORIO_PILOTO_IF.md): capital 90%, carteiras 87%, reclamações 53%, OF 43% do top-30."
   ]
  },
  {
   "versao": "0.12.0",
   "data": "2026-07-28",
   "mudancas": [
    "Open Finance REAL — o último módulo demonstrativo foi aposentado: consentimentos ativos semanais por papel (231 mi transmitidos), chamadas de API e taxa de sucesso por fase, ranking nominal de chamadas por organização (rotas públicas do Dashboard do Cidadão, descobertas empiricamente) e diretório oficial de participantes (107 organizações, papéis e famílias de API).",
    "Índice de maturidade demo descontinuado — conversão e latência por organização não são públicas; nenhum índice sintético o substitui."
   ]
  },
  {
   "versao": "0.11.0",
   "data": "2026-07-28",
   "mudancas": [
    "Aba Pesquisa: assistente de consulta estruturada — motor DETERMINÍSTICO auditável (não é modelo de linguagem) que responde às perguntas do escopo do briefing consultando apenas os dados da plataforma, com selo epistemológico por afirmação, cálculo, fontes e recusa explícita fora do escopo; respostas exportáveis.",
    "Relatório automático diário gerado pelo pipeline (data/gold/report.html): 9 seções com cada parágrafo marcado OBSERVAÇÃO/INTERPRETAÇÃO/CALCULADO/PREVISÃO/CENÁRIO/DEMONSTRATIVO; imprimível para PDF.",
    "Alertas por assinatura: feed RSS (data/gold/alerts.xml) regenerado a cada execução — recepção por e-mail via qualquer serviço RSS-para-e-mail; links na central de alertas."
   ]
  },
  {
   "versao": "0.10.0",
   "data": "2026-07-28",
   "mudancas": [
    "Séries mensais por marco processual: convolações de RJ em falência e extinções, extraídas doc a doc do DataJud (o índice não é nested — filtro a nível de documento + parse local das datas dos movimentos).",
    "Parser de QGC por classe (art. 41): subtotais trabalhista/garantia real/quirografário/ME-EPP extraídos dos editais quando publicados.",
    "Cascata de passivo completa por caso: QGC por classe → citado no ato → estimado (intervalo interquartil da janela) → não identificado; painel agregado exibe os níveis SEPARADOS, nunca somados silenciosamente.",
    "Cache-buster também nos JSONs de dados (APP_VERSION no fetch) — CDN não serve mais dados antigos após deploys."
   ]
  },
  {
   "versao": "0.9.0",
   "data": "2026-07-28",
   "mudancas": [
    "Credores financeiros REAIS por caso: instituições citadas em publicações com 'relação de credores' (DJEN), com classificação em níveis — 'observada' (valor adjacente no texto) e 'parcialmente observada' (citação sem valor); casos sem menção = 'não identificada'.",
    "Passivo citado no ato por regex (nível 'declarado no ato', nunca apresentado como passivo total).",
    "Enriquecimento cadastral via BrasilAPI (dados públicos da Receita): CNAE, porte e município das recuperandas — associação CNPJ↔empresa validada por compatibilidade de razão social, senão descartada.",
    "Exposição agregada por banco na janela (contagem de casos + valores citados), com aviso metodológico obrigatório de que presença em lista ≠ exposição total."
   ]
  },
  {
   "versao": "0.8.0",
   "data": "2026-07-28",
   "mudancas": [
    "Fichas nominais REAIS de recuperação judicial e falência via DJEN/Comunica PJe (API pública do CNJ): ~370 processos com publicação nos últimos 45 dias em 8 tribunais, com razão social (apenas pessoas jurídicas), classe, órgão, atos recentes e link de consulta.",
    "Extração com confiança declarada: empresas por heurística de forma societária; CNPJ e valores por regex sobre o texto oficial, sempre marcados como extração automática a conferir.",
    "Correção: meses parciais reintroduzidos pela recoleta de falência TJSP removidos; agregados reconstruídos."
   ]
  },
  {
   "versao": "0.7.0",
   "data": "2026-07-28",
   "mudancas": [
    "Funil processual REAL da recuperação judicial: nº de processos com cada movimento-marco da TPU (Concessão, Decretação de falência/convolação, Indeferimento, Extinção, Homologação de Transação) por tribunal e agregado, via agregações do DataJud — substitui o painel demo de fases.",
    "Cobertura ampliada de 4 para 8 tribunais (+TJPR, TJSC, TJBA, TJGO) nas séries de RJ e falência.",
    "Falência TJSP recoletada sem truncamento (25,3 mil processos únicos); agregados reconstruídos a partir das séries por tribunal (imune a coletas parciais); meses parciais (M-1, M) omitidos e quantis de contagem truncados em zero."
   ]
  },
  {
   "versao": "0.6.0",
   "data": "2026-07-27",
   "mudancas": [
    "Recuperações judiciais e falências REAIS via API pública do CNJ/DataJud (classes TPU 129 e 108): séries mensais de ajuizamentos por tribunal (TJSP/TJRJ/TJMG/TJRS) e agregado, desde 2019, com projeção de 12 meses.",
    "Robustez metodológica do conector: datas interpretadas localmente (o índice do DataJud confunde o formato SAJ yyyyMMddHHmmss com epoch-millis), dedupe por número de processo (G1/G2), datas inválidas contadas, truncamentos logados.",
    "Fichas nominais permanecem DEMONSTRATIVAS (a API pública omite partes por LGPD) — claramente separadas das séries reais na aba.",
    "Alerta novo: alta de ajuizamentos de RJ acima de 30% a/a; projeção de RJ na visão geral deixa de ser demo."
   ]
  },
  {
   "versao": "0.5.0",
   "data": "2026-07-27",
   "mudancas": [
    "Carteiras reais por instituição: PJ por CNAE (9 grupos), PJ por porte do tomador (micro/pequena/média/grande), e modalidades PF e PJ — parser dinâmico dos templates da interface IF.data (trels 123/127/128/129), sem ids de categoria hardcoded.",
    "Exposição do sistema bancário por setor (CNAE) com maiores credores por volume e por exposição relativa (restrita a carteiras PJ >= R$ 1 bi); participação PME no sistema e ranking de crédito a micro/pequenas empresas.",
    "Score de instituições v3: 6ª dimensão de concentração setorial (HHI da carteira PJ doméstica individualizada).",
    "Ficha da instituição com composição da carteira: setores PJ, modalidades PF/PJ, share PME e HHI."
   ]
  },
  {
   "versao": "0.4.0",
   "data": "2026-07-27",
   "mudancas": [
    "Capital real: Índice de Basileia, Capital Principal, Nível I, alavancagem regulatória, imobilização e RWA por conglomerado, via arquivos JSON da interface IF.data (relatório Informações de Capital, ausente na API Olinda). Mapeamento de entidades UI↔Olinda validado com os grandes bancos.",
    "Score de instituições v2: 5ª dimensão de capital (Basileia invertida); dimensões sem dado são omitidas e o nº de dimensões usado é exibido — nunca imputação.",
    "Histórico de score em 5 trimestres (2025-T1 a 2026-T1) com sparkline por instituição.",
    "Vulnerabilidade a choques (CENÁRIO): Basileia pós-cenário severo por instituição via Δinad (elasticidades empíricas, excluindo as de sinal contraintuitivo) × carteira × LGD 45% ÷ RWA — sempre em intervalo.",
    "Separação explícita entre condição atual e vulnerabilidade na ficha de cada instituição."
   ]
  },
  {
   "versao": "0.3.0",
   "data": "2026-07-27",
   "mudancas": [
    "Protocolo estatístico completo de indicadores antecedentes (correlação cruzada 1–12m, Granger, ganho fora da amostra vs. AR(1), estabilidade por metades) com regra formal de promoção e nova aba dedicada.",
    "Detecção de regimes: CUSUM sobre resíduos AR(1) + quebra estrutural sup-F (aprox. Andrews) em 6 séries de crédito; quebras significativas geram alerta como hipótese estatística.",
    "Elasticidades dos cenários estimadas empiricamente por MQO sobre Δ12m da inadimplência (com fallback para ilustrativas e checagem de sinal econômico); origem e incerteza exibidas na interface.",
    "Corte PF/PJ/Total global (v0.2.1): IBCC segmentado, 15 previsões segmentadas, cenários por segmento, filtro na URL.",
    "Investigado relatório de capital (Basileia) na API Olinda do IF.data: indisponível em todos os cortes (tipos 1–4 expõem apenas Resumo/Ativo/Passivo/DRE) — capital real permanece na Fase 3 com fonte alternativa."
   ]
  },
  {
   "versao": "0.2.0",
   "data": "2026-07-26",
   "mudancas": [
    "Visão geral reformulada: diagnóstico rule-based, blocos 'onde estamos/o que mudou/o que pode acontecer/onde investigar', tabela de mudanças.",
    "Score de instituições passa a usar grupos de pares por segmento prudencial (Sr) com mediana/quartis e variação vs. trimestre anterior.",
    "Estresse setorial reestruturado em 4 componentes com tendência e velocidade separadas; condições de crédito (observadas) adicionadas com peso 0,20.",
    "Cenários e Alertas separados em abas; central de alertas com histórico e agrupamento.",
    "Área dedicada a Recuperações & Falências (dados demonstrativos selados).",
    "Metodologia viva: catálogo de séries, dicionário de indicadores, model cards e histórico de versões.",
    "Quantis preditivos com calibração conformal (p10≤p50≤p90) — implementado em 0.1.1."
   ]
  },
  {
   "versao": "0.1.0",
   "data": "2026-07-26",
   "mudancas": [
    "MVP inicial: 4 fontes reais (BCB/SGS, IF.data, IBGE, Ipeadata), 5 módulos, previsões com backtest, IBCC, alertas, PDF via impressão."
   ]
  }
 ],
 "fontes_status": {
  "bcb_sgs": {
   "ok": 134,
   "falhas": [
    {
     "key": "dir_saldo_total",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    },
    {
     "key": "dir_saldo_pj",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    },
    {
     "key": "dir_saldo_pf",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    },
    {
     "key": "dir_conc_total",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    },
    {
     "key": "dir_conc_pf",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    },
    {
     "key": "dir_taxa_total",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    },
    {
     "key": "dir_taxa_pj",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    },
    {
     "key": "emp_Q",
     "erro": "Expecting value: line 1 column 1 (char 0)"
    }
   ],
   "segundos": 579
  },
  "ibge": {
   "ok": 4,
   "falhas": [],
   "segundos": 2
  },
  "ipeadata": {
   "ok": 2,
   "falhas": [],
   "segundos": 47
  },
  "ifdata": {
   "ok": 5,
   "falhas": [],
   "segundos": 81
  },
  "ifdata_ui": {
   "ok": 5,
   "falhas": [],
   "segundos": 5
  },
  "ifdata_carteiras": {
   "ok": 5,
   "falhas": [],
   "segundos": 57
  },
  "djen": {
   "ok": 0,
   "falhas": [
    {
     "key": "djen_TJSP",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    },
    {
     "key": "djen_TJRJ",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    },
    {
     "key": "djen_TJMG",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    },
    {
     "key": "djen_TJRS",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    },
    {
     "key": "djen_TJPR",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    },
    {
     "key": "djen_TJSC",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    },
    {
     "key": "djen_TJBA",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    },
    {
     "key": "djen_TJGO",
     "erro": "HTTP 403 da CDN (CloudFront): origem do runner bloqueada pelo Comunica PJe; fonte acessível só de rede brasileira ou navegador"
    }
   ],
   "segundos": 97
  },
  "djen_credores": {
   "ok": 1,
   "falhas": [
    {
     "key": "credores_TJSP",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJSP&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    },
    {
     "key": "credores_TJRJ",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJRJ&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    },
    {
     "key": "credores_TJMG",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJMG&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    },
    {
     "key": "credores_TJRS",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJRS&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    },
    {
     "key": "credores_TJPR",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJPR&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    },
    {
     "key": "credores_TJSC",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJSC&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    },
    {
     "key": "credores_TJBA",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJBA&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    },
    {
     "key": "credores_TJGO",
     "erro": "Falha ao coletar https://comunicaapi.pje.jus.br/api/v1/comunicacao?pagina=1&itensPorPagina=100&texto=rela%C3%A7%C3%A3o+de+credores&siglaTribunal=TJGO&dataDisponibilizacaoInicio=2026-07-26&dataDisponibilizacaoFim=2026-09-24: HTTP Error 403: Forbidden"
    }
   ],
   "segundos": 97
  },
  "openfinance": {
   "ok": 18,
   "falhas": [],
   "segundos": 30
  },
  "reclamacoes": {
   "ok": 4,
   "falhas": [],
   "segundos": 7
  },
  "txjuros": {
   "ok": 20,
   "falhas": [],
   "segundos": 90
  },
  "b3_market": {
   "ok": 22,
   "falhas": [],
   "segundos": 97
  },
  "fidc": {
   "ok": 0,
   "falhas": [],
   "segundos": 0
  },
  "trends_manual": {
   "ok": 0,
   "falhas": [
    {
     "key": "trends_manual",
     "erro": "arquivo manual ausente (data/manual/Google_Trends_Temperatura_Credito.xlsx) — fonte segue indisponível"
    }
   ],
   "segundos": 0
  },
  "scr_data": {
   "ok": 2,
   "falhas": [],
   "segundos": 11
  },
  "geo_ibge": {
   "ok": 1,
   "falhas": [],
   "segundos": 0
  },
  "pix_bcb": {
   "ok": 11,
   "falhas": [],
   "segundos": 85
  },
  "pgfn": {
   "ok": 3,
   "falhas": [],
   "segundos": 1
  },
  "desenrola": {
   "ok": 0,
   "falhas": [
    {
     "key": "desenrola",
     "erro": "resposta HTML no lugar do CSV (bloqueio ou manutenção do portal): b'<?xml version=\"1.0\" encoding=\"pt-br\"?>\\r\\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\\r\\n  \"http://www.w3.org/T'"
    }
   ],
   "segundos": 1
  },
  "censo2022": {
   "ok": 1,
   "falhas": [],
   "segundos": 0
  },
  "estban": {
   "ok": 1,
   "falhas": [],
   "segundos": 5
  },
  "mercado_imobiliario": {
   "ok": 1,
   "falhas": [],
   "segundos": 18
  },
  "previdencia": {
   "ok": 4,
   "falhas": [],
   "segundos": 0
  },
  "reclamacoes_consig": {
   "ok": 0,
   "falhas": [
    {
     "key": "reclamacoes_consig",
     "erro": "Falha ao coletar https://www.consumidor.gov.br/pages/publicacao/externo/publicacoes.json?indicadorTipoPublicacao=2: HTTP Error 504: Gateway Timeout"
    }
   ],
   "segundos": 107
  },
  "operacional": {
   "ok": 2,
   "falhas": [],
   "segundos": 8
  },
  "releases": {
   "ok": 1,
   "falhas": [],
   "segundos": 8
  },
  "releases_ext": {
   "ok": 2,
   "falhas": [],
   "segundos": 0
  },
  "epae": {
   "ok": 1,
   "falhas": [],
   "segundos": 1
  },
  "dependencias": {
   "ok": 3,
   "falhas": [],
   "segundos": 0
  },
  "pncp_folha": {
   "ok": 2,
   "falhas": [],
   "segundos": 106
  },
  "ifdata_funding": {
   "ok": 5,
   "falhas": [],
   "segundos": 0
  },
  "pilar3": {
   "ok": 9,
   "falhas": [
    {
     "key": "pilar3:17184037",
     "erro": "HTTP Error 503: Service Unavailable"
    },
    {
     "key": "pilar3:00416968",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:07237373",
     "erro": "HTTP Error 400: Bad Request"
    },
    {
     "key": "pilar3:00309024",
     "erro": "HTTP Error 520: <none>"
    },
    {
     "key": "pilar3:00655522",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:01181521",
     "erro": "<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)>"
    },
    {
     "key": "pilar3:01522368",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:02038232",
     "erro": "HTTP Error 520: <none>"
    },
    {
     "key": "pilar3:02332886",
     "erro": "HTTP Error 503: Service Unavailable"
    },
    {
     "key": "pilar3:04332281",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:04862600",
     "erro": "HTTP Error 403: Forbidden"
    },
    {
     "key": "pilar3:04913711",
     "erro": "<urlopen error timed out>"
    },
    {
     "key": "pilar3:05040481",
     "erro": "<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)>"
    },
    {
     "key": "pilar3:07450604",
     "erro": "<urlopen error [Errno -5] No address associated with hostname>"
    },
    {
     "key": "pilar3:08357240",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:10664513",
     "erro": "HTTP Error 403: Forbidden"
    },
    {
     "key": "pilar3:25683434",
     "erro": "HTTP Error 520: <none>"
    },
    {
     "key": "pilar3:29030467",
     "erro": "trimestreReferencia fora do padrão: ''"
    },
    {
     "key": "pilar3:33172537",
     "erro": "Expecting value: line 1 column 103 (char 102)"
    },
    {
     "key": "pilar3:33657248",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:43818780",
     "erro": "trimestreReferencia fora do padrão: ''"
    },
    {
     "key": "pilar3:54037916",
     "erro": "HTTP Error 520: <none>"
    },
    {
     "key": "pilar3:58017179",
     "erro": "trimestreReferencia fora do padrão: ''"
    },
    {
     "key": "pilar3:60770336",
     "erro": "<urlopen error [Errno -2] Name or service not known>"
    },
    {
     "key": "pilar3:62073200",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:62232889",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:62331228",
     "erro": "HTTP Error 404: Not Found"
    },
    {
     "key": "pilar3:63917579",
     "erro": "HTTP Error 520: <none>"
    },
    {
     "key": "pilar3:71328769",
     "erro": "HTTP Error 520: <none>"
    },
    {
     "key": "pilar3:80160260",
     "erro": "HTTP Error 520: <none>"
    },
    {
     "key": "pilar3:92816560",
     "erro": "HTTP Error 500: Internal Server Error"
    }
   ],
   "segundos": 197
  },
  "regimes": {
   "ok": 1,
   "falhas": [],
   "segundos": 3
  },
  "remuneracao": {
   "ok": 1,
   "falhas": [],
   "segundos": 17
  },
  "correspondentes": {
   "ok": 1,
   "falhas": [],
   "segundos": 0
  },
  "cvm_ofertas": {
   "ok": 1,
   "falhas": [],
   "segundos": 9
  },
  "cvm_securit": {
   "ok": 4,
   "falhas": [],
   "segundos": 6
  },
  "bndes": {
   "ok": 18,
   "falhas": [],
   "segundos": 25
  },
  "focus": {
   "ok": 6,
   "falhas": [],
   "segundos": 6
  },
  "sfn_cadastro": {
   "ok": 4,
   "falhas": [],
   "segundos": 9
  },
  "bcb_pas": {
   "ok": 3,
   "falhas": [],
   "segundos": 4
  },
  "cvm_pas": {
   "ok": 1,
   "falhas": [],
   "segundos": 1
  },
  "ifdata_passivo": {
   "ok": 1,
   "falhas": [],
   "segundos": 0
  },
  "cvm_cda": {
   "ok": 1,
   "falhas": [],
   "segundos": 7
  },
  "bcb_consorcios": {
   "ok": 1,
   "falhas": [],
   "segundos": 0
  },
  "susep_ses": {
   "ok": 1,
   "falhas": [],
   "segundos": 1
  },
  "sadipem": {
   "ok": 1,
   "falhas": [],
   "segundos": 9
  },
  "siconfi_rgf": {
   "ok": 1,
   "falhas": [],
   "segundos": 42
  },
  "tesouro_garantias": {
   "ok": 1,
   "falhas": [],
   "segundos": 3
  },
  "sicor": {
   "ok": 11,
   "falhas": [
    {
     "key": "sicor_genero:2026-08",
     "erro": "Falha ao coletar https://olinda.bcb.gov.br/olinda/servico/SICOR/versao/v2/odata/RegiaoUFGenero?$filter=AnoEmissao%20eq%20%272026%27%20and%20MesEmissao%20eq%20%2708%27&$format=json: HTTP Error 500: Internal Server Error"
    },
    {
     "key": "sicor_if:2026-08",
     "erro": "Falha ao coletar https://olinda.bcb.gov.br/olinda/servico/SICOR/versao/v2/odata/SegmentoIF?$filter=AnoEmissao%20eq%20%272026%27%20and%20MesEmissao%20eq%20%2708%27&$format=json: HTTP Error 500: Internal Server Error"
    },
    {
     "key": "sicor_mun:2026-08",
     "erro": "Falha ao coletar https://olinda.bcb.gov.br/olinda/servico/SICOR/versao/v2/odata/CusteioInvestimentoComercialIndustrialSemFiltros?$filter=AnoEmissao%20eq%20%272026%27%20and%20MesEmissao%20eq%20%2708%27&$format=json&$select=codMunicIbge,cdPrograma,cdFonteRecurso,Atividade,QtdCusteio,VlCusteio,QtdInves"
    },
    {
     "key": "sicor_produto:2026-08",
     "erro": "Falha ao coletar https://olinda.bcb.gov.br/olinda/servico/SICOR/versao/v2/odata/CusteioRegiaoUFProduto?$filter=AnoEmissao%20eq%20%272026%27%20and%20MesEmissao%20eq%20%2708%27&$format=json: HTTP Error 500: Internal Server Error"
    }
   ],
   "segundos": 269
  },
  "ipea_caged": {
   "ok": 2,
   "falhas": [],
   "segundos": 0
  },
  "datajud": {
   "ok": 0,
   "falhas": [
    {
     "key": "recuperacao_judicial_tjsp",
     "erro": "DataJud POST falhou: HTTP Error 504: Gateway Time-out"
    },
    {
     "key": "falencia_tjsp",
     "erro": "DataJud POST falhou: HTTP Error 429: Too Many Requests"
    },
    {
     "key": "recuperacao_judicial_tjrj",
     "erro": "DataJud POST falhou: HTTP Error 429: Too Many Requests"
    },
    {
     "key": "falencia_tjrj",
     "erro": "DataJud POST falhou: HTTP Error 429: Too Many Requests"
    },
    {
     "key": "recuperacao_judicial_tjmg",
     "erro": "DataJud POST falhou: HTTP Error 429: Too Many Requests"
    },
    {
     "key": "falencia_tjmg",
     "erro": "DataJud POST falhou: HTTP Error 429: Too Many Requests"
    },
    {
     "key": "recuperacao_judicial_tjrs",
     "erro": "DataJud POST falhou: HTTP Error 504: Gateway Time-out"
    },
    {
     "key": "falencia_tjrs",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "recuperacao_judicial_tjpr",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "falencia_tjpr",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "recuperacao_judicial_tjsc",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "falencia_tjsc",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "recuperacao_judicial_tjba",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "falencia_tjba",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "recuperacao_judicial_tjgo",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "falencia_tjgo",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjsp",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjrj",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjmg",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjrs",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjpr",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjsc",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjba",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    },
    {
     "key": "funil_tjgo",
     "erro": "orçamento de 900 s esgotado; volta na próxima execução"
    }
   ],
   "segundos": 967
  },
  "datajud_cobranca": {
   "ok": 1,
   "falhas": [
    {
     "key": "cobranca:tjrj",
     "erro": "HTTP Error 429: Too Many Requests"
    },
    {
     "key": "cobranca:tjrn",
     "erro": "HTTP Error 429: Too Many Requests"
    },
    {
     "key": "cobranca:tjro",
     "erro": "HTTP Error 429: Too Many Requests"
    },
    {
     "key": "cobranca:tjrr",
     "erro": "HTTP Error 429: Too Many Requests"
    },
    {
     "key": "cobranca:tjrs",
     "erro": "HTTP Error 429: Too Many Requests"
    },
    {
     "key": "cobranca:tjsc",
     "erro": "HTTP Error 429: Too Many Requests"
    },
    {
     "key": "cobranca:tjse",
     "erro": "HTTP Error 429: Too Many Requests"
    },
    {
     "key": "cobranca:tjsp",
     "erro": "HTTP Error 504: Gateway Time-out"
    }
   ],
   "segundos": 1407
  },
  "judicial": {
   "ok": 2,
   "falhas": [
    {
     "key": "tst_ranking",
     "erro": "bloqueio WAF do TST (HTTP 202, desafio JavaScript da AWS): a página só abre em navegador"
    }
   ],
   "segundos": 601
  },
  "cvm_dfp": {
   "ok": 3,
   "falhas": [],
   "segundos": 13
  }
 }
}