Cálculo preciso de PnL na Polymarket: por que seus lucros e perdas podem estar incorretos?

BlockBeatNews
USDC0,01%

Título original: 《Cálculo preciso de PnL na Polymarket: por que seus lucros e perdas podem estar totalmente errados》
Autor original: Leo, analista de criptomoedas

Tenho trabalhado com automação de negociações na Polymarket por meio de uma ferramenta própria há seis meses, e o maior erro que cometi não foi uma estratégia falha, mas sim não conseguir calcular corretamente quanto ganhei ou perdi.

Não é por falta de habilidade minha. É que o cálculo de PnL (lucro e perda) do PM é uma armadilha. A API oficial fornece números incorretos, e os sites de análise de terceiros também exibem rankings errados. Você escreve seu próprio script para calcular? Provavelmente também está errado.

Quão grande é a discrepância? O terceiro colocado no ranking, kch123, calculou uma perda de $3,5 milhões usando um método errado, enquanto o lucro real foi de $11,4 milhões. Não é uma diferença de alguns pontos percentuais — é que o símbolo de lucro e perda está invertido.

Este artigo detalha cada erro que cometi. Se você negocia, desenvolve ferramentas ou acompanha rankings, cedo ou tarde vai se deparar com eles.

Erro 1: cashPnl não inclui lucros realizados já liquidados

A abordagem mais intuitiva: usar a interface /positions, somar o campo cashPnl (lucro/perda em dinheiro).

Testando com os três endereços no top 15 do ranking:

swisstony: soma de cashPnl +$35 mil, ranking real +$5,6 milhões, diferença de 158 vezes

kch123: soma de cashPnl -$3,52 milhões, ranking real +$11,4 milhões, símbolo invertido

gmanas: soma de cashPnl -$2,64 milhões, ranking real +$5,02 milhões, símbolo invertido

Para esses três endereços, dois tiveram o símbolo de lucro e perda invertidos.

Razão: a API /positions retorna cashPnl sem incluir os lucros realizados que já foram liquidados. Quando uma posição vencedora é automaticamente resgatada em USDC, ela desaparece da resposta da API. O que fica são posições não liquidadas — geralmente com prejuízo flutuante.

Você acha que está calculando todo o lucro e perda, mas na verdade só está considerando a parte não liquidada.

Erro 2: o campo makerPnl não condiz com o fluxo de caixa na cadeia

No arquivo JSONL de dados de negociações, há um campo makerPnl (lucro/perda do maker), que parece ser para calcular PnL. Mas não confie nele.

Percebi que, ao somar o makerPnl no dado de market making, o resultado difere de uma magnitude do fluxo de caixa na cadeia. A multiplicidade exata pode variar dependendo do cenário, mas a direção é sempre a mesma: a lógica interna do makerPnl não condiz com o fluxo real de USDC.

Por maior que seja a discrepância, a conclusão é a mesma: não use esse campo para calcular PnL.

Erro 3: não deduzir por txHash individualmente

Isso é contra a intuição.

Se um txHash (hash da transação) aparece várias vezes, a reação natural é: dados duplicados, remover.

Mas não pode fazer isso. O CLOB ( livro de ordens on-chain) da PM pode combinar várias ordens maker em uma única transação na cadeia, e múltiplas entradas com o mesmo txHash representam execuções reais distintas.

Antes, eu deduzia por txHash + ativo, e isso fez com que eu subestimasse $133 na side de compra. Testando na Polygon, confirmei que um único txHash realmente pode ter múltiplos eventos de transferência de USDC, cada um correspondendo a uma negociação real.

Conclusão: não deduza apenas por txHash. Para calcular PnL, some diretamente os dados brutos de /activity.

Erro 4: limite na paginação por offset

Na API /activity, usar offset para paginação? Se passar de 3000 registros, dá erro 400. O documento não informa isso.

Testei com os três endereços: GET /activity?offset=3100 retorna HTTP 400, com a mensagem “max historical activity offset of 3000 exceeded”. Jogadores com dezenas de milhares de negociações não conseguem passar de 3000.

Usar o parâmetro end (com o timestamp da última entrada da página anterior - 1) para paginação não tem limite.

Erro 5: diferenças na métrica de PnL do ranking

Depois de calcular o PnL de um endereço, ao comparar com o ranking, há uma pequena diferença.

Na maioria dos casos, a discrepância é menor que $10 (devido à volatilidade do valor de mercado das posições). Mas se a diferença for maior, pode ser por: janela de agregação do ranking, atraso na atualização do cache ou múltiplas wallets proxy vinculadas ao usuário.

Na prática, ao usar o método de fluxo de caixa, o PnL de um endereço individual bate quase exatamente com o valor retornado pela API lb-api. Se a diferença for grande, primeiro verifique se a paginação está completa (erro 4) e se está usando os campos corretos (erros 1-2).

Método correto

Depois de testar várias abordagens, a mais confiável que validei é usar a API de dados para somar fluxo de caixa. Sem campos pré-calculados, apenas somando as entradas e saídas de fundos a partir dos registros brutos.

Fórmula:

PnL = SOMA (negociações onde side=VENDER) + SOMA (REDEEM) + SOMA (MERGE) + SOMA (REBAIXA_DO_MAKER) + SOMA (REWARD) - SOMA (negociações onde side=COMPRAR) - SOMA (SPLIT) + valor de mercado das posições

· TRADE COMPRAR: gastar USDC para comprar token (saída)

· TRADE VENDER: vender token para recuperar USDC (entrada)

· REDEEM: resgatar USDC de posições vencedoras (entrada)

· SPLIT: criar tokens a partir de USDC (saída)

· MERGE: fundir tokens de volta em USDC (entrada)

· REBAIXA_DO_MAKER: comissão de maker (entrada)

· REWARD: recompensas ou airdrops (entrada)

· Fonte de dados:

GET /activity?user=<endereço>&limit=500, paginar com end, somar por tipo após obter todos os registros.

· Valor de mercado das posições:

GET /positions?user=<endereço>, calcular size × preço atual.

· Validação cruzada:

Comparar o resultado com a API de ranking do Polymarket (lb-api.polymarket.com/profit?window=all&address=X). Diferença menor que $10 é aceitável. Discrepâncias vêm da volatilidade do valor de mercado.

Validação: ranking top 15, teste real

Após calcular pelo método de fluxo de caixa, validar com a API do ranking:

swisstony: fluxo de caixa +$5,601,000, ranking +$5,601,000, diferença < $10

kch123: fluxo de caixa +$11,396,000, ranking +$11,396,000, diferença < $10

gmanas: fluxo de caixa +$5,024,000, ranking +$5,024,000, diferença < $10

As diferenças entre os três endereços estão dentro de $10, sendo causadas pela volatilidade do valor de mercado.

Depois de validar o método, apliquei para analisar centenas de endereços de destaque, e os resultados foram outros.

Resumo

SOMA(cashPnl) de /positions → não funciona, não inclui lucros realizados, pode inverter sinais

Soma do campo makerPnl → não funciona, não condiz com fluxo de caixa na cadeia

Calculado após deduzir por txHash → não funciona, perde negociações reais acima de $100

Paginação por offset + soma → não funciona, dados truncados, erro acima de 3000

Método de fluxo de caixa na API de dados → atualmente o mais confiável, com diferença menor que $10

Para quem faz quant, o primeiro passo não é encontrar alpha. É garantir que seus cálculos estão corretos.

Tudo acima vem de experiências reais, não de teoria. A API do PM pode mudar a qualquer momento, então recomenda-se validar periodicamente com a API de ranking.

Link do artigo original

Clique para conhecer as vagas na BlockBeats

Participe do grupo oficial da BlockBeats no Telegram:

Telegram assinatura: https://t.me/theblockbeats

Telegram grupo de discussão: https://t.me/BlockBeats_App

Conta oficial no Twitter: https://twitter.com/BlockBeatsAsia

Aviso: As informações nesta página podem ser provenientes de terceiros e não representam as opiniões ou pontos de vista da Gate. O conteúdo exibido nesta página é apenas para referência e não constitui aconselhamento financeiro, de investimento ou jurídico. A Gate não garante a exatidão ou integridade das informações e não será responsável por quaisquer perdas decorrentes do uso dessas informações. Os investimentos em ativos virtuais apresentam altos riscos e estão sujeitos a uma volatilidade de preços significativa. Você pode perder todo o capital investido. Por favor, compreenda completamente os riscos envolvidos e tome decisões prudentes com base em sua própria situação financeira e tolerância ao risco. Para mais detalhes, consulte o Aviso Legal.

Related Articles

Ghost Fills da Polymarket cai do pico de 30% para 0,17% após o lançamento das carteiras de depósito

De acordo com Josh Stevens, VP de Engenharia da Polymarket, as “ghost fills” caíram de um pico de 30% para 0,17% após o lançamento do recurso Deposit Wallets, com a métrica esperada continuar a seguir na direção de zero ao longo do

GateNews51m atrás

Aquisição lucrativa de conta de US$ 1,6 milhão $170K no valor de apostas de vitória do Spurs na 77 centavos na Polymarket

De acordo com a Odaily Seer, uma conta altamente lucrativa (endereço: 0x93abbc022ce98d6f45d4444b594791cc4b7a9723) com mais de US$ 1,6 milhão em ganhos acumulados comprou posições no valor de US$ 170 mil prevendo que o Spurs derrotará o Timberwolves no Jogo 1 das semifinais da Conferência Oeste da NBA em

GateNews4h atrás

Dicas Oficiais de Membro do Polymarket Sinalizam Lançamento do Token POLY Muito Em Breve

De acordo com a ChainCatcher, um membro oficial da equipe da Polymarket, Mustafa, deu a entender que os desenvolvimentos do token POLY podem chegar muito em breve. Em uma interação com a comunidade, quando um usuário perguntou quando o staking de POLY estaria disponível para reduzir taxas de taker ou taxas futuras de maker, Mustafa respondeu: "muito em breve".

GateNews4h atrás

Roundhill apresenta nova data de vigência para o primeiro ETF de mercado de previsões do mundo, marcado para 11 de maio

De acordo com o analista de ETFs da Bloomberg, Eric Balchunas, a Roundhill enviou uma nova data de vigência para o primeiro ETF de mercado de previsões do mundo em 5 de maio, com o ETF previsto para ser lançado em 11 de maio (segunda-feira), um atraso de alguns dias em relação ao cronograma original. O registro indica que o ETF passará a vigorar

GateNews4h atrás

As compras de contas da Polymarket de US$ 103.000 impulsionam uma diferença de -10,5 no Jogo 1 dos playoffs da NBA contra o Timberwolves

De acordo com o monitoramento do Odaily Seer, uma conta da Polymarket que perdeu mais de US$ 2,8 milhões comprou US$ 103 mil em posições com spread Spurs -10,5 contra o Timberwolves há 40 minutos, a um preço médio de entrada de 51 centavos. O Jogo 1 das semifinais da Conferência Oeste da NBA entre Spurs e Timberwolves

GateNews4h atrás

Clear Street se torna o primeiro FCM institucional a firmar parceria com a Kalshi em mercados de previsão

Clear Street fez parceria com a Kalshi para oferecer a investidores institucionais acesso regulamentado a mercados de previsão. Como a primeira corretora/mercantil de futuros institucional a ingressar na bolsa da Kalshi, a Clear Street oferecerá serviços de compensação, liquidação, execução de derivativos e negociação em bloco

GateNews13h atrás
Comentário
0/400
Sem comentários