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?
He estado haciendo trading automatizado propio en Polymarket durante medio año, y la mayor trampa en la que he caído no fue un fallo en la estrategia, sino que ni siquiera podía calcular correctamente cuánto había ganado o perdido.
No es que sea torpe. 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 para calcular? La mayoría de las veces también estará mal.
¿La desviación es tan disparatada? 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 obtuvo una ganancia de 11.4 millones de dólares. No es que haya una diferencia de unos pocos puntos porcentuales: ¡los signos de ganancia y pérdida están invertidos!
Este artículo desglosa cada trampa en la que he caído. Para quienes hacen trading, desarrollan herramientas o consultan clasificaciones, tarde o temprano se encontrarán con ellas.
Trampa 1: cashPnl no incluye las ganancias ya liquidadas
El método más intuitivo: usar la interfaz /positions, sumar el campo cashPnl (ganancias y pérdidas en efectivo).
Prueba con las tres direcciones en los primeros 15 lugares del ranking:
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 esas tres direcciones, ¡los signos de ganancia y pérdida están invertidos en dos casos!
Razón: la API de /positions devuelve un cashPnl que no incluye las ganancias realizadas que ya se han cerrado o redimido. Cuando una posición ganadora se redime automáticamente en USDC, esa posición desaparece de la respuesta de la API. Lo que queda son las posiciones sin liquidar, que suelen estar en pérdida flotante.
Crees que estás calculando toda la ganancia o pérdida, pero en realidad solo estás considerando la parte sin liquidar.
Trampa 2: el campo makerPnl no coincide con el flujo de efectivo en la cadena
En los datos JSONL de las operaciones, hay un campo makerPnl (ganancia/pérdida del creador de mercado), que parece estar para calcular PnL. Pero no confíes.
He observado en los datos de mercado que la suma de makerPnl difiere en un orden de magnitud con el cálculo basado en el flujo de efectivo en la cadena. La diferencia 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.
No importa 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 lo más contraintuitivo.
Si un txHash (hash de transacción) aparece varias veces, la reacción natural sería: datos duplicados, eliminarlos.
Pero no se puede hacer así. El CLOB (libro de órdenes en cadena) de PM puede emparejar múltiples órdenes maker en una sola transacción en la 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é 133 dólares. En la cadena Polygon, verifiqué que un solo hash de transacción puede tener múltiples eventos de transferencia USDC independientes, cada uno correspondiente a una transacción real.
Conclusión: no se puede 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
¿Usar offset para paginar en /activity? Si pasa de 3000, da error 400. La documentación no lo especifica.
Verifiqué con esas tres direcciones: GET /activity?offset=3100 devuelve HTTP 400, con el mensaje de error “max historical activity offset of 3000 exceeded”. Los usuarios principales realizan decenas de miles de transacciones, 3000 no es suficiente.
Usar el parámetro end (el timestamp de la última transacción 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 el ranking
Tras calcular el PnL de una dirección, al compararlo con el ranking, 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 las posiciones). Pero si la diferencia es mucho mayor, las causas posibles incluyen: la ventana de agregación del ranking, 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 los resultados del API lb-api. Si la diferencia es grande, 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 he validado es sumar los datos del API de flujo de efectivo. Sin usar campos precomputados, simplemente calcula las entradas y salidas de fondos desde los registros originales de transacciones.
Fórmula:
PnL = SUM(TRADE donde side=SELL) + SUM(REDEEM) + SUM(MERGE) + SUM(MAKER_REBATE) + SUM(REWARD) - SUM(TRADE donde side=BUY) - SUM(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 en 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 o airdrops (entrada)
· Fuente de datos:
GET /activity?user=
&limit=500, paginar con end, 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), una diferencia menor a 10 dólares se considera aceptable. La diferencia proviene de la volatilidad en tiempo real del valor de las posiciones.
Verificación: clasificación top 15 en la práctica
Tras calcular con flujo de efectivo, cruzar con la API del ranking:
swisstony: flujo de efectivo +$5.601 millones, ranking +$5.601 millones, diferencia < $10
kch123: flujo de efectivo +$11.396 millones, ranking +$11.396 millones, diferencia < $10
gmanas: flujo de efectivo +$5.024 millones, ranking +$5.024 millones, diferencia < $10
Las diferencias en los tres casos son menores a 10 dólares, y provienen de la volatilidad en tiempo real del valor de las posiciones.
Una vez validado el método, lo apliqué para analizar las ganancias y pérdidas reales de cientos de direcciones principales. Eso ya es otra historia.
Resumen
SUM(cashPnl) desde /positions → No funciona, no incluye ganancias ya liquidadas, y los signos pueden invertirse.
Sumar el campo makerPnl → No funciona, no coincide con el flujo en la cadena.
Deduplicar por txHash → No funciona, pérdida de transacciones reales de más de 100 dólares.
Paginación con offset + suma → No funciona, datos truncados, error si pasa de 3000.
Método de flujo de efectivo del API → Actualmente el más confiable, con diferencia menor a 10 dólares.
El primer paso en 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 teorías. La API de PM puede cambiar en cualquier momento, por lo que se recomienda verificar periódicamente con la API del ranking para validar tus cálculos.
Haz clic para conocer las posiciones abiertas en BlockBeats
Únete a la comunidad oficial de BlockBeats:
Telegram suscripción: https://t.me/theblockbeats
Telegram grupo: https://t.me/BlockBeats_App
Cuenta oficial de Twitter: https://twitter.com/BlockBeatsAsia