Dados e limitações
O Backtest simula o que uma estratégia teria feito no passado, com as regras que você define. Não é uma previsão nem uma recomendação. Como qualquer simulação, ela tem limites: esta página lista de onde vêm os dados e o que a ferramenta ainda não cobre, pra você decidir com os olhos abertos quanto confiar num resultado.
De onde vêm os dados
Ações da B3, ações americanas, cripto, índices e commodities, buscados automaticamente (nesta ordem de tentativa, com repescagem se uma fonte falhar): Yahoo Finance, Stooq, brapi.dev, Alpha Vantage, CoinGecko/Binance (cripto) e, como último recurso pra B3, o COTAHIST da B3. Você também pode trazer seu próprio CSV.
Todas as fontes trazem preço de fechamento diário, nunca intraday: a ferramenta não serve pra estratégia que opera dentro do dia. O candle "de hoje" só existe depois que o pregão fecha e a fonte processa o dado. Na prática, espere de poucas horas a um dia de atraso pra ver o fechamento mais recente, variando por fonte e por ativo.
O histórico de cada ativo é cacheado no seu navegador e complementado aos poucos: uma consequência prática é que o cache de um mesmo ticker pode misturar trechos vindos de fontes diferentes ao longo do tempo, e cada fonte pode calcular preço ajustado de um jeito ligeiramente diferente. Um aviso aparece automaticamente quando o salto de preço na fronteira entre duas fontes passa de 12%. É uma heurística, não uma garantia; vale conferir manualmente se aparecer.
Limitações conhecidas da simulação
- Sem dividendos/proventos, sem ajuste completo de preços por eventos corporativos.
- Sem venda a descoberto (short selling): só posições compradas.
- Sem obrigatoriedade de lote inteiro na B3 (permite fração de ação).
- Slippage agora é configurável (penalidade percentual fixa contra você, na entrada e na saída), mas não modela spread bid-ask como um custo separado: a mesma porcentagem aproxima os dois efeitos.
- Sem impostos.
- Kelly Criterion (quando aplicado) é uma aproximação estática, calculada uma vez com as estatísticas do histórico inteiro: não recalcula a cada operação com o Kelly "adaptativo" de verdade.
- Beta e Alpha usam Buy & Hold do próprio ativo por padrão, mas dá pra trocar pra Ibovespa ou S&P 500 de verdade (campo "Benchmark pra Beta/Alpha"): só funciona bem quando o ativo e o índice compartilham datas de pregão parecidas (ações do mesmo mercado do índice); cripto e commodities continuam caindo de volta pro Buy & Hold quando o alinhamento de datas não é suficiente.
- Sharpe/Sortino/Otimizador/Screener internos (não o painel principal) não descontam a taxa livre de risco configurada.
- O Otimizador e o Screener continuam sem correção automática pra múltiplos testes na hora de rankear combinações internamente: use o Deflated Sharpe Ratio (seção "Significância estatística" de cada ativo) manualmente depois, informando quantas combinações você testou.
- Cache incremental por ticker mistura fontes diferentes (Yahoo, Stooq, brapi.dev, Binance, COTAHIST, CSV) ao longo do tempo: cada uma pode calcular preço ajustado de um jeito ligeiramente diferente. Um aviso aparece automaticamente quando o salto de preço na fronteira entre duas fontes passa de 12%, mas isso é uma heurística, não uma garantia: vale conferir manualmente se aparecer.
- Portfólio combinado usa só o trecho de datas em comum entre TODOS os ativos selecionados (a interseção, não a união): ativos com históricos de tamanhos muito diferentes acabam limitando a janela combinada ao mais curto deles. O rebalanceamento em si não desconta nenhuma taxa extra de corretagem, além da já embutida na estratégia de cada ativo.
A matemática por trás das métricas
O Índice de Sharpe mede retorno por unidade de risco: quanto o retorno superou uma taxa livre de risco (aqui, o CDI), dividido pela volatilidade do período.
Onde Rp é o retorno do portfólio, Rf a taxa livre de risco (CDI) e σp o desvio padrão dos retornos. O valor exibido em cada resultado do Backtest é anualizado: multiplicamos esse resultado por √(períodos por ano) antes de mostrar, pra poder comparar estratégias testadas em janelas de tamanhos diferentes.
O Deflated Sharpe Ratio (DSR) corrige um problema real do Otimizador e do Screener: testar centenas de combinações e pegar a de maior Sharpe encontra, quase sempre, um resultado bom por sorte, não por método. O DSR pergunta uma coisa diferente: dado que N combinações foram testadas, qual a chance de o Sharpe observado ainda ser melhor do que o esperado só por acaso?
Onde Φ é a distribuição normal acumulada, E[max Ŝₙ] é o Sharpe médio esperado do melhor resultado dentre N tentativas aleatórias (mesmo sem nenhuma habilidade real por trás), T é o número de observações e γ₃/γ₄ são a assimetria e a curtose dos retornos. Quanto mais combinações testadas (N maior), maior o Sharpe exigido pra não ser atribuível à sorte. É o número usado na seção "Significância estatística" de cada ativo; a fórmula completa está implementada em src/lib/backtestEngine.js.
Se você importar seu próprio CSV
A qualidade do resultado depende inteiramente da qualidade do arquivo: preço ajustado por proventos/splits (se o seu CSV não ajustar, a ferramenta também não ajusta), sem duplicar nem pular datas, sem ativo deslistado silenciosamente removido do histórico (survivorship bias). A ferramenta não tem como detectar esses problemas por você.
O que isto não é
Não é recomendação de investimento nem previsão do futuro. Resultados passados não garantem resultados futuros. Veja também o aviso de privacidade e os termos de uso.