Básico
Spot
Opera con criptomonedas libremente
Margen
Multiplica tus beneficios con el apalancamiento
Convertir e Inversión automática
0 Fees
Opera cualquier volumen sin tarifas ni deslizamiento
ETF
Obtén exposición a posiciones apalancadas de forma sencilla
Trading premercado
Opera nuevos tokens antes de su listado
Contrato
Accede a cientos de contratos perpetuos
TradFi
Oro
Plataforma global de activos tradicionales
Opciones
Hot
Opera con opciones estándar al estilo europeo
Cuenta unificada
Maximiza la eficacia de tu capital
Trading de prueba
Introducción al trading de futuros
Prepárate para operar con futuros
Eventos de futuros
Únete a eventos para ganar recompensas
Trading de prueba
Usa fondos virtuales para probar el trading sin asumir riesgos
Lanzamiento
CandyDrop
Acumula golosinas para ganar airdrops
Launchpool
Staking rápido, ¡gana nuevos tokens con potencial!
HODLer Airdrop
Holdea GT y consigue airdrops enormes gratis
Pre-IPOs
Accede al acceso completo a las OPV de acciones globales
Puntos Alpha
Opera activos on-chain y recibe airdrops
Puntos de futuros
Gana puntos de futuros y reclama recompensas de airdrop
Inversión
Simple Earn
Genera intereses con los tokens inactivos
Inversión automática
Invierte automáticamente de forma regular
Inversión dual
Aprovecha la volatilidad del mercado
Staking flexible
Gana recompensas con el staking flexible
Préstamo de criptomonedas
0 Fees
Usa tu cripto como garantía y pide otra en préstamo
Centro de préstamos
Centro de préstamos integral
Centro de patrimonio VIP
Planes de aumento patrimonial prémium
Gestión patrimonial privada
Asignación de activos prémium
Quant Fund
Estrategias cuantitativas de alto nivel
Staking
Haz staking de criptomonedas para ganar en productos PoS
Apalancamiento inteligente
Apalancamiento sin liquidación
Acuñación de GUSD
Acuña GUSD y gana rentabilidad de RWA
Promociones
Centro de actividades
Únete a actividades y gana recompensas
Referido
20 USDT
Invita amigos y gana por tus referidos
Programa de afiliados
Gana recompensas de comisión exclusivas
Gate Booster
Aumenta tu influencia y gana airdrops
Anuncio
Novedades de plataforma en tiempo real
Gate Blog
Artículos del sector de las criptomonedas
AI
Gate AI
Tu compañero de IA conversacional para todo
Gate AI Bot
Usa Gate AI directamente en tu aplicación social
GateClaw
Gate Blue Lobster, listo para usar
Gate for AI Agent
Infraestructura de IA, Gate MCP, Skills y CLI
Gate Skills Hub
+10 000 habilidades
De la oficina al trading, una biblioteca de habilidades todo en uno para sacar el máximo partido a la IA
GateRouter
Elige inteligentemente entre más de 40 modelos de IA, con 0% de costos adicionales
Cálculo preciso de PnL en Polymarket: ¿Por qué tus ganancias y pérdidas podrían estar equivocadas?
Título original: «Cálculo preciso de PnL en Polymarket: por qué tus ganancias y pérdidas pueden estar completamente equivocadas» Autor original: Leo, analista de criptomonedas
Autor original:律动BlockBeats
Fuente original:
Reproducción: Mars Finance
He estado haciendo trading automatizado propio en Polymarket durante medio año, y la mayor trampa que he pisado no fue un fallo en la estrategia, sino que ni siquiera podía calcular correctamente cuánto había ganado.
No soy malo en esto. Es que el cálculo de PnL de PM en sí mismo es una zona de minas. La API oficial te da números incorrectos, y los sitios de análisis de terceros también muestran clasificaciones equivocadas. ¿Escribir tu propio script? Probablemente también esté equivocado.
¿Hasta qué punto son las desviaciones? El tercer lugar en la clasificación, kch123, calculó una pérdida de 3.5 millones de dólares con un método incorrecto, cuando en realidad ganó 11.4 millones de dólares. No es una diferencia de unos pocos puntos porcentuales: ¡el signo de ganancia y pérdida está invertido!
Este artículo desglosa cada trampa en la que he caído. Ya seas trader, desarrollador de herramientas o simplemente consultes las clasificaciones, tarde o temprano te encontrarás con esto.
Trampa 1: cashPnl no incluye las ganancias ya liquidadas
El método más intuitivo: usar la interfaz /positions, sumar el campo cashPnl (ganancia/pérdida en efectivo).
Tomando los tres primeros en la clasificación y verificando:
swisstony: suma de cashPnl +$35,000, clasificación real +$5,6 millones, diferencia de 158 veces
kch123: suma de cashPnl -$3.52 millones, clasificación real +$11.4 millones, signo invertido
gmanas: suma de cashPnl -$2.64 millones, clasificación real +$5.02 millones, signo invertido
En los tres casos, ¡el signo de ganancia y pérdida está invertido!
Razón: la API /positions devuelve un cashPnl que no incluye las ganancias o pérdidas realizadas que ya han sido cerradas o redimidas. Cuando una posición ganadora se redime automáticamente a USDC, esa posición desaparece de la respuesta de la API. Lo que queda son las posiciones no liquidadas, que suelen mostrar pérdidas flotantes.
Crees que estás calculando toda la ganancia o pérdida, pero en realidad solo estás considerando la parte no liquidada.
Trampa 2: el campo makerPnl no coincide con el flujo de efectivo en la cadena
En los datos de trading en formato JSONL hay un campo makerPnl (ganancia/pérdida del creador de mercado), que parece estar diseñado para calcular PnL. Pero no confíes.
Observando los datos de creación de mercado, el resultado de sumar makerPnl (SUM(makerPnl)) difiere en un orden de magnitud con el cálculo basado en el flujo de efectivo en la cadena. La magnitud exacta puede variar según el escenario, pero la dirección es la misma: la lógica interna de makerPnl no coincide con el flujo real de USDC.
Independientemente de cuán grande sea la desviación, la conclusión es la misma: no uses ese campo para calcular PnL.
Trampa 3: no se puede deduplicar solo por txHash
Esto es contraintuitivo.
Si una misma txHash (hash de transacción) aparece varias veces, la reacción natural sería: datos duplicados, eliminar duplicados.
Pero no se puede hacer así. El libro de órdenes en cadena (CLOB) de PM puede hacer coincidir múltiples órdenes maker en una sola transacción en cadena, y varias entradas con el mismo txHash son en realidad ejecuciones independientes.
Antes, deduplicaba por txHash + asset, y en el lado de compra (BUY) subestimé en 133 dólares. En Polygon, verifiqué que un solo txHash puede tener múltiples eventos de transferencia USDC, cada uno correspondiente a una transacción real.
Conclusión: no deduplicar solo por txHash. Para calcular PnL, suma directamente los datos originales de /activity.
Trampa 4: el límite en la paginación con offset
Para la interfaz /activity, ¿usar offset (desplazamiento)? Cuando pasa de 3000, da error 400. La documentación no lo especifica.
Verifiqué con los tres casos anteriores: GET /activity?offset=3100 devuelve HTTP 400, con el mensaje de error “max historical activity offset of 3000 exceeded”. Los principales usuarios tienen decenas de miles de transacciones, 3000 no es suficiente.
Usar el parámetro end (el timestamp de la última entrada de la página anterior - 1) como cursor de paginación no tiene límite.
Trampa 5: diferencias en la definición de PnL en la clasificación
Tras calcular el PnL de una dirección y compararlo con la clasificación, hay una pequeña diferencia.
En la mayoría de los casos, la diferencia es menor a 10 dólares (debido a la volatilidad en tiempo real del valor de mercado de las posiciones). Pero si la diferencia es mucho mayor, las causas posibles incluyen: la ventana de agregación de la clasificación, retrasos en la actualización del caché, o que el usuario tenga varias wallets proxy vinculadas.
En pruebas, el método de flujo de efectivo coincide mucho con la API lb-api. Si tu resultado difiere mucho, primero verifica si la paginación fue completa (trampa 4) y si usaste los campos correctos (trampas 1-2).
Método correcto
Tras probar varias alternativas, el método más confiable que validé es sumar los datos de la API de flujo de efectivo. Sin usar campos precomputados, simplemente sumando las transacciones originales.
Fórmula:
PnL = SUMA(TRADE donde side=SELL) + SUMA(REDEEM) + SUMA(MERGE) + SUMA(MAKER_REBATE) + SUMA(REWARD) - SUMA(TRADE donde side=BUY) - SUMA(SPLIT) + valor de mercado de la posición
· TRADE BUY: gastar USDC para comprar tokens (salida)
· TRADE SELL: vender tokens para recuperar USDC (entrada)
· REDEEM: redimir posiciones ganadoras por USDC (entrada)
· SPLIT: acuñar USDC en tokens (salida)
· MERGE: combinar tokens en USDC (entrada)
· MAKER_REBATE: reembolso del creador de mercado (entrada)
· REWARD: recompensas/airdrop (entrada)
· Fuente de datos:
GET /activity?user=&limit=500, paginar con end, y sumar por tipo tras obtener todos los datos.
· Valor de mercado de la posición:
GET /positions?user=, tamaño × precio actual.
· Validación cruzada:
Comparar los resultados con la API de clasificación de Polymarket (lb-api.polymarket.com/profit?window=all&address=X), y si la diferencia es menor a 10 dólares, se considera correcto. La diferencia se debe a la volatilidad en tiempo real del valor de mercado.
Verificación: clasificación de los 15 principales en la práctica
Tras calcular con flujo de efectivo, cruzar con la API de clasificación:
swisstony: +$5,601,000 en flujo de efectivo, clasificación +$5,601,000, diferencia < $10
kch123: +$11,396,000 en flujo de efectivo, clasificación +$11,396,000, diferencia < $10
gmanas: +$5,024,000 en flujo de efectivo, clasificación +$5,024,000, diferencia < $10
Las diferencias en los tres casos son menores a 10 dólares, y se deben a la volatilidad en tiempo real del valor de mercado.
Una vez que el método funciona, lo apliqué para analizar las ganancias y pérdidas reales de cientos de direcciones principales. Eso fue otra historia.
Resumen
SUM(cashPnl) desde /positions → no funciona, no incluye ganancias ya liquidadas, y el signo puede invertirse
Sumar el campo makerPnl → no funciona, no coincide con el flujo en cadena
Deduplicar por txHash y luego calcular → no funciona, más de 100 dólares, elimina ejecuciones reales
Paginación con offset + suma → no funciona, datos truncados, error >3000
API de flujo de efectivo → actualmente el método más confiable, diferencia menor a 10 dólares
El primer paso para hacer trading cuantitativo no es buscar alpha. Es asegurarte de que tus cálculos sean correctos.
Todo lo anterior proviene de experiencias reales, no de deducciones teóricas. La API de PM puede cambiar en cualquier momento, por lo que se recomienda verificar periódicamente con la API de clasificación para validar tus cálculos.