Como fazer backtest de estratégias em mercados de previsão
Um passo a passo — do seu primeiro snapshot até um backtest completo com simulação realista de execuções.
Por que o backtesting de mercados de previsão é diferente
Mercados de previsão não são como cripto spot. Os preços ficam limitados entre 0 e 1, os mercados têm horários de vencimento fixos e os perfis de liquidez não se parecem em nada com um livro de ofertas BTC/USDT. Uma estratégia que funciona na Binance não vai necessariamente funcionar na Polymarket. Você precisa de dados específicos de mercados de previsão — e precisa da profundidade do livro de ofertas, não só de feeds de preço.
Passo 1: obtenha os dados históricos
A PolyTest é uma API de backtesting para a Polymarket que permite a traders reproduzir livros de ofertas históricos e testar estratégias de trading em mercados de previsão de cripto. Cadastre-se em polytest.io, comece seu teste grátis de 3 dias, pegue uma chave de API e comece a fazer requisições. Você terá acesso a dados reais de snapshots em menos de 5 minutos.
# List BTC 5-minute markets
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.polytest.io/api/v1/markets?coin=btc&market_type=5m&limit=20"Passo 2: entenda os dados
Cada snapshot traz: melhor bid, melhor ask, preço médio, spread, volume, 8 níveis de profundidade do livro de ofertas (dos dois lados), o preço de referência da moeda subjacente e um timestamp em milissegundos. A profundidade do livro de ofertas é o grande diferencial — sem ela, você está apenas fazendo backtest contra o preço médio, o que não diz nada sobre como seriam suas execuções reais.
Passo 3: evite o viés de antecipação
O erro de backtesting mais comum é usar dados do futuro para tomar decisões no passado. Os snapshots da PolyTest são pontuais — cada um representa exatamente como o mercado estava naquele momento. Processe-os em ordem cronológica e use apenas dados que estariam disponíveis no momento da decisão. Nunca espie o próximo snapshot para decidir o que fazer agora.
Passo 4: simule execuções realistas
É aqui que a maioria dos backtests desmorona. Se você supõe que consegue comprar pelo preço médio, seus resultados vão parecer bem melhores do que a realidade. Use os dados de profundidade do livro de ofertas para simular execuções: percorra os níveis, consuma a liquidez disponível em cada preço e calcule seu preço médio de execução incluindo o slippage. Uma ordem de 100 cotas com preço médio de 0.52 pode na verdade ser executada a 0.527 se houver pouca liquidez no lado do ask.
function simulateFill(
orderbook: { price: number; size: number }[],
quantity: number
) {
let filled = 0;
let cost = 0;
for (const level of orderbook) {
const fillAtLevel = Math.min(level.size, quantity - filled);
cost += fillAtLevel * level.price;
filled += fillAtLevel;
if (filled >= quantity) break;
}
return {
avgPrice: cost / filled,
filled,
slippage: cost / filled - orderbook[0].price,
};
}Passo 5: leve o tempo em conta
Os mercados Up/Down da Polymarket são resolvidos em horários específicos. Um mercado BTC de 5 minutos que começa às 14:00 é resolvido às 14:05. Sua estratégia precisa saber quando entrar e quando o mercado fecha. Os snapshots da PolyTest incluem timestamps em milissegundos, então você pode modelar o momento de entrada com precisão. Não suponha que consegue entrar na abertura do mercado — quando você vê o preço, ele pode já ter se movido.
Passo 6: meça o que importa
A taxa de acerto sozinha engana em mercados de previsão. Acompanhe: P&L depois do slippage, drawdown máximo, índice de Sharpe se você roda a estratégia continuamente e como seus resultados mudam em diferentes condições de mercado. Uma estratégia que imprime dinheiro em mercados com tendência pode sangrar em mercados laterais. Use o filtro por intervalo de tempo da PolyTest para testar em períodos diferentes.
Erros comuns
Fazer backtest contra o preço médio em vez de simular execuções no livro de ofertas. Ignorar o spread — os spreads dos mercados Up/Down da Polymarket podem ser de 2-5 centavos, o que corrói as margens rapidamente. Testar em uma única moeda ou timeframe e supor que o resultado se generaliza. Fazer overfitting em uma janela de tempo curta. Não levar em conta que suas ordens moveriam o mercado se você operar com um tamanho relevante.