O protocolo, o que ele mede, o que ele assume e o que já foi verificado.
Este documento existe para que o protocolo possa ser examinado, criticado e reproduzido sem depender desta implementação. Ele declara separadamente o que foi medido nesta bancada, o que é assumido a partir da literatura e o que é assumido pelo operador — três coisas que costumam aparecer misturadas e que sustentam graus de confiança bem diferentes.
O protocolo recebe um conjunto de casos desfechados, cada um com um score atribuído antes do desfecho, e responde a três perguntas em ordem fixa:
A primeira pergunta é a que distingue este protocolo. A recusa em concluir não é falha: é resultado, e vem acompanhada da quantidade de dado que a tornaria desnecessária.
Cada linha é uma tupla (score, desfecho, valor, grupo). O grupo identifica a unidade de dependência — em antifraude transacional, o cliente.
Toda partição e todo reamostreio operam sobre grupos, nunca sobre linhas. A razão é que linhas do mesmo cliente não são independentes: se um cliente aparece de um lado da partição e do outro, parte do que parece capacidade preditiva é reconhecimento de alguém já visto, e o intervalo de confiança sai estreito demais.
Sem coluna de grupo, cada linha vira seu próprio grupo. O protocolo roda, mas o intervalo de confiança passa a supor independência que a amostra pode não ter. O laudo registra essa condição.
A ordem é lexicográfica e importa: cada verificação só é interpretável se as anteriores passaram. Uma falha interrompe e determina o diagnóstico.
| # | Verificação | Pergunta | Natureza | Falha significa |
|---|---|---|---|---|
| 1 | Tamanho da amostra | Há casos e eventos suficientes? | determinística | Falta dado |
| 2 | Permutação — média nula | Rótulos embaralhados voltam a 0,50? | praticamente determinística | Vazamento no dado |
| 3 | Controle positivo — correção | A bancada recupera alvos conhecidos? | intervalo de confiança | Defeito de método ou agrupamento |
| 4 | Controle positivo — poder | Recupera com precisão suficiente? | determinística | Falta dado |
| 5 | Permutação — valor-p | A separação excede o acaso? | teste de hipótese | Score sem sinal |
| 6 | Teste incremental | Acrescenta sobre sinais triviais? | teste de hipótese | Score sem valor marginal |
| 7 | Estabilidade por faixa | Separa homogeneamente? | determinística | Um número não representa o score |
| 8 | Aferição temporal | A separação se sustenta do início ao fim do período? | intervalo de confiança | O número global descreve média que o período recente não confirma |
As sete verificações não formam um conjunto homogêneo de testes estatísticos, e tratá-las como tal produz afirmações incorretas sobre taxa de erro. Três são determinísticas para a amostra observada: ou o mínimo foi atingido, ou não foi. Duas são verificações por intervalo de confiança. Uma é teste de hipótese.
A sétima — detecção de vazamento — é praticamente determinística por construção. Ela compara a média de centenas de permutações contra 0,50, e o erro-padrão de uma média cai com a raiz do número de sorteios: com desvio-padrão nulo típico de 0,034 e 250 sorteios, esse erro-padrão fica em torno de 0,002, de modo que a tolerância de 0,02 dista cerca de dez erros-padrão. O laudo publica esse cálculo com os números da rodada, em vez de afirmá-lo.
Um validador que recebe "sete testes a 5%" conclui coisa diferente de quem recebe esta classificação — e a segunda é a que corresponde ao protocolo.
Não há trajetória a permutar quando o score chega pronto, então o controle positivo é feito injetando um sinal cuja separação verdadeira é conhecida por álgebra. Para s = α·y + ε com ε ~ N(0,1):
Esse sinal passa pelo mesmo caminho da amostra real — mesmos grupos, mesmo tamanho, mesmo reamostreio. Dois alvos são usados, 0,65 e 0,80. A verificação se divide em duas independentes:
Tratar as duas como um critério único levaria a mandar corrigir método quando o que falta é dado.
O score chega pronto, então não há treino a separar no tempo: o que se afere é se o poder de separação se sustenta. A amostra é cortada em 60% da linha do tempo e a separação é medida nos dois lados; o reamostreio é por cliente sobre a amostra inteira, recalculando ambos os períodos a cada volta, de modo que um cliente presente nos dois lados entra ou sai junto.
O portão só dispara com queda acima do limiar e intervalo excluindo zero. Reprovar por oscilação repetiria um erro já corrigido neste protocolo — o controle negativo por sorteio único, que acusava defeito onde havia variabilidade.
O incremento sobre os sinais triviais é medido de duas formas: dentro da amostra, por validação cruzada agrupada por cliente, e fora do tempo, ajustando no período anterior e avaliando no posterior. A literatura de detecção de fraude documenta que a validação não temporal superestima o desempenho esperado em produção. Aqui a diferença é medida na base do próprio cliente em vez de citada.
Sai sem intervalo de confiança e por isso não é portão: serve para dimensionar quanto o número do portão pode estar otimista, não para emitir veredito.
O critério não é se o score vence uma regra trivial, e sim o que ele acrescenta depois que a regra trivial já foi aplicada. Compara-se a separação de [valor, log-valor, frequência do grupo] contra [os mesmos + score], ambos por validação cruzada agrupada, e a diferença por reamostreio pareado.
O teste de DeLong é o padrão para comparar AUROC correlacionados e é mais eficiente. Ele assume, porém, observações independentes — pressuposto que amostras com grupos repetidos violam. O reamostreio pareado por grupo respeita a estrutura de dependência e é a escolha correta para este desenho, não uma alternativa de segunda linha.
Três origens de confiança diferentes, que costumam aparecer misturadas:
| Grandeza | Como |
|---|---|
| Separação (AUROC) | Estatística de postos de Mann-Whitney, com tratamento de empates por posto médio |
| Intervalo de confiança | Reamostreio por grupo, percentis 2,5 e 97,5 |
| Valor-p | Permutação dos rótulos, 120 a 250 repetições conforme o tamanho |
| Ganho incremental | Validação cruzada agrupada em 5 dobras, regressão logística, diferença por reamostreio pareado |
| Estabilidade | AUROC por quartil de valor, amplitude entre faixas |
| Captura no topo | Fração de eventos e de perda financeira nas fatias de maior score, com intervalo |
| Custo esperado | Varredura completa de pontos de corte sob os custos declarados |
| Premissa | Efeito se falsa |
|---|---|
| Ausência de viés de seleção | Laudo aprovado e errado. É a única forma conhecida disso acontecer |
| Score gravado antes do desfecho | Vazamento — normalmente detectado pela verificação 2, mas não sempre |
| Custo de revisão por caso | Ponto de corte e economia deslocados |
| Eficácia da revisão manual | Economia projetada inflada se superestimada |
| Volume mensal e capacidade da equipe | Projeção e restrição de fila incorretas |
| Amostra representativa do período | Projeção linear inválida |
Cinco limiares dependem do que está em jogo e são escolhidos antes de rodar. Três não dependem e não se movem. A separação permite discordar da política sem que isso questione o método.
| Limiar | Conserv. | Padrão | Explor. | Natureza |
|---|---|---|---|---|
| Casos mínimos | 500 | 300 | 200 | política |
| Eventos mínimos | 40 | 25 | 15 | política |
| Largura máxima do IC | 0,15 | 0,20 | 0,25 | política |
| Ganho mínimo | 0,05 | 0,03 | 0,01 | política |
| Amplitude máxima | 0,07 | 0,10 | 0,15 | política |
| Desvio máximo da média nula | 0,02 | método | ||
| Valor-p máximo | 0,05 | método | ||
| Teto de rodadas | 2 | método | ||
Trocar de modo depois de ver o resultado queima um ciclo de revisão, como qualquer outra mudança de protocolo. Sem esse custo, "reprovou no padrão, tenta no exploratório" seria um laço sem condição de saída.
Nenhuma das afirmações abaixo é teórica. Todas foram medidas, e os parâmetros de reprodução estão na seção 7.
Sete populações sintéticas com propriedades conhecidas, cada uma construída para acionar um estado distinto do protocolo. Semente fixa, resultado determinístico.
| População | n | AUROC | Estado esperado | Obtido |
|---|---|---|---|---|
| Separação alta | 4.000 | 0,869 | Laudo emitido | confere |
| Separação moderada | 4.000 | 0,732 | Laudo emitido | confere |
| Score reflete o valor | 4.000 | 0,673 | Sem ganho sobre o trivial | confere |
| Sem sinal real | 4.000 | 0,495 | Sem sinal acima do acaso | confere |
| Amostra curta | 240 | 0,766 | Amostra insuficiente | confere |
| Amostra no limite | 700 | 0,786 | Bancada sem poder | confere |
| Cego no ticket alto | 4.000 | 0,722 | Desempenho instável | confere |
| Perde força no tempo | 4.000 | 0,770 | Degradação temporal | confere |
Note que a população de separação alta com amostra curta é recusada apesar do AUROC de 0,904. É o comportamento pretendido: separação aparente alta em poucos eventos não sustenta decisão.
Oitenta amostras independentes de 4.000 casos, extraídas de uma população de referência de 400.000 casos com separação verdadeira conhecida. Para cada amostra, verificou-se se o intervalo nominal de 95% continha o valor verdadeiro da população.
| Fatia | Valor verdadeiro | Cobertura medida | Erro padrão | Largura média |
|---|---|---|---|---|
| 1% de maior score | 16,96% | 97,5% | ±3,4 pp | 16,4 pp |
| 5% | 41,08% | 97,5% | ±3,4 pp | 23,2 pp |
| 10% | 55,44% | 95,0% | ±4,8 pp | 23,9 pp |
| 20% | 71,62% | 95,0% | ±4,8 pp | 21,4 pp |
Cobertura entre 95,0% e 97,5% para um nominal de 95%. O intervalo é honesto, com leve conservadorismo nas fatias estreitas.
O resultado vale para o procedimento de reamostragem implementado nesta versão, aplicado a este estimador, sob a estrutura de dependência e os tamanhos descritos acima. Não é afirmação sobre propriedades gerais do método bootstrap, que variam com o estimador, com a estrutura de grupos e com o tamanho da amostra. Alterar qualquer um desses elementos exige refazer a aferição.
Alvos de 0,65 e 0,80 injetados em amostra de 4.000 casos e 68 eventos foram recuperados em 0,6476 e 0,8009 — erros de 0,0024 e 0,0009, ambos com o alvo dentro do intervalo medido.
Durante a validação V2, a cobertura medida foi de 87% e 88% em duas levas, contra os 95% nominais. A hipótese inicial foi subcobertura do reamostreio, e uma correção de viés foi implementada. A correção não alterou o resultado.
Uma terceira leva, com outra família de sementes, produziu 98%. A investigação passou então do algoritmo para a infraestrutura de testes e identificou a causa: o gerador pseudoaleatório mulberry32 produz fluxos correlacionados para sementes próximas, e as amostras vinham sendo geradas com sementes espaçadas linearmente. As amostras "independentes" não eram independentes.
Com as sementes embaralhadas por mistura de bits, a cobertura passou a 95,0%–97,5%, eliminando a hipótese de subcobertura. A correção de viés foi então removida, por ter sido validada apenas sob a infraestrutura contaminada.
O registro fica porque a conclusão de V2 depende da correção de V4. Uma validação vale o que vale a bancada que a produziu.
Uma população foi construída com separação forte nos primeiros 60% do período e cerca de um quarto dessa força nos 40% finais, simulando adaptação da fraude. O AUROC global resultante — 0,7703 — está dentro da faixa que o protocolo aceitaria sem a verificação temporal.
| Medida | Valor |
|---|---|
| AUROC global | 0,7703 |
| Período 1 (2.389 casos, 45 fraudes) | 0,9023 |
| Período 2 (1.611 casos, 35 fraudes) | 0,5997 |
| Queda · IC 95% | 0,3026 [0,193; 0,411] |
| Incremento por validação cruzada | +0,2228 |
| Incremento fora do tempo | +0,1087 |
| Otimismo da validação não temporal | 0,1141 |
O otimismo medido — 11,4 pontos de AUROC — é da mesma ordem do que benchmarks públicos de detecção de fraude relatam quando a validação cruzada não respeita a ordem temporal. Nas populações estáveis do conjunto V1, a queda medida ficou entre −0,076 e +0,036, sempre com intervalo contendo zero: o portão não dispara por oscilação.
O leitor de CSV foi verificado contra nove formatos numéricos de uso corrente no Brasil — incluindo 1.299,00, 1.299 e R$ 2.480,50 — e sete grafias de desfecho, entre elas 1.0, chargeback e aprovada. Amostras degeneradas — sem eventos, só com eventos, ou com score constante — são recusadas na entrada com mensagem específica, em vez de produzirem resultados indefinidos.
Se a amostra contiver apenas casos que passaram por revisão manual, e a revisão tiver sido determinada pelo próprio score em aferição, todas as medidas ficam enviesadas de um modo que nenhuma verificação deste protocolo detecta e nenhum ajuste corrige. É a principal limitação metodológica conhecida do protocolo — o mecanismo que ele não consegue apurar diretamente. Erros de importação, de implementação ou de integridade do arquivo também produzem resultado incorreto, mas são causas distintas, tratadas fora do protocolo e em geral detectáveis por outros meios.
A mitigação é procedimental, não estatística: a ferramenta bloqueia a execução até declaração explícita do operador, e o laudo registra que se trata de declaração, não de verificação.
Das sete verificações, apenas três possuem componente probabilístico relevante: os dois alvos de calibração, avaliados por intervalos nominais de 95%, e o teste incremental. As demais são determinísticas para a amostra observada ou operam com taxa de falso alarme irrelevante.
Como os dois alvos de calibração compartilham a mesma amostra, suas probabilidades de recusa não são independentes. Não existe, portanto, uma taxa única de recusa espúria obtida pela combinação dos níveis nominais — e apresentar um número assim seria criar precisão falsa em um documento cuja proposta é o contrário disso.
O que se pode afirmar: a possibilidade de recusa por flutuação amostral é dominada pelas verificações de calibração e permanece da ordem de alguns pontos percentuais; e o erro atua no sentido conservador, podendo recusar um laudo aceitável mas não aprovar um inaceitável por esse motivo. O teto de rodadas existe para impedir que a repetição converta esse conservadorismo em permissividade.
A projeção mensal é linear e supõe que o período futuro se pareça com a amostra. Amostras que cobrem períodos atípicos, ou que misturam regimes distintos, herdam a distorção na média.
O ponto de corte ótimo é ótimo sob o comportamento observado. Alterar o corte altera o comportamento de quem frauda, e o ótimo se desloca. O protocolo mede o passado.
Desde a introdução da aferição temporal, parte deste limite deixou de ser ressalva e virou medição: a verificação 8 mede se a separação se sustentou dentro do período amostrado. O que permanece fora do alcance é a projeção para depois dele — nenhuma medição sobre dado passado antecipa a próxima adaptação. Sem coluna de data, nem sequer o comportamento dentro do período é verificado, e o limite volta a ser integralmente ressalva.
Mede-se discriminação, não calibração probabilística. Para uso por ponto de corte — que é o uso previsto — calibração não altera decisão. Para uso do score como probabilidade, este protocolo é insuficiente e outras medidas seriam necessárias.
Quando o protocolo indica quanto dado falta, a projeção supõe que a largura do intervalo decresce com a raiz do número de eventos e que o histórico adicional se pareça com o atual. É estimativa de ordem de grandeza, verificada contra os cenários sintéticos, não garantia.
Os resultados da seção 5 são reproduzíveis sem confiar nesta implementação. Todas as populações são geradas por procedimento declarado, com sementes fixas.
Gerador de score: s = α·y + ε, ε ~ N(0,1), α = √2 · Φ⁻¹(AUROC alvo) Gerador de valor: v = ticket · exp(0,85 · N(0,1)), mínimo 12 Gerador de data: dia sorteado uniformemente em [0, 180), a partir de 01/08/2025 Grupos: 0,62 · n identificadores sorteados uniformemente Aleatoriedade: mulberry32, semente 2026 Parâmetros padrão: n = 4.000 · taxa de evento 1,6% · ticket 420 Ordem de consumo do gerador, por linha (relevante para reprodução exata): 1. identificador do grupo 2. valor 3. rótulo 4. dia 5. ruído do score
| População | AUROC | Valor-p | Δ trivial | Amplitude | Queda temporal |
|---|---|---|---|---|---|
| Separação alta | 0,8689 | < 0,005 | +0,316 | 0,055 | +0,030 |
| Separação moderada | 0,7320 | < 0,005 | +0,173 | 0,055 | +0,036 |
| Score reflete o valor | 0,6733 | < 0,005 | +0,004 | 0,097 | −0,076 |
| Sem sinal real | 0,4953 | 0,562 | −0,006 | 0,042 | +0,032 |
| Amostra curta | 0,7660 | 0,028 | +0,120 | — | — |
| Amostra no limite | 0,7859 | < 0,005 | +0,274 | 0,141 | +0,129 |
| Cego no ticket alto | 0,7222 | < 0,005 | +0,154 | 0,394 | +0,122 |
| Perde força no tempo | 0,7703 | < 0,005 | +0,223 | 0,140 | +0,303 |
População de referência: 400.000 casos, AUROC verdadeiro 0,85, taxa 1,6%
Amostras: 80 independentes, 4.000 casos cada
Reamostragens: 250 por amostra, por grupo
Sementes: embaralhadas por mistura de bits — sementes
linearmente espaçadas produzem fluxos
correlacionados em mulberry32 (ver V4)
Critério: fração de amostras cujo intervalo 2,5–97,5
contém o valor verdadeiro da população
Reproduza as populações da tabela acima e verifique se os estados batem. Se não baterem, ou o procedimento aqui está incompleto, ou a implementação diverge do que este documento descreve. Ambos são achados relevantes e são o motivo de esta seção existir.
| Alteração | Motivo |
|---|---|
| Controle negativo por sorteio único substituído por permutação com 120–250 repetições | Com evento raro, um sorteio único tem desvio padrão da ordem de 0,035 e reprovava por acaso em cerca de 15% das execuções |
| Controle positivo separado em correção e poder | Um critério único de erro absoluto confundia defeito de método com falta de dado, e produzia o diagnóstico errado |
| Cinco limiares reclassificados como política declarada antes da execução | Não são propriedades do método; dependem do que está em jogo. Permite discordar da política sem questionar o método |
| Decisão separada em protocolo e implicações operacionais | Recomendação comercial não tem a mesma natureza que consequência dos testes e não deve ter a mesma autoridade |
| Supressão do ponto estimado em fatias com menos de 15 eventos | Percentual sobre punhado de eventos oscila demais para ser citado; publica-se apenas o intervalo |
| Correção de viés nos intervalos implementada e removida | A evidência que a justificava vinha de infraestrutura de testes contaminada — ver V4 |
| Laudo dividido em executivo e completo | O documento passou de 13 mil caracteres e atendia mal a dois leitores distintos |
| Acrescentada aferição temporal como oitava verificação, com coluna de data opcional | A orientação interagências (SR 11-7 à época, hoje SR 26-2) define backtesting como comparação em período não usado no desenvolvimento; o protocolo particionava apenas por cliente. Benchmarks públicos de fraude reportam superestimação de vários pontos de AUROC quando a validação não respeita a ordem temporal — medida aqui em 0,114 na população de teste construída para isso |
| Cenário "amostra no limite" recalibrado de 800 para 700 casos | A geração de datas alterou o fluxo do gerador pseudoaleatório e a configuração anterior deixou de demonstrar falta de poder, passando a acionar o portão de correção |
| Frase "única forma conhecida" substituída por "principal limitação metodológica conhecida" | A formulação original não era defensável: erros de importação, de implementação ou de integridade do arquivo também produzem resultado incorreto, ainda que por causas distintas |
| Afirmação de "nove desvios-padrão" substituída por cálculo publicado com os números da rodada | O texto não dizia desvios em relação a qual distribuição. O laudo agora imprime o desvio-padrão nulo, o erro-padrão da média e a distância em erros-padrão, todos medidos na execução |
| Aferição de cobertura delimitada ao procedimento desta versão | Sem a delimitação, o texto podia ser lido como afirmação sobre o método bootstrap em geral |
| Afirmação de multiplicidade retirada do laudo e substituída por classificação das verificações | O texto anterior dizia "seis testes independentes, cada um a 5%, chance de 25%". Eram sete verificações, nem todas testes de hipótese, nem todas a 5%, e os alvos de calibração não são independentes entre si. Nenhuma das três premissas do cálculo se sustentava. A correção não foi ajustar o número, e sim abandonar um cálculo injustificável |