Los mercados de predicción parecen lo más fácil del mundo para hacerles un backtest. El precio está entre [0, 1]. El pago es un dólar o nada. Sin apalancamiento, sin financiación, sin base, sin rarezas de los swaps perpetuos a las 00:00 UTC. Ya teníamos un backtester que gestionaba contratos perpetuos de criptomonedas con comisiones, financiación e impacto, y el plan era dedicar 2 días a adaptarlo y luego empezar a generar estrategias.
Nos llevó 8. Aquí está el registro, más o menos en orden, incluido el día en que la curva de capital parecía increíble y lo era.
Día 1: el adaptador que debería haber sido trivial
El mapeo inicial era uno a uno y parecía limpio. Un mercado es un instrumento. El precio de YES es el precio. Comprar YES es ir en largo; comprar NO es ir en corto. La resolución fuerza el cierre en 1.00 o 0.00. Pasamos la serie de precios por hora al mismo bucle de eventos y listo.
Ese mapeo resiste unos 90 minutos de contacto con datos reales. Lo primero que dejó de funcionar fue la serie de retornos. Toda nuestra capa de riesgo —el dimensionamiento de posiciones, el ajuste por volatilidad, los informes de Sharpe— suponía retornos logarítmicos de un instrumento continuo. Un mercado que pasa de 0.04 a 0.00 tiene un retorno logarítmico indefinido y una pérdida total bien definida. Y un mercado que está en 0.04 3 días antes de la resolución es un objeto totalmente distinto de otro que está en 0.04 4 minutos antes, aunque ambas filas indiquen 0.04.
Al final, reparametrizamos toda la serie según el tiempo hasta la resolución, en lugar del tiempo de reloj, y tratamos el PnL como terminal, en vez de marcado a mercado. Fue la decisión correcta y dejó obsoleto todo el código de informes que dependía de ello.
Día 2: la fórmula de comisiones es la estrategia
En Kalshi, la comisión de trading no es un recorte de puntos básicos. Es cuadrática en el precio: aproximadamente 0.07 × contracts × P × (1−P), redondeada hacia arriba al centavo en cada orden. Eso significa que la comisión es máxima justo donde un mercado de cara o cruz resulta más interesante, y casi gratuita en los extremos.
| Precio | Comisión por contrato | Ventaja necesaria (puntos de prob.) | Comisión como % de la apuesta |
|---|---|---|---|
| 5¢ | 0.33¢ | 0.33 | 6.7% |
| 10¢ | 0.63¢ | 0.63 | 6.3% |
| 25¢ | 1.31¢ | 1.31 | 5.3% |
| 50¢ | 1.75¢ | 1.75 | 3.5% |
| 75¢ | 1.31¢ | 1.31 | 1.8% |
| 90¢ | 0.63¢ | 0.63 | 0.7% |
| 95¢ | 0.33¢ | 0.33 | 0.35% |
Quédate con la tercera columna: para alcanzar el punto de equilibrio comprando a 50¢ y manteniendo hasta la resolución, tu estimación de probabilidad tiene que superar la del mercado en 1.75 puntos. No en un 1.75% relativo. En términos absolutos. Si sales antes de la resolución en vez de mantener, pagas la comisión dos veces, además del spread.
Históricamente, el CLOB de Polymarket ha tenido una estructura de comisiones muy distinta, más cercana a cero por la operación en sí, de modo que todo el coste pasa al spread y a la profundidad. Así que la misma lógica de estrategia tiene una economía totalmente distinta según la plataforma, y cualquier comparación entre plataformas que use un único modelo de comisiones es ficticia. Ahora usamos una función de comisiones por plataforma, no un valor escalar.
Si vas a leer una sola línea de un informe de backtesting de mercados de predicción, que sea la de comisiones expresadas en puntos de probabilidad. Una estrategia que afirme tener una ventaja de predicción de 1.2 puntos en mercados a 50¢ pierde en Kalshi antes de contar cualquier otro coste. Ese dato debería verse en la primera página, no dejarse a cargo del lector.
Día 3: el libro es una escalera y se queda corto
Nuestro modelo de impacto era una función de raíz cuadrada calibrada con libros de órdenes de contratos perpetuos de BTC. La forma no sirve. Con un tick de 1¢ en un instrumento de $1, solo hay 99 niveles de precio posibles en todo el libro, y un mercado con liquidez media puede tener un par de cientos de contratos en el nivel superior y luego un vacío.
Aquí hay una instantánea del mercado de datos económicos que estábamos muestreando, lado YES, unas 30 horas antes de la resolución:
| Nivel | Tamaño (contratos) | Coste acumulado de compra |
|---|---|---|
| 42¢ | 310 | 310 @ 42.0¢ de media |
| 43¢ | 85 | 395 @ 42.2¢ de media |
| 45¢ | 140 | 535 @ 42.9¢ de media |
| 49¢ | 600 | 1,135 @ 46.1¢ de media |
Una orden de 1,000 contratos —quinientos dólares de riesgo, un error de redondeo en el mundo cripto— mueve el precio efectivo 4 centavos. Cuatro centavos es más del doble de la comisión. No hay una función continua que encaje aquí: recorres el libro nivel por nivel o te lo estás inventando. Eliminamos el modelo de raíz cuadrada para esta clase de activos y escribimos un recorrido literal del libro, más lento y correcto.
En algún momento me descubrí molesto porque estos mercados son «demasiado pequeños para importar». Son pequeños porque lo que se está valorando es una sola pregunta del mundo real con fecha límite, y solo hay cierta cantidad de gente con una opinión sobre las solicitudes iniciales de subsidio por desempleo en EE. UU. un miércoles. El tamaño es el mercado. Quejarse de eso es como quejarse de que en una mesa de póquer solo caben 9 personas.
Día 4: el día en que la curva de capital era preciosa
Sharpe de 4.1 en 1,400 mercados. Suave. A cualquier investigador se le debería encoger el estómago al verlo; a mí me pasó, finalmente, unos 40 minutos después de haberle sacado una captura de pantalla.
El error estaba en el remuestreador. El historial de precios de los mercados ilíquidos llega con marcas de tiempo irregulares, así que lo reindexamos en una cuadrícula horaria uniforme. El último punto de cada serie archivada es el valor de liquidación, 1.00 o 0.00. Nuestro reindexado rellenaba con el vecino más cercano, sin restringir la dirección, así que en cualquier mercado cuya última operación hubiera ocurrido horas antes de la resolución, el valor de liquidación se propagaba hacia atrás a través del intervalo. El modelo leía hoy la respuesta de mañana justo en los mercados ilíquidos donde podía aumentar el tamaño de la posición sin alcanzar los límites de profundidad.
Rellenar con el vecino más cercano funciona para un instrumento continuo. En uno cuya última observación es la verdad definitiva, es una máquina de anticipación. Ahora comprobamos que todo relleno avance solo hacia delante y que la fila de liquidación esté etiquetada y excluida de cualquier cálculo de características. Esa comprobación tiene 9 líneas y es el código más valioso que escribimos en toda la semana.
Días 5–6: 1,412 mercados, unas 180 apuestas
El tamaño de muestra en los mercados de predicción es una trampa con cara amable. Resuelves 1,412 mercados, sientes que tienes 1,412 observaciones y calculas un estadístico t en consecuencia. Pero 14 partidos de la NFL el mismo domingo comparten un sistema meteorológico, la publicación de informes de lesiones y un flujo común de apostadores. Cincuenta y un mercados electorales a nivel estatal comparten un mismo vaivén nacional. «¿Ocurrirá X antes del 31 de marzo?» y «¿Ocurrirá X antes del 30 de junio?» son la misma apuesta con vencimientos distintos y se resuelven a la vez.
Agrupamos los mercados por fuente del evento subyacente y fecha de resolución, y obtuvimos un recuento efectivo de casos independientes cercano a 180. No basta para distinguir una ventaja real del ruido con los tamaños de efecto que analizábamos, y ningún remuestreo bootstrap por mercado lo corrige: el bootstrap debe remuestrear grupos, no filas. Si te equivocas en esto, inflas la significación por un factor de 2 o 3, sin que nadie se dé cuenta.
Día 7: la resolución también es una distribución de probabilidad
Las cosas que no habíamos modelado en absoluto y descubrimos por las malas:
- Resolución anticipada. Un mercado que vence «antes del 31 de diciembre» puede resolverse el 4 de agosto si el evento ocurre ese día. El capital vuelve antes y el periodo de tenencia nunca fue el que sugería el nombre del contrato.
- Disputas. Los mercados resueltos por un oráculo tienen un plazo para impugnar. Una posición puede quedar en el limbo durante días después del evento y, en unos pocos casos, el resultado cambia respecto de lo que parecía obvio.
- Anulaciones. Si los datos de origen son ambiguos, se cancela el mercado y se reembolsa a todos. En nuestra muestra afecta a menos del 1% de los mercados, pero se concentran justo en las preguntas ambiguas que un modelo detecta como mal valoradas.
- Capital inmovilizado. Una ventaja de 3 puntos obtenida en 90 días y una ventaja de 3 puntos obtenida en 6 horas no son comparables, y un backtest que informe la ventaja total sin un denominador de tiempo de capital siempre favorecerá la opción más lenta.
Añadimos al simulador un término de coste de tenencia y una variación aleatoria de la fecha de resolución. Ninguno es preciso. Ambos son mejores que asumir implícitamente que la resolución ocurre con certeza justo en la fecha indicada.
Día 8: qué nos saltaríamos y qué haríamos primero
- Sáltate por completo la estructura basada en retornos. No adaptes una capa de riesgo con ajuste por volatilidad a un instrumento con pago terminal. Escribe una capa para dimensionar apuestas que hable en términos de probabilidad y apuesta. Perdimos 2 días intentando adaptar la antigua.
- Construye la función de comisiones antes que la estrategia. Traza la curva de ventaja de equilibrio para cada plataforma en la que pienses operar y déjala a la vista en la mesa. Descarta cerca de la mitad de las ideas antes de que te cuesten una ejecución del backtest.
- Recorre el libro desde el primer día. Cualquier modelo paramétrico de impacto importado de un mercado continuo estará equivocado de una forma que te favorezca.
- Agrupa antes de contar. Decide la clave de agrupación para el tamaño efectivo de la muestra al definir el universo, no después de obtener un Sharpe que te guste.
- Verifica la dirección del relleno. Una línea por unión. Si una serie termina en la verdad definitiva, considera el relleno hacia atrás un error por definición, en vez de esperar a detectarlo durante la revisión.
Los 8 días valieron la pena, sobre todo porque los mercados de predicción eliminan la ambigüedad que hace tan fácil engañarse con los backtests de criptomonedas. No hay una tasa de financiación que despachar con vaguedades ni una convención de precio de referencia por discutir. Solo una pregunta, una fecha límite y una respuesta. Cuando el backtest se equivoca aquí, puedes señalar exactamente cómo.
← Todos los artículos


