engineering2026-07-212 min read

Sin ganancias en papel: por qué maté mi bot de Polymarket antes de perder un solo dólar

Hace unas semanas monté una arquitectura que me tenía bastante orgulloso: un bot de copy-trading para Polymarket corriendo en un VPS de Hetzner. Tenía de todo: 6 workers asíncronos en Python, Redis para colas de eventos, Postgres 16, dashboards en Tailwind con canvas y alertas automáticas por Telegram.

La premisa era simple: identificar las 50 mejores billeteras del leaderboard público y copiar automáticamente sus órdenes en milisegundos.

Había solo un detalle. Antes de meterle un solo dólar real, el sistema corría bajo un candado estricto: EXECUTION_MODE=paper.

Los números en papel no mienten

Dejé correr el bot con dinero ficticio durante 6 iteraciones del modelo (ajustando filtros de slippage, tiempo de expiración y métricas de convicción).

El resultado tras semanas de monitoreo: -$24.11 USD de PnL simulado sobre un NAV ficticio de $50,000 USD.

Cuando metí el dataset a la harness de optimización fuera de muestra (*out-of-sample*), el diagnóstico fue brutal: ningún perfil de parámetros logró vencer al benchmark pasivo de no hacer nada. Las billeteras del top 30 del leaderboard que parecían "genios" simplemente habían tenido ráfagas de suerte en eventos puntuales o hacían captura de spread imposible de replicar a latencia retail.

El sesgo del desarrollador

Como ingenieros, nos encanta enamorarnos de las herramientas. Es facilísimo decirnos a nosotros mismos: *"Falta tunear el lag del feed de metadatos"* o *"Si le agrego un modelo de clasificación por categoría va a funcionar"*.

La realidad es más fría: construir la infraestructura es la parte cómoda. Admitir que la hipótesis central falló requiere disciplina.

La regla de oro (ADR 0003)

En lugar de caer en el ciclo infinito de "solo una prueba más con dinero real a ver qué pasa", redacté un ADR en el repositorio y puse la regla en piedra: cancelar la promoción a live indefinidamente.

Para que este bot vuelva a tocar un solo centavo de capital real, tiene que cumplir tres condiciones irrenunciables: 1. Demostrar edge positivo en papel fuera de muestra durante 90 días continuos. 2. Mis productos SaaS principales (Sello y Chatea.la) deben estar generando revenue estable. 3. El dinero asignado a la billetera debe ser 100% prescindible.

Si en 90 días de pruebas pasivas el algoritmo no vence al baseline, el repositorio se archiva definitivamente.

Moraleja rápida

Si estás construyendo algo (un agente de IA, un bot financiero o un SaaS), la mejor métrica de madurez técnica no es cuántos contenedores pusiste a correr en Docker. Es qué tan rápido puedes desconfirmar una hipótesis en un entorno seguro antes de quemar capital o tiempo.

Saber cuándo presionar STOP te da el oxígeno necesario para enfocarte en lo que sí mueve la aguja.

OV

Obed Vargas

AI Strategy Lead & Solo Founder

More posts