Bot de trading automático para mercados de predicción BTC en Polymarket
Maker @ 45¢ · Kelly + Monte Carlo · Bail-out · Redeem gasless · 15m & 5m
Bot 5m (place_45_5m) + Telegram — setup estable y recomendado. Kelly y bail calibrados con backtest Monte Carlo (fill 70%, P95 DD < 20%).
No es un sistema perfecto: para funcionar al 100% sería necesario implementar un bot de OpenClawBot que mejore la toma de decisiones y la adaptación a escenarios no previstos.
jparedesDS — GitHub. Si compartes o adaptas el proyecto, agradecemos crédito al autor.
Bot que opera en mercados UP/DOWN de 15 y 5 minutos en Polymarket: órdenes limit BUY a 0.45 (maker), Kelly para el tamaño de posición, bail-out cuando solo una pata llena y el otro lado gana, y auto-redeem gasless (relayer) con fallback on-chain.
Recomendado: un solo bot 5m (place_45_5m.py) con el bot Telegram para dashboard, alertas y controles. El bot 15m y copy_trader están en el código pero no son la configuración principal.
- Instala MetaMask en el navegador.
- Crea o importa una wallet. Guarda la frase de recuperación en un lugar seguro.
- Añade la red Polygon: Configuración de redes Polygon.
- Necesitarás POL (para gas en Polygon) y USDC.e (no USDC nativo). Puedes comprar/transferir USDC.e en Polygon desde un exchange o bridge.
- Entra en polymarket.com y conecta tu MetaMask.
- Depositar: en Polymarket, ve a Balance → Deposit y deposita USDC.e desde MetaMask. El bot opera con ese saldo en el CLOB de Polymarket.
- Aprobar (allowance): para que el bot pueda vender/bail-out y redimir, hay que aprobar el contrato CTF y USDC. La primera vez:
- En Polymarket: Settings → Approve (o ejecuta
python scripts/tools/approve_allowance.pycon un poco de POL en la wallet).
- En Polymarket: Settings → Approve (o ejecuta
- Mínimos recomendados: ver docs/MINIMUM_REQUIREMENTS.md. Para 5m con Kelly 11% y 4 mercados, un bankroll de ~$50–100 en CLOB es un punto de partida razonable.
Para que el bot reclame automáticamente las posiciones ganadoras sin pagar gas:
- En Polymarket, con tu wallet conectada: https://polymarket.com/settings?tab=builder
- En Builder API Keys → Create New.
- Polymarket muestra una sola vez tres valores: API Key, Secret, Passphrase. Cópialos y guárdalos; si cierras sin guardar, no podrás ver Secret/Passphrase y tendrás que crear otra clave.
- Esos tres valores van en el
.env(ver más abajo).
Sin Builder API el bot sigue funcionando, pero tendrás que reclamar (redeem) a mano en Polymarket o con los scripts de redeem.
Más detalle: docs/checklists/COMO_OBTENER_CREDENCIALES.md.
- Python 3.10+
- Cuenta Polymarket (MetaMask) con USDC.e depositado y allowances aprobados
cd poly-autobetting
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txtDeberías ver (venv) al inicio de la línea. En Linux/macOS:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtSi python no se reconoce: instala Python desde python.org y en el instalador marca "Add python.exe to PATH". Luego cierra y abre de nuevo la terminal. Ver docs/checklists/INSTALAR_PYTHON.md.
- Copia el ejemplo y edita con tus datos:
copy .env.example .env- Variables obligatorias:
| Variable | Descripción |
|---|---|
POLYMARKET_PRIVATE_KEY |
Clave privada de la wallet que opera (la que tiene USDC.e en Polymarket). En MetaMask: Cuenta → Detalles → Exportar clave privada. Nunca compartas esta clave. |
POLYMARKET_BUILDER_API_KEY |
Builder API Key (redeem gasless). Ver Crear cuentas. |
POLYMARKET_BUILDER_SECRET |
Builder Secret. |
POLYMARKET_BUILDER_PASSPHRASE |
Builder Passphrase. |
-
Opcional pero recomendado:
TELEGRAM_BOT_TOKENyTELEGRAM_ALLOWED_CHAT_IDSpara alertas y controles desde Telegram (ver docs/TELEGRAM_BOT.md). -
Bot 5m — Kelly y bail (ya calibrados en .env.example):
PLACE_45_5M_KELLY_FRACTION=0.11— 11% del bankroll por mercado (backtest: P95 DD < 20%).PLACE_45_5M_BAIL_PRICE=0.68— vender la pata perdedora cuando el ganador supera 0.68.PLACE_45_5M_MAX_BUDGET_PER_MARKET=0— 0 = tamaño por Kelly; si pones 12 = apuesta fija 6+6 USD por mercado.PLACE_45_5M_P_BOTH_FILL_MODEL=0.70— fill rate modelo (alineado con backtest).
Las credenciales CLOB (POLYMARKET_API_KEY, etc.) no son obligatorias: el bot puede derivarlas desde la clave privada. Ver docs/checklists/COMO_OBTENER_CREDENCIALES.md.
- Allowances (solo la primera vez o si están en 0):
python scripts/tools/approve_allowance.pyNecesitas un poco de POL en la wallet para pagar el gas. Si el bot arranca y avisa de allowance insuficiente, ejecuta este script.
- Comprobar conexión y balance:
python scripts/tools/verify_polymarket.py- Arrancar el bot 5m:
python scripts/bots/place_45_5m.pyEn el log verás balance CLOB, Kelly (budget por mercado, shares UP/DN), y si hay mercados próximos. Para parar: Ctrl+C.
Terminal 1 — Bot 5m (con auto-reinicio opcional):
.\venv\Scripts\Activate.ps1
python scripts/run/run_bot_loop.py place_45_5mO sin loop (un solo proceso):
python scripts/bots/place_45_5m.pyTerminal 2 — Telegram (dashboard, alertas, Bots, Redeem, Calibration):
.\venv\Scripts\Activate.ps1
python scripts/bots/telegram_bot.pyConfigura TELEGRAM_BOT_TOKEN y TELEGRAM_ALLOWED_CHAT_IDS en .env. Ver docs/TELEGRAM_BOT.md y docs/checklists/TELEGRAM_CHECKLIST.md.
| Comando | Uso |
|---|---|
python scripts/bots/place_45.py |
Bot BTC 15 min |
python scripts/bots/copy_trader.py |
Copy-trading + redeem |
python scripts/redeem/redeem_manual.py |
Redeem gasless manual |
python scripts/redeem/redeem_manual_onchain.py --all |
Redeem on-chain (fallback) |
python scripts/tools/verify_polymarket.py |
Verificar API y balance |
python scripts/tools/report_ganancias.py |
Reporte de ganancias |
El tamaño de apuesta por mercado se calcula con Kelly usando el balance actual: budget = balance × PLACE_45_5M_KELLY_FRACTION. Los valores por defecto (0.11 y bail 0.68) están calibrados con el backtest Monte Carlo para un fill rate del 70% y P95 drawdown < 20%.
Recalibrar (recomendado de vez en cuando):
python scripts/tools/backtest_kelly.py --interval 5m --days 30 --sims 5000 --kelly 0.11 --bail-price 0.68 --fill-both 0.70 --dd-limit 20El script descarga mercados 5m resueltos, simula miles de caminos y sugiere un Kelly “max-safe” (P95 DD bajo el límite). Luego puedes ajustar en .env:
PLACE_45_5M_KELLY_FRACTION— ej. 0.11 (o el que indique el backtest).PLACE_45_5M_BAIL_PRICE— ej. 0.68.PLACE_45_5M_P_BOTH_FILL_MODEL— alinear con el fill real que veas en el bot o en el dataset.
Más: docs/KELLY_MONTECARLO_Y_REGLA_GANANCIAS.md, docs/BACKTEST_5M.md, docs/RECALIBRAR_FILL_5M.md.
poly-autobetting/
├── .env # Credenciales (no versionado; copiar desde .env.example)
├── .env.example # Plantilla con Kelly 5m, bail, fill, etc.
├── data/ # Estado (session_5m.json, PIDs, pause, graceful_stop)
├── logs/ # Logs por script (bot_5m_YYYYMMDD.log, etc.)
├── src/
│ ├── config.py # Carga .env y constantes (Kelly, bail, intervalos)
│ ├── polygon_rpc.py # Balance USDC.e, gas
│ └── bot/ # fee_rate, ws_book_feed, ws_btc_price_feed, etc.
├── scripts/
│ ├── bots/ # place_45_5m, place_45, copy_trader, telegram_bot
│ ├── redeem/ # redeem_manual, redeem_manual_onchain
│ ├── tools/ # backtest_kelly, approve_allowance, verify_polymarket, etc.
│ └── run/ # run_bot_loop, run_place_45_5m_loop
├── docs/ # Guías, checklists, Kelly, 429, Telegram, etc.
└── requirements.txt
Detalle: docs/STRUCTURE.md.
| Tema | Documento |
|---|---|
| Credenciales | docs/checklists/COMO_OBTENER_CREDENCIALES.md |
| Python / instalación | docs/checklists/INSTALAR_PYTHON.md |
| Mínimos wallet | docs/MINIMUM_REQUIREMENTS.md |
| Config / Fill / presets | docs/CONFIG_CHECKLIST.md |
| Telegram | docs/TELEGRAM_BOT.md, docs/checklists/TELEGRAM_CHECKLIST.md |
| Redeem / relayer / 429 | docs/EVITAR_429_RELAYER.md, docs/REDEEM_RELAYER.md |
| Kelly / Monte Carlo | docs/KELLY_MONTECARLO_Y_REGLA_GANANCIAS.md, docs/BACKTEST_5M.md |
| APIs / velocidad / one-leg | docs/VELOCIDAD_APIS_Y_CONFIG.md |
| Recovery | docs/checklists/CHECKLIST_RECOVERY.md |
Este software es con fines educativos. Operar en mercados de predicción implica riesgo de pérdida total del capital. Úsalo bajo tu responsabilidad. El autor no se hace responsable de pérdidas financieras derivadas del uso del bot.
Creado por jparedesDS · GitHub
If any of my repositories have been useful to you, saved you time, or inspired you in any way, you can support my work by buying me a coffee ☕ Your support helps me to:
Keep projects maintained and improved
Create new open source repositories
Spend more time documenting and explaining the code
👉 Buy me a coffee here: