Skip to content

jparedesDS/polymarket-autobetting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎯 Poly-Autobetting

Bot de trading automático para mercados de predicción BTC en Polymarket

Maker @ 45¢ · Kelly + Monte Carlo · Bail-out · Redeem gasless · 15m & 5m

Python 3.10+ Polymarket License


✅ Configuración recomendada

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.


👤 Autor

jparedesDSGitHub. Si compartes o adaptas el proyecto, agradecemos crédito al autor.


Índice

# Sección
1 Resumen
2 Crear cuentas y preparar la wallet
3 Requisitos e instalación
4 Configuración (.env)
5 Primera puesta en marcha
6 Ejecución (bot 5m y Telegram)
7 Kelly y backtest
8 Estructura del proyecto
9 Documentación
10 Aviso legal

📌 Resumen

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.


👛 Crear cuentas y preparar la wallet

1. MetaMask (wallet EOA)

  • 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.

2. Polymarket

  • 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.py con un poco de POL en la wallet).
  • 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.

3. Builder API (redeem gasless)

Para que el bot reclame automáticamente las posiciones ganadoras sin pagar gas:

  1. En Polymarket, con tu wallet conectada: https://polymarket.com/settings?tab=builder
  2. En Builder API KeysCreate New.
  3. 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.
  4. 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.


⚙️ Requisitos e instalación

Requisitos

  • Python 3.10+
  • Cuenta Polymarket (MetaMask) con USDC.e depositado y allowances aprobados

Instalación (Windows PowerShell)

cd poly-autobetting
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt

Deberías ver (venv) al inicio de la línea. En Linux/macOS:

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Si 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.


🔧 Configuración (.env)

  1. Copia el ejemplo y edita con tus datos:
copy .env.example .env
  1. 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.
  1. Opcional pero recomendado: TELEGRAM_BOT_TOKEN y TELEGRAM_ALLOWED_CHAT_IDS para alertas y controles desde Telegram (ver docs/TELEGRAM_BOT.md).

  2. 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.


🚦 Primera puesta en marcha

  1. Allowances (solo la primera vez o si están en 0):
python scripts/tools/approve_allowance.py

Necesitas un poco de POL en la wallet para pagar el gas. Si el bot arranca y avisa de allowance insuficiente, ejecuta este script.

  1. Comprobar conexión y balance:
python scripts/tools/verify_polymarket.py
  1. Arrancar el bot 5m:
python scripts/bots/place_45_5m.py

En el log verás balance CLOB, Kelly (budget por mercado, shares UP/DN), y si hay mercados próximos. Para parar: Ctrl+C.


🚀 Ejecución (bot 5m y Telegram)

Recomendado: Bot 5m + Telegram

Terminal 1 — Bot 5m (con auto-reinicio opcional):

.\venv\Scripts\Activate.ps1
python scripts/run/run_bot_loop.py place_45_5m

O sin loop (un solo proceso):

python scripts/bots/place_45_5m.py

Terminal 2 — Telegram (dashboard, alertas, Bots, Redeem, Calibration):

.\venv\Scripts\Activate.ps1
python scripts/bots/telegram_bot.py

Configura TELEGRAM_BOT_TOKEN y TELEGRAM_ALLOWED_CHAT_IDS en .env. Ver docs/TELEGRAM_BOT.md y docs/checklists/TELEGRAM_CHECKLIST.md.

Otros comandos

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

📊 Kelly y backtest

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 20

El 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.


📁 Estructura del proyecto

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.


📄 Documentación

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

⚠️ Aviso legal

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

❤️ Why buy me a coffee?

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:

About

🎯 Automated trading bot for BTC prediction markets on Polymarket — Kelly Criterion, Monte Carlo backtesting, bail-out logic & Telegram dashboard.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages