O Dia em que Inverti um Sinal e Chamei Aquilo de Insight
Um backtest certa vez retornou com uma taxa de acerto que era quase exatamente o oposto do que eu tinha esperado. Onde eu queria que o modelo estivesse quase sempre certo, ele estava quase sempre errado — e não errado de forma aleatória, mas limpa e simetricamente errado, como se tivesse tentado perder.
Em vez de perguntar o porquê, fiz algo que pareceu genial por mais ou menos uma hora. Inverti a lógica para combinar. Se o modelo estava confiavelmente errado, raciocinei, então fazer o oposto do que ele dizia deveria estar confiavelmente certo. Uma pequena mudança, e uma regra perdedora se tornou, no papel, uma vencedora. Eu me parabenizei por uma descoberta.
Não era uma descoberta. Era o momento em que comecei a mentir para mim mesmo com uma edição de um único caractere.
O número que estava exatamente errado
A coisa suspeita nunca foi o resultado ser ruim. Resultados ruins são normais; isso é a maior parte do trabalho. A coisa suspeita era que ele era ruim de um jeito tão arrumadinho, em imagem espelhada — o tipo de simetria que, em retrospecto, pode indicar que algo mais banal está quebrado por baixo, em vez de uma estratégia que está genuinamente “ao contrário”.
Mas a simetria é sedutora quando aponta para uma vitória fácil. Um resultado ruim e bagunçado faz você depurar. Um resultado nitidamente invertido sussurra um atalho: você está mais perto do que pensa — é só virar do avesso.
A correção de um único caractere
Então virei do avesso. Reverti a condição — inverti uma desigualdade — e a mesma lógica que vinha perdendo agora, no backtest, vencia. Fiz o commit da mudança, sentindo que tinha sido mais esperto que o problema. A correção inteira era menor que esta frase.
Essa pequenez deveria ter sido um alerta. Edge de verdade é difícil de encontrar e mais difícil ainda de manter. Quando um único caractere invertido parece converter o fracasso em sucesso, a suposição honesta não é que você encontrou uma verdade oculta. É que você encontrou um bug oculto, e apenas mudou de qual lado dele você estava.
Por que inverter o sinal pareceu genialidade
A lógica é quase irresistível: se um preditor está consistentemente errado, então invertê-lo o torna consistentemente certo. Uma genialidade às avessas. Uma mina de ouro contrária. Quem não pegaria um modelo que é confiavelmente incorreto e simplesmente o leria de cabeça para baixo?
A falha nesse raciocínio é a palavra consistentemente. Ela presume que o modelo está de fato prevendo alguma coisa — só que na direção errada. E essa suposição era a única coisa que eu nunca verifiquei.
O que estava realmente quebrado
O modelo não estava ao contrário. Ele mal estava prevendo qualquer coisa. Suas saídas eram degeneradas — comprimidas em uma faixa estreita e não informativa, dizendo quase a mesma coisa não importava o que lhe fosse mostrado. Ele não havia aprendido um sinal e apontado na direção errada. Ele havia falhado em aprender um sinal, e estava produzindo algo próximo de ruído com uma leve inclinação sem significado.
Uma sequência curta de quase só coroas não prova um viés estável e explorável — pode muito bem ser apenas uma moeda quebrada ou não confiável. Inverter como você lê um sinal ruidoso não torna o sinal informativo. Apenas reetiqueta o ruído.
A inversão piorou as coisas
Esta é a parte que o backtest acabou me forçando a admitir. Depois de inverter a lógica, o desempenho não se espelhou para cima em algo bom. Ele continuou ruim — e, por algumas medidas, ficou pior. Não havia nada a reverter. Eu tinha pegado ruído, virado do avesso, e obtido ruído de novo, agora vestindo uma fantasia de intencionalidade.
O resultado breve e belo que tinha me feito sentir esperto era o mesmo tipo de miragem sobre a qual já escrevi antes: um número que te lisonjeia tempo o bastante para te impedir de fazer a única pergunta que importava — o modelo tinha aprendido alguma coisa, afinal?
O bug de verdade estava em mim
A inversão de um único caractere nunca foi realmente uma mudança de código. Foi um erro de categoria. Eu havia tratado um sintoma — uma taxa de acerto ruim — como se fosse uma estratégia que eu poderia ajustar, quando na verdade era um diagnóstico que eu havia me recusado a fazer. Em vez de perguntar por que a saída do modelo parecia daquele jeito, otimizei uma desigualdade contra o backtest até o número ficar verde.
Isso é overfitting em sua forma mais pura e mais humana. Você não precisa de mil parâmetros para fazer overfitting. Você pode fazê-lo com um único sinal, se estiver disposto a escolhê-lo com base no resultado que você quer, em vez da causa que você entende.
Um resultado surpreendente é uma pergunta, não uma resposta
A disciplina que tirei disso é simples de dizer e genuinamente difícil de praticar: quando um resultado sai o oposto do que você esperava, isso é uma pergunta, não uma resposta. A tentação é recorrer à menor mudança que faça o número parecer certo — inverter um sinal, reverter uma regra, trocar uma comparação. Essa menor mudança é, muitas vezes, a mais perigosa, porque ela conserta a aparência enquanto deixa a causa completamente intocada.
Agora, quando algo se inverte para mim, tento resistir à reversão elegante e fazer a pergunta feia em vez dela: não “como faço esse número apontar na direção certa?”, mas “existe um sinal real aqui, afinal, apontando em qualquer direção?” Muitas vezes ainda não existe nenhum. E um sinal invertido não consegue fabricar um.
Um modelo perdedor lido de cabeça para baixo continua sendo um modelo perdedor. A única coisa que a inversão muda é quanto tempo você leva para descobrir.
— Sem sinais, sem retornos, isto não é aconselhamento de investimento.