Ya operás los mercados de 5 minutos. No podés estar despierto para todos.
Cada cinco minutos se abre una ventana nueva, toda la noche — 288 entre una medianoche y la siguiente. Vos agarrás las que llegás a ver. Este es un bot en Python que se queda con el resto, en tu máquina, y arranca en simulación: sin billetera, sin fondos, sin cuenta. Miralo operar mercados reales una semana antes de que toque un peso.
Lo corrimos con dinero real, perdimos $270 averiguando qué estaba mal, y publicamos cada orden — incluidas las que perdieron. Lo que sobrevivió es la configuración que viene puesta; cerró en vivo con +7,3% de ROI. Tuyo por US$99, una sola vez — sin suscripción, sin servidor de licencias, sin telemetría, sin nada que nadie pueda apagarte.
- Arranca en dry-run
- Apuesta de $2 por defecto
- Circuit breakers activados
- Corre en tu máquina
Listado en POLBOTS.COM · Datos abiertos en GitHub · Historial calculado desde el propio log de fills del bot, publicado orden por orden
¿Cuánto puede perder antes de que algo lo frene?
1. No arranca con tu plata
- Viene con
DRY_RUN=true. Recién sacado de la caja encuentra mercados reales de 5 minutos y los opera en simulación. No necesitás billetera, ni fondos, ni cuenta para evaluarlo. - La simulación no te miente. Los fills salen de slippage medido sobre trades reales — −1,2¢ de entrada, −1,3¢ en el stop-loss, −8,8¢ en el take-profit en promedio — no de fills sin fricción.
- Pasar a real exige dos flags separados.
DRY_RUN=falseyLIVE_CONFIRM=YES. Se niega a arrancar en vivo sin los dos. - Y un ensayo antes.
check_wallet.pyverifica tu autenticación y tus saldos sin mandar una orden que pueda llenar.
2. El techo lo ponés vos, y por defecto es chico
BET_USD=2yMAX_OPEN_POSITIONS=2— unos $4 expuestos a la vez, tal como viene.- Un stop-loss en cada posición al precio de ejecución −10¢ (
SL_DELTA=0.10), no uno mental. - El límite honesto: el bot puede gastar todo lo que le pongas. Solo toca la billetera cuya clave está en tu
.env, así que usá una billetera de Polymarket dedicada y con poca plata. Ningún software te protege de una billetera sobrefinanciada.
3. Se frena solo
- Tres circuit breakers, activados por defecto: 10% de pérdida diaria, 7 pérdidas seguidas, u 80% de las últimas 20 órdenes sin llenar. Con que salte uno, pausa el trading.
- La pausa sobrevive a un reinicio. Se escribe en disco, así que reiniciar la máquina no despausa por accidente un bot que se frenó por algo.
- Se reanuda solo a los 30 minutos (
RISK_AUTO_RESUME_MINUTES=30). Poné0y la pausa queda hasta que la levantes a mano. - Un vol guard se queda afuera de los regímenes violentos, donde el slippage medido del stop-loss llegó a −24¢ en el peor decil en lugar de los −2¢ habituales.
4. Nunca toca nada que vos no le hayas dado
- No adopta una posición que no abrió él. Nunca. Es a propósito: en el bot anterior, la adopción automática terminó manejando las apuestas manuales del dueño hasta fundirlas — unos $591 en tres días.
- Los fills se verifican por delta de USDC, así que una orden que sí llenó no se descarta como fantasma ni queda corriendo sin stop-loss.
- El log de apuestas se escribe de forma atómica (archivo temporal + rename, y guarda un
.bak), así que un kill en medio de la escritura no te corrompe el historial. - Nada sale de tu máquina. Sin telemetría, sin servidor de licencias, sin cuenta. Tu clave privada se queda en tu
.env.
Nada de eso es una opción que tengas que ir a buscar. Así llega el archivo — y podés quedarte mirando cómo salta cada uno de esos límites en dry-run antes de poner un solo peso.
Tres comandos y ya está operando. Todavía no arriesgaste nada.
Sin billetera. Sin fondos. Sin cuenta. Sin API key. En menos de un cuarto de hora está mirando cómo se abren y se cierran ventanas reales de 5 minutos, tomando las operaciones que hubiera tomado, y anotando qué pasó con cada una — el estado de las señales, 11 features del mercado, el fill simulado. El panel de monitoreo le va poniendo nota en vivo mientras te hacés un café.
pip install -r requirements.txt
cp .env.example .env
python uruguabot.py # arranca en dry-run, sin dinero real
El .env.example que viene no es una plantilla en blanco esperando que adivines. Es la configuración exacta que salió de la prueba en vivo: solo BTC, stop-loss diez centavos por debajo de tu fill, guards activados. Podés cambiarle cada línea. No tenés que cambiarle ninguna para arrancar.
Lo que hace mientras no lo estás mirando
Adentro de esa ventana de terminal corren cinco cosas. Dos existen solamente porque antes nos costaron plata.
Motor de trading
Descubrimiento de mercados, señales multi-timeframe (30s/1m/5m), filtros de entrada, salidas asimétricas.
Ejecución (CLOB V2)
Órdenes FOK con detección de ghost fills por delta de USDC, manejo de lecturas stale, balance on-chain de respaldo.
Simulador honesto
El dry-run usa slippage medido de trades reales (entrada −1,2¢, SL −1,3¢, TP −8,8¢ promedio) — no fills de fantasía.
Monitor de señales
Panel web local que congela predicciones antes de cada ventana y mide la accuracy real de cada señal — incluidos tus picks manuales — sin gastar un dólar.
Herramientas
Verificador de wallet, reportes de estado, medición de drift dry-vs-live, detector de shares huérfanas. ~15 archivos Python legibles, docs bilingües.
El mejor predictor que medimos fue un humano
Nos pasamos una semana zanjando una discusión. Cada señal que el bot puede calcular — momentum, reversión a la media, desbalance del orderbook, el modelo de machine learning — quedó con su predicción congelada antes de que se abriera cada ventana, y después puntuada contra lo que pasó de verdad. 1.934 ventanas resueltas. Sobre las mismas ventanas y con la misma regla, también puntuamos los picks manuales del que lo programó.
Cuatro de los cinco predictores volvieron indistinguibles de una moneda.
| Predictor | Ventanas | Aciertos |
|---|---|---|
| Modelo ML (el «brain») | 308 | 48,1% |
| Momentum | 1.834 | 48,8% |
| Reversión a la media | 1.500 | 49,6% |
| Desbalance del orderbook | 1.069 | 51,3% |
| Los picks manuales de un humano | 83 | 59,0% |
El que no, fue el humano. 83 picks con 59% dan p ≈ 0,05 contra la moneda al aire — sugerente, no concluyente, una sola persona, una sola semana, y no lo vamos a inflar más que eso. Pero es la única lectura direccional por encima del azar en todo el proyecto, y no salió de la automatización.
Eso te dice exactamente para qué sirve esto. No se vende diciendo que predice mejor que vos. Se vende por la parte que a mano no podés hacer a las 4 de la mañana: quedarte sentado en todas las ventanas que califican sin aburrirte, y cortar una perdedora en −10¢ apenas toca, sin negociar con vos mismo como esa noche que la aguantaste porque sentías que ya tenía que dar vuelta. Esa disciplina es la que hizo rentable a la configuración por defecto con 40% de aciertos. La lectura que tengas sigue siendo tuya.
Por eso el panel de monitoreo puntúa tus llamadas al lado de las del bot, sobre mercados en vivo, sin billetera conectada y sin nada en juego. Capaz descubrís que tu lectura es la mejor señal de la mesa. Capaz descubrís que no. Cualquiera de las dos respuestas sale más barata acá que con plata puesta. Metodología y datos completos (en inglés).
La configuración que ganó plata acertó menos que la que la perdió
No es un error de tipeo: ahí está todo el mecanismo. En mayo de 2026 Uruguabot operó dinero real en Polymarket — no un backtest — con dos configuraciones de salida, una tras otra. La primera acertó más veces y terminó abajo. La segunda acertó menos y terminó arriba. Calculado desde el propio log de fills del bot, con cada orden publicada fila por fila en el repositorio de la auditoría:
| Fase | Configuración | Aciertos | ROI |
|---|---|---|---|
| Hipótesis ATP/SL simétricos | TP/SL simétricos | 49% | −10,0% |
| Hipótesis B (hoy el default)SL apretado, winners a resolución | SL apretado, winners a resolución | 40% | +7,3% |
compute_summary.py reconstruye cada número de esa tabla desde los fills crudos, así nos verificás en lugar de creernos. La documentación que viene adentro del producto lo llama un mecanismo validado, no un ROI probado. Nosotros también. Comprás infraestructura y una regla de salida testeada, no una promesa.
- Errar más seguido es lo que lo hizo funcionar. La configuración rentable acertó el 40% de sus trades. Sus perdedoras se cortaron en −$1,09 promedio; sus ganadoras se sostuvieron hasta la resolución en $1,00 y cerraron en +$2,31. Dos a uno, más o menos. Con 40% de aciertos esa cuenta cierra; con 49% y salidas simétricas no cerraba. La asimetría es el producto.
- Lo más caro que nos pasó no fue el mercado. La API de posiciones de Polymarket llega tarde en las ventanas de 5 minutos. Órdenes que habían llenado de verdad volvían marcando cero shares, así que el bot las daba por fantasmas y se iba — dejando posiciones reales abiertas, sin manejar y sin stop-loss encima. Una y otra vez. −$88, en silencio, más de lo que ganó la estrategia. El fix — verificar el fill contra el USDC que salió de la billetera, y caer al balance on-chain si hace falta — viene activado.
- El modelo de machine learning nunca le ganó a una moneda. 57% en entrenamiento, 48–50% una vez en vivo. Así que se entrega sin entrenar y apagado, y lo podés dejar así para siempre. No te vamos a cobrar por un número que no pudimos reproducir.
La historia entera, cada orden, cada bug, en el orden en que los fuimos comiendo: la auditoría completa (en inglés). Y si preferís leer la cosa en vez de leer sobre la cosa — 6.735 líneas de Python, nada compilado, nada ofuscado — el listado de archivos y una función real de la capa de ejecución están en la documentación, antes de que pagues.
Antes de decidir
¿Qué es lo peor que puede hacer mientras duermo?
Con la configuración que viene: abrir como mucho dos posiciones de $2 cada una, cada una con stop-loss al precio de ejecución −10¢. Si las pérdidas del día llegan al 10%, o pierde siete operaciones seguidas, o el 80% de las últimas 20 órdenes no llena, se pausa solo — y esa pausa se escribe en disco, así que reiniciar la máquina no la borra. El techo real, dicho de frente: puede gastar lo que haya en la billetera cuya clave pusiste en el .env. Usá una billetera dedicada y con poca plata.
¿Puedo probarlo sin plata?
Sí — el modo por defecto es dry-run, con fills simulados usando slippage medido empíricamente. El monitor además mide la accuracy de las señales en tiempo real sin operar.
¿Es rentable?
Tomado en conjunto, no: nuestra prueba en vivo 100% automática fue pérdida neta en total. Una configuración — la que viene por defecto — sí fue rentable, con +7,3% de ROI y 40% de aciertos. La documentación que viene adentro del producto lo llama un mecanismo validado, no un ROI probado, y no lo vamos a describir mejor de lo que se describe a sí mismo. No se promete rendimiento futuro. Comprás infraestructura y las lecciones que salieron caras, no ganancias garantizadas.
¿Necesito saber programar?
Tenés que manejarte con una terminal y editar un archivo de configuración. La instalación son tres comandos. Modificar la estrategia requiere Python.
¿Funciona en Estados Unidos?
Polymarket restringe el trading desde varias jurisdicciones, incluido EE.UU. Verificá las restricciones vigentes de Polymarket y las leyes de tu país antes de comprar. El bot no incluye ningún mecanismo para evadir restricciones geográficas.
¿Hay suscripción, servidor de licencias o telemetría?
No, no y no. Compra única, código completo, corre entero en tu máquina. Se vende como está, sin obligación de soporte — el código es chico a propósito para que lo puedas mantener vos.
¿Por qué lo vendés si funciona?
Porque la respuesta honesta a «¿funciona?» es «el mecanismo está validado, pero el edge es finito» — y con esa frase no levantás un fondo. Vendés herramientas. Un edge finito sobre apuestas de $2 es un hobby; el mismo código vendido una vez a gente que no quiere seguir perdiéndose las ventanas de las 4 de la mañana es un producto. Preferimos decirlo en voz alta antes que armar un Discord y postear capturas en verde. El razonamiento completo está en el artículo de la auditoría (en inglés).
Qué te da US$99
Un bot que es tuyo, no una suscripción que alquilás
US$99 una vez. Un bot que alquilás a US$99 por mes te sale US$1.188 el primer año, y deja de andar el mes que dejás de pagar. Este sigue andando exista yo o no.
Sin servidor de licencias, sin telemetría, sin ninguna cuenta que mantener viva. Nadie te puede subir el precio, discontinuar el plan en el que estás, ni apagarte tu copia — si el año que viene este sitio ya no existe, a los archivos de tu disco no les importa. Eso es posible porque acá no hay una empresa que alimentar: un solo desarrollador en Argentina, trabajando solo, que escribió el bot, le pasó dinero real por adentro y escribió esta página. Un proyecto de una sola persona no puede prometer honestamente un SLA de soporte, así que no lo promete. Se vende como está, chico a propósito y muy comentado, para que mantenerlo nunca dependa de que yo conteste.
Qué te llega cuando pagás
Comprás en Whop y la descarga se habilita al instante — no es una lista de espera, ni una invitación a un Discord, ni una clave que haya que activar. Un zip, Uruguabot-1.0.zip: 33 archivos, unos 110 KB.
- 21 módulos de Python — todo el núcleo de trading más los scripts de operación, código fuente completo, nada compilado.
.env.example, ya cargado con la configuración que fue rentable en la prueba en vivo (solo BTC, stop asimétrico apretado, guards activados), ydata/empirical_slippage.json, las distribuciones medidas de las que el simulador saca sus fills.monitor.html+monitor_server.py(el panel de accuracy, de solo lectura) ySTART_DRYRUN.bat+start_dryrun.shpara arrancar con un comando en Windows o en Linux/macOS.README.md+README_ES.md(documentación completa, en inglés y español),STRATEGY_AND_RESULTS.mdcon los números reales de la corrida en vivo, fase perdedora incluida, másCHANGELOG.mdyrequirements.txt(cinco paquetes públicos).legal/EULA.txt+legal/RISK_DISCLOSURE.md— términos de licencia y declaración de riesgos, adentro del paquete, para leer antes de correr nada.
Quién no debería comprarlo
Son tres. Si alguna es un no, cerrá la pestaña — preferimos perder la venta antes que cobrarte US$99 por algo que no va a correr en tu máquina o en tu país.
- Python 3.11+, en Windows, Linux o macOS. Sin Docker, sin paso de build, sin compilador.
- Polymarket tiene que ser accesible desde tu jurisdicción. Restringe el trading desde varias, incluido Estados Unidos — verificá las restricciones vigentes y las leyes de tu país antes de pagar. Acá no hay ningún mecanismo para evadirlas y no te vamos a ayudar a construir uno. Si Polymarket no opera donde estás, el dry-run solo no vale US$99.
- Te manejás con una terminal y sabés editar un archivo de configuración. No necesitás escribir Python para correrlo; sí para cambiar la estrategia. No hay instalador gráfico ni a quién llamar.
Reembolsos
No hay reembolsos una vez descargado el código. Es código fuente entregado: una vez que tenés los archivos, los tenés, y no hay buena voluntad que los devuelva a la caja. Lo estás leyendo acá, tres pantallas antes del checkout, en vez de encontrarlo en la letra chica después de pagar.
Justamente por eso existe el modo dry-run y por eso viene activado por defecto: podés correr el bot de verdad, sobre mercados reales en vivo, sin billetera y sin plata, todo el tiempo que quieras antes de decidir. Primero lo evaluás, después lo comprás.
Llevate el bot
El motor de trading, la capa de ejecución con el fix de ghost fills adentro, el simulador calibrado con slippage real, los circuit breakers, el panel de monitoreo. Todo lo que nos compraron esos $270. US$99, pago único.
Nuestro propio experimento en vivo perdió plata en total, y acá no hay ningún pronóstico ni historial de rendimiento. Arrancá en simulación. Dimensioná tu primera semana en vivo como si fuera a ser la perdedora, porque puede serlo. Cada número de esta página está calculado a partir de datos que te podés bajar y recalcular vos mismo.