Cómo hacer backtesting de estrategias en mercados de predicción
Un recorrido paso a paso: desde tu primer snapshot hasta un backtest completo con simulación realista de ejecuciones.
Por qué el backtesting en mercados de predicción es distinto
Los mercados de predicción no se parecen al cripto spot. Los precios están acotados entre 0 y 1, los mercados tienen horas de vencimiento fijas y sus perfiles de liquidez no se parecen en nada a un libro de órdenes BTC/USDT. Una estrategia que funciona en Binance no tiene por qué funcionar en Polymarket. Necesitas datos específicos de mercados de predicción, y necesitas la profundidad del libro de órdenes, no solo feeds de precios.
Paso 1: obtén datos históricos
PolyTest es una API de backtesting para Polymarket que permite a los traders reproducir libros de órdenes históricos y probar estrategias de trading en mercados de predicción cripto. Regístrate en polytest.io, empieza tu prueba gratuita de 3 días, consigue una clave de API y empieza a hacer solicitudes. Tendrás acceso a datos reales de snapshots en 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"Paso 2: entiende los datos
Cada snapshot te da: mejor bid, mejor ask, precio medio, spread, volumen, 8 niveles de profundidad del libro de órdenes (ambos lados), el precio de referencia de la moneda subyacente y una marca de tiempo en milisegundos. La profundidad del libro de órdenes es lo que marca la diferencia: sin ella, solo haces backtesting contra el precio medio, que no te dice nada de cómo serían tus ejecuciones reales.
Paso 3: evita el sesgo de anticipación
El error más común en el backtesting es usar datos futuros para tomar decisiones pasadas. Los snapshots de PolyTest son puntuales: cada uno representa exactamente cómo estaba el mercado en ese momento. Procésalos en orden cronológico y usa solo los datos que habrían estado disponibles en el momento de decidir. Nunca mires el siguiente snapshot para decidir qué hacer ahora.
Paso 4: simula ejecuciones realistas
Aquí es donde se vienen abajo la mayoría de los backtests. Si das por hecho que puedes comprar al precio medio, tus resultados se verán mucho mejores que la realidad. Usa los datos de profundidad del libro de órdenes para simular las ejecuciones: recorre los niveles, consume la liquidez disponible en cada precio y calcula tu precio medio de ejecución incluido el slippage. Una orden de 100 acciones con un precio medio de 0.52 podría ejecutarse en realidad a 0.527 si solo hay poca liquidez en el lado 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,
};
}Paso 5: ten en cuenta el tiempo
Los mercados Up/Down de Polymarket se resuelven a horas concretas. Un mercado de BTC de 5 minutos que empieza a las 14:00 se resuelve a las 14:05. Tu estrategia necesita saber cuándo entrar y cuándo cierra el mercado. Los snapshots de PolyTest incluyen marcas de tiempo en milisegundos para que puedas modelar el momento de entrada con precisión. No des por hecho que puedes entrar en la apertura del mercado: para cuando ves el precio, puede que ya se haya movido.
Paso 6: mide lo que importa
En los mercados de predicción, la tasa de acierto por sí sola engaña. Mide: el P&L después del slippage, el drawdown máximo, el ratio de Sharpe si ejecutas la estrategia de forma continua y cómo cambian tus resultados en distintas condiciones de mercado. Una estrategia que imprime dinero en mercados con tendencia puede desangrarse en mercados laterales. Usa el filtrado por rango de tiempo de PolyTest para probar en distintos periodos.
Errores comunes
Hacer backtesting contra el precio medio en lugar de simular ejecuciones en el libro de órdenes. Ignorar el spread: en los mercados Up/Down de Polymarket puede ser de 2-5 centavos, lo que se come los márgenes muy rápido. Probar con una sola moneda o un solo intervalo y suponer que se generaliza. Sobreajustar a una ventana de tiempo corta. No tener en cuenta que tus órdenes moverían el mercado si operas con un tamaño significativo.