Backtest: o que é e por que o resultado engana
Backtest testa uma regra de investimento no histórico. Veja os vieses que inflam o resultado e como reduzir cada um antes de confiar no número.

Alguém mostra um gráfico subindo de forma limpa por dez anos e diz que a regra dele "teria multiplicado o capital". Não houve operação real. Houve uma planilha, um robô de código aberto ou um script que aplicou uma regra a preços antigos.
Esse teste tem nome: backtest. Ele aparece em fórum de cripto, em vídeo de robô de trading e em apresentação de gestora, quase sempre com o mesmo problema. O número final parece mais confiável do que é.
Um backtest bom não prova que a estratégia funciona. Ele prova que ela não falhou num passado que você escolheu, com dados, custos e regras que você também escolheu.
Antes de seguir: este conteúdo é educativo e não é recomendação de investimento. Nenhum exemplo aqui sugere estratégia, ativo, corretora ou robô. Resultado passado não garante resultado futuro.
O que é backtest e como ele funciona
Toda estratégia de investimento pode ser escrita como regra. "Compro quando o preço fecha acima da média de 50 dias e vendo quando fecha abaixo" é uma regra. "Rebalanceio a carteira todo trimestre" também é. A simulação pega essa regra e a aplica, dia a dia ou candle a candle, sobre o histórico de preços.
O processo tem cinco etapas, as mesmas do diagrama acima:
- Regra: quando entra, quando sai e quanto aloca em cada operação.
- Dados: preços, volumes e, conforme a regra, dados contábeis ou de notícias.
- Simulação: o programa percorre o histórico e registra cada operação.
- Fora da amostra: a regra roda num período que ela não viu na criação.
- Leitura: você analisa retorno, queda máxima, número de operações e custo.
Os dados costumam chegar em arquivo CSV, uma linha por período, e boa parte das ferramentas é escrita em Python. Quem já estudou análise gráfica vai reconhecer o tipo de regra que mais aparece nesses testes: médias, rompimentos e indicadores de momento.
Os vieses que fazem o backtest parecer melhor do que é
Um teste honesto e um teste enganoso usam o mesmo software. A diferença está em decisões que não aparecem no gráfico final. Os cinco vieses abaixo são os mais comuns.
Viés de sobrevivência
Você baixa hoje a lista de ações do índice e testa a regra nos últimos 15 anos. O problema: essa lista só tem empresas que sobreviveram. As que quebraram, foram compradas ou saíram da bolsa não estão lá. Uma regra que compra "ações baratas" parece ótima porque as ações baratas que ficaram na base são justamente as que se recuperaram. As outras sumiram do arquivo.
O mesmo vale para cripto. Uma lista atual de moedas exclui milhares de projetos que morreram no caminho.
Olhar para o futuro
O nome técnico é look-ahead bias. A regra usa um dado que não estava disponível no momento da decisão. O exemplo clássico é o balanço trimestral: a empresa fecha o trimestre em março, mas publica o resultado semanas depois. Se o teste usa o lucro de março para comprar em março, ele está lendo o jornal de amanhã.
Em código, o erro costuma ser mais sutil. Um indicador calculado com o preço de fechamento do próprio candle em que a ordem é executada já basta. A documentação do Freqtrade, por exemplo, pede que a estratégia não use no teste dados que não estariam disponíveis em condições reais de mercado.
Sobreajuste
Você testa a média de 20 dias, depois a de 21, a de 22, até a de 200. Depois cruza com três filtros e quatro prazos de saída. Em algum momento uma combinação dá um resultado excelente. Ela pode ter achado um padrão real ou só ter se encaixado no ruído daquele histórico.
Esse é o viés mais difícil de perceber, porque nasce do excesso de testes, e quem testa costuma estar de boa-fé. Os matemáticos David Bailey, Jonathan Borwein, Marcos López de Prado e Qiji Zhu publicaram um método para estimar exatamente isso, a probabilidade de sobreajuste de backtest. O artigo, de 2015, também argumenta que separar só um pedaço do histórico para validação é uma proteção pouco confiável nesse tipo de teste.
Custo esquecido
Uma simulação sem custo superestima o resultado. No Brasil, cada operação em bolsa paga corretagem (quando a corretora cobra), emolumentos da B3 e, no lucro, imposto de renda. Toda compra e venda também paga spread, a diferença entre o preço de compra e o de venda no livro. E existe o slippage: a ordem sai a um preço pior do que o planejado, porque o mercado andou ou porque faltou volume.
Uma regra que opera muito sofre mais com isso. Um ganho pequeno por operação, repetido centenas de vezes, pode virar prejuízo depois dos custos. Mesmo ferramentas maduras simplificam aqui: a documentação do Freqtrade diz que inclui as taxas da corretora no cálculo, mas assume que a ordem é executada no preço pedido sempre que esse preço aparece dentro do candle, sem simular slippage.
Mudança de regime
O mercado muda de regime: os juros sobem e caem, e a inflação acelera e desacelera. Uma regra que funcionou num período de juros em queda pode não ter nada a dizer sobre um período de juros em alta. Um backtest de dez anos pode ter atravessado um único regime, e aí a amostra parece longa mas tem pouca variedade.
Tabela: viés, como aparece e como reduzir
| Viés | Como aparece | Como reduzir |
|---|---|---|
| Sobrevivência | base montada com a lista atual de ativos | usar base com ativos deslistados e falidos |
| Olhar para o futuro | dado usado antes da data de publicação | registrar a data de divulgação de cada dado |
| Sobreajuste | centenas de variações, fica a melhor | limitar as tentativas e testar fora da amostra |
| Custo esquecido | resultado bruto, sem taxa nem slippage | somar custo realista por operação |
| Mudança de regime | período longo, mas num só tipo de mercado | testar em períodos com condições diferentes |
Nenhuma dessas medidas zera o risco. Elas reduzem a distância entre o número da simulação e o que aconteceria com dinheiro real.
Fora da amostra e walk-forward
A defesa mais simples contra sobreajuste é separar o histórico em duas partes. Você cria e ajusta a regra na primeira (dentro da amostra) e só depois roda na segunda (fora da amostra). Se o desempenho desaba no período novo, a regra provavelmente decorou o passado.
O walk-forward repete essa separação em janelas que andam no tempo. Um exemplo hipotético: você ajusta a regra com dados de 2015 a 2017 e testa em 2018. Depois ajusta com 2016 a 2018 e testa em 2019. E segue assim até o fim da base. No final, você olha só os resultados dos anos de teste, que a regra nunca viu durante o ajuste.
As duas técnicas têm um limite: se você roda o teste fora da amostra, não gosta do número, muda a regra e roda de novo, o período "novo" virou parte do ajuste. Ele precisa ser usado poucas vezes, de preferência uma.
Ferramentas de backtest de código aberto
Os robôs de trading de código aberto que circulam em comunidades de cripto quase sempre têm modo de simulação. Três projetos conhecidos servem de exemplo, e nenhum deles é indicação de uso:
- Freqtrade: tem o comando de backtesting e um comando separado de análise de look-ahead, que roda a estratégia de novo em fatias para ver se o resultado muda quando o dado futuro some.
- Jesse: o repositório oficial promete backtests sem viés de olhar para o futuro, com licença MIT.
- OctoBot: o repositório informa que o robô vem com motor de backtesting próprio, sob licença GPL-3.0.
Ter uma ferramenta pronta resolve a parte mecânica. As escolhas de dado, período, custo e quantidade de tentativas continuam com quem roda o teste. Com cripto há ainda um ponto extra: o histórico é curto e cheio de moedas que deixaram de existir, assunto que aparece no post sobre Bitcoin.
Como ler um backtest antes de acreditar nele
Seja seu teste ou de outra pessoa, estas perguntas filtram boa parte dos resultados enganosos:
- A base inclui ativos que deixaram de existir? Se a resposta for "não sei", trate o número com desconfiança.
- Cada dado tem data de publicação? Balanço, indicador e notícia precisam entrar no teste na data em que ficaram públicos.
- Quantas variações foram testadas até chegar a essa? Se ninguém contou, o risco de sobreajuste é alto.
- Os custos estão lá? Procure corretagem, emolumentos, imposto, spread e slippage, com valores próximos dos reais.
- Existe período fora da amostra? E ele foi usado uma vez, ou várias?
- Qual foi a maior queda? Um retorno alto com uma queda grande no meio exige aguentar essa queda com dinheiro real.
- O resultado sobrevive a pequenas mudanças? Se trocar a média de 50 para 55 dias destrói o ganho, a regra é frágil.
Essas perguntas seguem a lógica do DYOR: verificar por conta própria antes de confiar em quem mostra o gráfico. E nenhuma simulação substitui um plano de investimentos com objetivo, prazo e limite de perda definidos antes.
O que um backtest consegue e o que não consegue dizer
Um backtest bem feito é útil para eliminar ideias. Se uma regra perde dinheiro no histórico mesmo com dados limpos e custos realistas, há pouca razão para testá-la com dinheiro real. Ele também ajuda a entender o comportamento da regra: quantas operações faz, quanto tempo fica posicionada, qual a pior sequência de perdas.
O que ele não consegue é prever. Ele não sabe como o mercado vai se comportar, se a liquidez vai mudar, se outras pessoas vão descobrir o mesmo padrão e fazê-lo sumir. Por isso a última etapa do diagrama se chama leitura, e o rótulo dela diz que o resultado é hipótese.
O passo seguinte, quando existe, é a simulação ao vivo, com dados que chegam em tempo real e sem dinheiro em jogo. O Freqtrade chama esse modo de dry-run, e a documentação dele afirma que o backtesting nunca vai substituí-lo.
Ferramentas citadas neste post
- AI Hedge Fund: Projeto educacional em que agentes de IA simulam decisões de um fundo, com paper trading e backtest. Não opera de verdade e não é recomendação de investimento.
- CCXT: Biblioteca open source que acessa mais de 100 exchanges de cripto por uma API única, para quem programa coleta de dados, análise ou robôs de negociação.
- Freqtrade: Bot open source de trading de criptomoedas em Python, com backtest, simulação sem dinheiro real e controle por Telegram ou interface web.
- OpenBB: Plataforma open source em Python que reúne dados de mercado de vários provedores numa interface única, para pesquisa, análise quantitativa e painéis.
- TradingAgents: Framework de pesquisa em Python no qual agentes de IA com papéis de analista, trader e gestor de risco debatem uma decisão sobre um ativo.
- yfinance: Biblioteca Python não oficial que baixa cotações, dividendos e dados de empresas do Yahoo Finance para pesquisa e estudo de mercado.


