No pasa absolutamente nada: un bot que siempre compra ‘No’ en mercados no deportivos de Polymarket
(github.com/sterlingcrispin)- Un bot asíncrono en Python que solo compra posiciones ‘No’ en los mercados de sí/no no deportivos de Polymarket, ofrecido con fines de entretenimiento
- Distingue entre modo de simulación y modo de trading real; para operar en real es indispensable configurar varias variables de entorno y claves privadas
- Mediante una interfaz de panel, permite monitorear el estado y, cuando el envío de órdenes está habilitado, guarda el estado de recuperación en tiempo real
- Incluye scripts de despliegue para Heroku que automatizan la verificación del estado de la app, la consulta de logs, el cambio a trading real y la finalización de procesos
- Incluye pruebas y herramientas de gestión de datos, por lo que puede ejecutarse y validarse de forma segura tanto en entornos locales como en la nube
Resumen general
- Nothing Ever Happens es un bot asíncrono basado en Python que siempre compra la posición ‘No’ en los mercados de sí/no no deportivos de la plataforma Polymarket
- Se ofrece con fines de entretenimiento y se ejecuta sin garantía ni responsabilidad, bajo el riesgo del usuario
- El repositorio está compuesto por los directorios
bot/,scripts/ytests/, que contienen respectivamente la lógica de trading, scripts operativos y código de pruebas
Estructura de ejecución
- En tiempo de ejecución, escanea mercados independientes y rastrea posiciones buscando opciones ‘No’ cuyo precio esté por debajo del límite máximo configurado
- Muestra el estado mediante el panel y, si el envío de órdenes está habilitado, guarda el estado de recuperación en tiempo real
- El módulo de ejecución es
nothing_happensy, en modo inactivo, usa PaperExchangeClient
Modelo de seguridad
- Para enviar órdenes reales, deben estar configuradas las tres variables de entorno siguientes
BOT_MODE=liveLIVE_TRADING_ENABLED=trueDRY_RUN=false
- Si falta cualquiera de estas condiciones, cambia al modo de simulación
- En modo de trading real, también se requieren las siguientes variables de entorno
PRIVATE_KEYFUNDER_ADDRESS(para tipos de firma 1 y 2)DATABASE_URLPOLYGON_RPC_URL(para aprobación de wallet proxy y redención)
Instalación y configuración
- La instalación se realiza con
pip install -r requirements.txty luego se copia el archivo de configuración de ejemplo para usarlo como configuración local config.jsoncontiene configuración de ejecución no secreta, y.envincluye claves secretas y banderas de ejecución- La configuración de ejecución se encuentra bajo
strategies.nothing_happens, y se puede indicar otro archivo de configuración con la variable de entornoCONFIG_PATH
Ejecución local
- En local, puede ejecutarse con el comando
python -m bot.main - El panel se vincula a la variable de entorno
$PORToDASHBOARD_PORT
Flujo de despliegue en Heroku
- En el entorno de Heroku, se usa
HEROKU_APP_NAMEo se pasa un argumento explícito con el nombre de la app - Scripts incluidos:
alive.sh: verifica el estado de la applogs.sh: consulta los logslive_enabled.sh/live_disabled.sh: cambian el modo de trading realkill.sh: finaliza el proceso
- El procedimiento de despliegue habitual es el siguiente
- Configurar variables de entorno (
BOT_MODE,DRY_RUN,LIVE_TRADING_ENABLED,PRIVATE_KEY,FUNDER_ADDRESS,POLYGON_RPC_URL,DATABASE_URL) git push heroku <branch>:mainheroku ps:scale web=1 worker=0
- Configurar variables de entorno (
- El proceso
workerestá diseñado para fallar rápidamente si se ejecuta por accidente
Pruebas
- Las pruebas usan
pytestpara validaciones unitarias y de regresión - Comando:
python -m pytest -q
Scripts incluidos
-
scripts/db_stats.py- Revisa la cantidad de tablas de la base de datos en tiempo real y la actividad reciente
-
scripts/export_db.py- Exporta tablas desde
DATABASE_URLo desde una app de Heroku
- Exporta tablas desde
-
scripts/wallet_history.py- Consulta posiciones, transacciones y saldo de la wallet configurada
-
scripts/parse_logs.py- Convierte logs JSON de Heroku a formato de terminal o HTML
Gestión del repositorio
- La configuración local, libros contables, datos exportados, reportes y artefactos de despliegue están excluidos de git por defecto
- El repositorio está organizado para separar claramente el entorno operativo del entorno local
1 comentarios
Comentarios en Hacker News
Al ver este tuit, queda claro que no promete ganancias ni reembolsos
Parece simplemente un proyecto hecho por diversión como código basado en memes
Más que una estafa, se siente como un experimento gracioso
Hay una estadística de que alrededor del 73% de Polymarket efectivamente termina en “No”
Si te interesa el análisis de datos, vale la pena revisar el dataset de Hugging Face
Por el sesgo de optimismo humano, el lado de “Yes” podría estar sobrevalorado, pero en Polymarket los traders ya están atentos, así que los precios se forman de manera realista
Si se pudiera apostar contra monedas que van cayendo, sería interesante, pero incluso esos mercados terminarían ajustándose eficientemente
Es interesante que este proyecto sea para mercados no deportivos
También se sabe que en las apuestas deportivas, la mayoría de las veces el lado “No” da mejor rentabilidad. “Yes” es más emocionante y por eso atrae a más gente
Al final, las apuestas aburridas podrían generar mejores rendimientos en el largo plazo
Parece posible que este tipo de insights de economía conductual acumulados en las apuestas deportivas también se apliquen a mercados no deportivos
Al final se genera un bucle de retroalimentación donde el precio vuelve a su sitio
Por eso, si encuentras una estrategia realmente rentable, lo más sensato es no publicarla como open source y correrla en silencio
La idea de “apostar siempre a No” es divertida, pero hace falta verificar cuánto dinero realmente genera
En el mundo real la liquidez es baja, y una sola pérdida puede borrar varias ganancias
Los mercados deportivos son más predecibles precisamente porque tienen un momento de cierre claro y gran volumen de transacciones
En lugar de ponerle No simplemente a todo, parece que se podría lograr una ganancia bastante estable apostando No en ítems relacionados justo cuando una noticia apenas empieza a salir
Yo lo veo como un arbitraje de imaginación humana
A la gente le gustan los escenarios llamativos, pero la realidad casi siempre es aburrida
Yo también gané dinero aprovechando ese patrón durante la crisis financiera y el COVID
Ahora me preocupa la burbuja de la IA, pero creo que más que un desplome será un enfriamiento gradual, así que he aumentado mi proporción en bonos y efectivo
Se argumenta que apostar a “No” es básicamente lo mismo que apostar “Yes” a todos los demás resultados
La documentación de Polymarket tiene operaciones relacionadas
Este tipo de estrategia es como recoger monedas frente a un tren
Repites pequeñas ganancias hasta que un evento de cola larga te hace perderlo todo de una vez
Hay un estudio relacionado: Prediction Market Microstructure
(Discusión anterior: enlace de HN)
Yo diría que el mercado ya terminó de incorporarlo en el precio
Ver este tuit relacionado
Enlace de referencia
Al final, con el tiempo la volatilidad realizada tiende a aparecer por debajo de la volatilidad implícita
Claro, cuando explota, también se puede perder mucho
Que simplemente salga “No” el 70% de las veces no significa que se gane dinero
Esto es mala matemática de manual. Es una estrategia tipo “recoger monedas frente a una apisonadora”
Aun así, estos mercados ineficientes suelen ser pequeños y raros, así que al final probablemente “sí recoges monedas, pero solo monedas”
Incluso siguiendo el criterio de Kelly, si apuestas al azar es muy probable que termines agotando el capital. Hace falta un análisis minucioso (DD) por mercado