Files
polymarket-bot/docs/informe-final.md
T
chemavx dc3b17e10c docs: captura de Grafana (90d) + nota sobre el panel Win Rate vacío
El panel Win Rate estuvo vacío los 81 días por diseño, no por bug: la API
emite win_rate: null hasta >=10 mercados resueltos (hubo 2) y Grafana no
renderiza null. Documentado en el informe final.
2026-07-06 11:45:16 +00:00

8.7 KiB
Raw Blame History

Informe final de paper trading — polymarket-bot

Snapshot: 2026-07-06 · Generado desde la base de datos de producción con el bot aún operativo, como parte de la Fase 1 del plan de decomisión (bloqueo ISP de Polymarket en España, mayo 2026).


⚠️ Advertencia de tamaño muestral (léase primero)

12 trades ejecutados, de los cuales solo 2 llegaron a resolución, no constituyen evidencia estadística de nada. Ni el P&L positivo demuestra que la estrategia funcione, ni su ausencia lo habría refutado. El propio bot lo sabía: sus criterios de promoción a dinero real exigían ≥10 mercados resueltos y ≥30 días de observación (promotion_ready: false, win rate y Sharpe deliberadamente reportados como n/a (insufficient_sample) en toda la instrumentación).

El valor demostrable de este proyecto no está en el P&L: está en la infraestructura de evaluación, el pipeline de datos y la disciplina de gates que impidió que el bot tradease sin ventaja medible. Este informe presenta el P&L como lo que es — una anécdota — y dedica el grueso al sistema.


1. Resultados de trading (anecdóticos)

Bankroll simulado: $10.000 (USDC virtual) · Capital desplegado: $2.447 · Periodo de actividad: 1422 de abril de 2026 (los 12 trades se abrieron en 9 días; después, el endurecimiento de los gates de edge y confianza dejó el bot en 0 trades — funcionando, evaluando ~1.350 ciclos/día, sin encontrar ventaja neta que superara sus propios umbrales).

P&L realizado: +$247,78 (2 mercados resueltos)

Mercado Dirección Entrada Resultado P&L neto
Will Ken Paxton win the 2026 Texas Republican Primary? BUY_YES 0,618 YES (2026-06-11) +$299,06
Will NVIDIA be the largest company in the world…? BUY_NO 0,156 YES (2026-06-30) $51,28

P&L neto de comisiones (2% simulado por lado). 1 acierto / 1 fallo: n=2.

P&L no realizado (mark-to-market): +$809,59 (5 posiciones abiertas)

Marcado a los precios reales de Polymarket (Gamma API) el 2026-07-06. Estas posiciones no están cerradas: el número de abajo cambiaría cada día que los mercados sigan moviéndose, y varios no resuelven hasta noviembre de 2026.

Mercado Dirección Entrada Precio actual (lado) Coste neto MTM P&L
Karen Bass gana la alcaldía de LA 2026 BUY_YES 0,268 0,595 $510,00 +$600,07
OpenAI IPO antes del 31-dic-2026 BUY_NO 0,618 0,785 $510,00 +$125,11
Demócratas ganan el Senado de Texas 2026 BUY_YES 0,418 0,435 $509,49 +$10,32
Demócratas ganan gobernación de Ohio 2026 BUY_NO 0,458 0,520 $407,74 +$46,12
Republicanos ganan gobernación de Nebraska 2026 BUY_NO 0,158 0,170 $510,00 +$27,97

Nota metodológica: el tracker interno reportaba unrealized_pnl_est = +$522,73, pero esa cifra es la expectativa del propio modelo a fecha de entrada (edge_net × coste), no un marcado a mercado. La tabla de arriba usa precios reales de mercado del día del snapshot, que es el criterio honesto. Ambas cifras coinciden en el signo; ninguna de las dos es un resultado realizado.

Los otros 5 cierres (sin P&L): la historia real de abril

De los 7 trades cerrados, solo 2 cerraron por resolución. Los otros 5 los cerró el propio bot al detectar defectos en su lógica — y son la parte más instructiva del histórico:

  • 3 por conflicto de familia: dos posiciones sobre mercados hermanos del mismo evento (p. ej. YES-demócratas y YES-republicanos en la misma gobernación) — el agrupador de familias los detectó y cerró el lado débil.
  • 2 por el bug de inversión de Manifold: la señal cruzada de Manifold se aplicaba invertida en mercados espejo. Detectado por instrumentación, las posiciones afectadas se cerraron y el matching se movió a modo observacional-only con auditoría completa (165.538 filas en manifold_match_audit).
  • 1 excluido de métricas (invalid_manifold_match_legacy, P&L $0,00).

Después de esa semana el bot no volvió a operar: los gates endurecidos (edge neto > mínimo por régimen, confianza ≥ 0,55, guardrail de noticias prior±0,25) filtraron el 100% de las ~223.000 evaluaciones posteriores. Un sistema de paper trading cuyo resultado principal es "no tradees sin ventaja" es un resultado, y está instrumentado hasta el último skip.


2. El sistema (el activo real)

Pipeline de señales

Métrica Valor (snapshot 2026-07-06)
Ciclos de evaluación archivados 5.356 (cadencia ~64 s)
Evaluaciones mercado-ciclo archivadas 222.738
Mercados distintos evaluados 87 (events 114,9k · politics 96,0k · crypto/finance 7,7k · tech 4,2k evaluaciones)
Archivo signals operativo desde 2026-07-02 (replay R0) — crece ~55k filas/día
Histórico de métricas diarias 81 días (2026-04-14 → 2026-07-06, metrics_daily)
Snapshots de contexto externo 5.356 (BTC, dominancia, Fear&Greed por ciclo)

Cada evaluación archiva el prior, la probabilidad estimada, el edge bruto/neto, la descomposición por feature (Fear&Greed, momentum, noticias, Manifold, dominancia BTC en log-odds), el gate que la bloqueó y el contexto de mercado — suficiente para reproducir la decisión completa offline.

Motor de replay (R0R2, julio 2026)

  • Inyección de reloj + replay determinista de ciclos archivados: 22.697/22.697 decisiones idénticas al reproducir el histórico.
  • Joiner diario de resoluciones (CronJob 00:30 UTC) contra la Gamma API: cobertura de outcomes 9/87 mercados al snapshot, creciendo sola.
  • Diseñado para calibrar sobre todas las evaluaciones (no solo trades), esquivando el problema del n=12.

Estrategia (congelada desde 2026-07-03)

Prior desde el precio de Polymarket → ajuste bayesiano en log-odds con señales externas (GNews con presupuesto de 5 consultas/día y guardrail prior±0,25; Fear&Greed; momentum BTC; Manifold observacional) → gates en cascada: prior extremo, edge bruto por régimen de volatilidad, edge neto tras comisión 2% y spread, confianza mínima 0,55, conflictos de familia, guard de reentrada. Sizing por Kelly fraccionado con techo por posición.

Infraestructura

3 imágenes (bot / API FastAPI / dashboard) construidas por Gitea Actions solo cuando cambian sus fuentes, desplegadas por ArgoCD (prune + selfHeal) en k3s; PostgreSQL 16 en StatefulSet; secrets vía Infisical operator; smoke test PostSync contra la API; backups nocturnos con sync offsite (rclone → MEGA); observabilidad en Grafana + uptime-kuma + notificaciones Telegram (deploys, checkpoints del bot, fallos de sync). Retención de métricas y join de outcomes como CronJobs. 88 días de uptime del StatefulSet al snapshot.

Detalle honesto de observabilidad: el panel Win Rate del dashboard de Grafana (docs/dashboard-grafana-2026-07-06.png) pasó vacío los 81 días. No es una query rota: la API emite win_rate: null hasta tener ≥10 mercados resueltos (hubo 2), y Grafana no pinta nada con un null. El panel vacío es el criterio de promoción del bot aplicándose a su propia monitorización.


3. Estado de la base de datos al snapshot

Tabla Filas Contenido
signals 222.549* Archivo de evaluaciones por ciclo (desde 2026-07-02)
manifold_match_audit 165.538 Auditoría completa del matching Polymarket↔Manifold
replay_decisions 22.697 Decisiones reproducidas por el motor de replay
ext_snapshots 5.353* Contexto externo por ciclo
metrics_daily 516 Cierres diarios (81 días) + snapshots intradía de hoy
markets 87 Universo evaluado
trades 12 Ledger completo de paper trades
market_outcomes 9 Resoluciones UMA-final joineadas
replay_runs / manifold_eval_cooldown / checkpoint_alerts 1 / 76 / 3 Metadatos

* La BD sigue viva; las tablas por ciclo crecen ~55k y ~1,3k filas/día respectivamente. Backup verificado del 2026-07-06 en /data/backups/backups/polymarket-decommission/ (pg_dump -Fc + CSV.gz + checksums; restore de prueba con recuentos idénticos 11/11 tablas). El dump final se hará en la Fase 3, justo antes del apagado.


4. Conclusión

El proyecto se archiva por una causa externa (bloqueo regulatorio del origen de datos), no por fracaso técnico. Lo que queda: un motor de evaluación bayesiano determinista y auditable, un pipeline de datos que archivó cada decisión con su contexto completo, y la evidencia — anecdótica en P&L, sólida en ingeniería — de que el sistema prefería no operar antes que operar sin ventaja. Todos los módulos centrales (edge, familias, replay, observabilidad) son agnósticos de la fuente y quedan listos para un eventual pivote a Manifold (docs/pivot-manifold.md, Fase 5).