Bot de trading algorítmico que explota el delay de latencia entre Coinbase WebSocket (precio real de BTC) y los mercados de Polymarket "Bitcoin Up or Down" de 5 minutos.
- Win Rate: 63.9% (39W / 22L)
- Total P&L: +$91.45 USD
- Trades ejecutados: 61
- Señales procesadas: 13,850+
Problema anterior: Edges de 100-135% (físicamente imposibles)
Causa: Calculaba edge contra precio base 0.50 en lugar del precio actual de Polymarket
Solución: Ajuste incremental desde el precio actual
// ANTES: fairYes = 0.50 + adjustment → Edge vs 0.50
// AHORA: fairYes = polyYesPrice + adjustment → Edge vs precio actualResultado: Edges realistas de 2-10%
Problema anterior: Intentaba operar con solo 60s antes del cierre del mercado
Causa: Delay entre detección de señal y ejecución
Solución: Buffer aumentado a 120 segundos
Resultado: Menos trades rechazados por "mercado ya cerrado"
ZSCORE_THRESHOLD: 1.2 → 1.5 (menos señales débiles)
MOVE_PCT_THRESHOLD: 0.03% → 0.04% (filtrado más estricto)
POLY_SENSITIVITY: 2.5 → 5.0 (mejor captura de movimientos)
MIN_EDGE_PCT: 3% → 2.5% (mayor conversión)
MAX_PRICE_AGE_MS: 3000ms → 5000ms (menos rechazos por staleness)
Modo de operación:
DRY_RUN=true # Paper trading (default)
DRY_RUN=false # Live trading con fondos realesCredenciales Polymarket (solo para live):
POLY_PRIVATE_KEY=0x...
POLY_API_KEY=...
POLY_API_SECRET=...
POLY_PASSPHRASE=...Parámetros de señal (opcional, usa defaults optimizados):
ZSCORE_THRESHOLD=1.5
MOVE_PCT_THRESHOLD=0.04
POLY_SENSITIVITY=5.0
MIN_EDGE_PCT=2.5
MAX_PRICE_AGE_MS=5000-
Conectar repo:
railway link
-
Configurar variables en Railway Dashboard → Settings → Variables
-
Deploy:
git push
-
Monitorear logs:
railway logs
src/
├── index-final.js # Main entry point
├── signal.js # Motor de señales (Z-score + edge calculation)
├── polymarket.js # Cliente CLOB API v2
├── binance.js # Coinbase WebSocket (precio BTC)
├── tracker.js # P&L tracking
├── logger.js # Logging
└── config.js # Configuración centralizada
- WebSocket Coinbase: Recibe ticks de BTC/USD en tiempo real
- Signal Engine: Calcula Z-score y momentum sobre ventana de 300 ticks
- Edge Detection: Compara precio "justo" vs precio actual de Polymarket
- Risk Management: Cooldown 3min, max 10 posiciones, exposure limits
- Execution: Limit orders en Polymarket CLOB
- P&L Tracking: Monitorea resolución de mercados cada 60s
- ✅ Monitorear 24-48h en paper mode con nuevos parámetros
- ✅ Verificar que edges sean realistas (2-10%)
- ✅ Confirmar win rate >60%
- 🎯 Si resultados son consistentes → ir a live con $25-50 inicial
- 🎯 Escalar gradualmente según compounding
- Railway bloquea
polymarket.com→ usa Gamma API para precios - Mercados de 5min son volátiles → buffer de 120s es crítico
- Edge >15% indica precio stale → rechazar
- Cooldown de 3min evita overtrading
- Buffer deslizante de 300 ticks (~10-30 segundos)
- Z-Score: detecta cuando el precio se aleja N desviaciones estándar de la media
- Momentum: calcula movimiento % en ventana corta
- Presión de compra: ratio de buy vs sell en últimos 50 ticks
- Velocidad: valida que el movimiento sea rápido (no gradual)
- Edge calculation: ajusta precio "justo" INCREMENTALMENTE desde precio actual de Polymarket
- Si todos los filtros pasan → señal UP o DOWN → limit order en Polymarket
Issues en GitHub o contacto directo.