Polymarket PnL точний розрахунок: чому ваш облік прибутків і збитків може бути неправильним?

BlockBeatNews
USDC-0,01%

Оригінальна назва: «Polymarket PnL точний розрахунок: чому ваші прибутки й збитки можуть бути зовсім неправильними»
Автор оригіналу: Leo, аналітик у сфері криптовалют

Я працюю на Polymarket з автоматизованою торгівлею напівроку, і найбільша помилка, яку я зробив, — це не стратегія, а те, що я навіть не міг правильно порахувати, скільки заробив або програв.

Це не через мою некомпетентність. Саме PnL у PM — це мінне поле. Офіційний API дає неправильні цифри, сторонні аналітичні сайти показують неправильні рейтинги. Ви пишете скрипт для підрахунку? Велика ймовірність, що теж помилитеся.

Наскільки великі похибки? Третє місце у рейтингу, kch123, порахував збитки у $3,5 мільйонів неправильним методом, тоді як реальний прибуток — $11,4 мільйони. Це не кілька відсотків — це протилежні знаки прибутку й збитку.

У цій статті я розберу кожну помилку, яку я зробив. Торгівці, розробники інструментів, ті, хто дивиться рейтинги — рано чи пізно зіткнуться.

Помилка 1: cashPnl не враховує вже закриті прибутки й збитки

Найінтуїтивніший спосіб: витягнути /positions і підсумувати поле cashPnl (грошовий прибуток/збиток).

На прикладі трьох адрес із топ-15:

swisstony: сума cashPnl +$3,5 тис., реальний рейтинг +$5,6 млн, різниця у 158 разів

kch123: сума cashPnl -$3,52 млн, реальний рейтинг +$11,4 млн, знак протилежний

gmanas: сума cashPnl -$2,64 млн, реальний рейтинг +$5,02 млн, знак протилежний

Три адреси, два знаки прибутку й збитку — прямо протилежні.

Причина: поле cashPnl у /positions не враховує реалізовані прибутки й збитки, які вже закриті або викуплені. Якщо позицію вигідно закрили й автоматично викупили у USDC, ця позиція зникає з API-відповіді. Залишаються лише незакриті позиції — зазвичай з浮亏.

Ви думаєте, що рахуєте весь прибуток і збиток? Насправді — лише незакриті частини.

Помилка 2: поле makerPnl і потік грошових коштів у блокчейні не співпадають

У JSONL-даних торгів є поле makerPnl (прибутки/збитки маркетмейкера), назва якого натякає, що воно для підрахунку PnL. Не вірте.

Я спостерігав у даних маркетмейкерів, що сума SUM(makerPnl) відрізняється від результату підрахунку грошового потоку у блокчейні у кілька разів. Конкретне співвідношення залежить від сценарію, але напрямок однаковий: внутрішня логіка makerPnl не співпадає з реальним потоком USDC.

Незалежно від розміру похибки, висновок один: не використовуйте це поле для підрахунку PnL.

Помилка 3: не можна видаляти дублікати за txHash

Це найінтуїтивніше.

Якщо один txHash (хеш транзакції) з’являється кілька разів, логічна реакція — видалити дублікати.

Але так робити не можна. У CLOB Polymarket (блокчейн-орієнтований ордербук) одна транзакція може містити кілька ордерів маркетмейкера, і кожен з них — реальне виконання. Кілька записів з одним txHash — це справжні окремі виконання.

Раніше я видаляв дублікати за txHash + asset, і через це недорахував $133 на BUY-стороні. Перевірка на Polygon показала, що у кожній транзакції справді є кілька окремих USDC Transfer подій, кожна з яких — реальна операція.

Висновок: не можна просто видаляти дублікати за txHash. Для підрахунку PnL потрібно підсумовувати дані з /activity у сирому вигляді.

Помилка 4: обмеження при пагінації offset

При пагінації через /activity з offset — якщо перевищити 3000 записів, отримуєш помилку 400. У документації про це не написано.

Три адреси, що я перевіряв: GET /activity?offset=3100 повертає HTTP 400 з повідомленням max historical activity offset of 3000 exceeded. Власники великих портфелів мають десятки тисяч транзакцій, 3000 — замало.

Замість цього можна використовувати параметр end (час останнього запису попередньої сторінки - 1), і тоді пагінація без обмежень.

Помилка 5: різниця у підрахунках PnL у рейтингу

Після підрахунку PnL для однієї адреси і порівняння з рейтингом — різниця є.

Зазвичай вона менша $10 (через коливання вартості позицій у реальному часі). Але якщо різниця суттєва, можливо, причина у: різних вікнах агрегації рейтингу, затримках оновлення кешу або у тому, що користувач прив’язав кілька проксі-гаманців.

У тестах сума, отримана методом грошового потоку, дуже збігається з даними lb-api. Якщо різниця велика — перевірте, чи повністю пройшли пагінацію (пункт 4), і чи використовували правильне поле (пункти 1-2).

Правильний підхід

Після випробувань різних методів я підтвердив, що найнадійніший — це підрахунок через Data API за допомогою підсумовування грошових потоків без попередніх обчислень.

Формула:

PnL = SUM(TRADE, де side=SELL) + SUM(REDEEM) + SUM(MERGE) + SUM(MAKER_REBATE) + SUM(REWARD) - SUM(TRADE, де side=BUY) - SUM(SPLIT) + ринкова вартість позиції

· TRADE BUY: купівля токенів за USDC (видатки)

· TRADE SELL: продаж токенів і отримання USDC (дохід)

· REDEEM: викуп виграшної позиції у USDC (дохід)

· SPLIT: створення токенів із USDC (видатки)

· MERGE: об’єднання токенів назад у USDC (дохід)

· MAKER_REBATE: винагорода маркетмейкера (дохід)

· REWARD: нагороди/аірдропи (дохід)

· Джерело даних:

GET /activity?user=

&limit=500, пагінація за допомогою end, підсумовування за типами.

· Вартість позиції:

GET /positions?user=

, size × currentPrice.

· Перевірка:

Порівняння результатів з API рейтингу Polymarket (lb-api.polymarket.com/profit?window=all&address=X), різниця <$10 — прийнятно. Різниця виникає через коливання вартості позицій у реальному часі.

Перевірка: топ-15 у реальності

Після підрахунку грошовим потоком порівняння з API рейтингу:

swisstony: грошовий потік +$5,6 млн, рейтинг +$5,6 млн, різниця <$10

kch123: грошовий потік +$11,4 млн, рейтинг +$11,4 млн, різниця <$10

gmanas: грошовий потік +$5,02 млн, рейтинг +$5,02 млн, різниця <$10

Усі три адреси мають розбіжності менше $10, що зумовлено коливаннями вартості позицій у реальному часі.

Після запуску цього методу я проаналізував сотні провідних адрес і їх реальні прибутки й збитки. Це вже інша історія.

Підсумки

SUM(cashPnl) з /positions → не підходить, не враховує реалізовані прибутки, може змінювати знак

Сума поля makerPnl → не підходить, не збігається з грошовим потоком у блокчейні

Обчислення після видалення дублікатів за txHash → не підходить, втрачає реальні виконання на понад $100

Пагінація за offset + підсумовування → не підходить, дані обмежені, >3000 — помилка

Метод грошового потоку через Data API → найнадійніший наразі, різниця <$10

Перший крок у квантовій торгівлі — не шукати альфу. А переконатися, що ви правильно рахуєте.

Все вище — це не теорія, а реальні помилки, допущені на практиці. API PM може змінювати поведінку будь-коли, тому рекомендується регулярно перевіряти свої розрахунки через API рейтингу.

Посилання на оригінал

Натисніть, щоб дізнатися про вакансії в BlockBeats

Запрошуємо приєднатися до офіційної спільноти BlockBeats:

Telegram-канал підписки: https://t.me/theblockbeats

Telegram-група: https://t.me/BlockBeats_App

Офіційний акаунт у Twitter: https://twitter.com/BlockBeatsAsia

Застереження: Інформація на цій сторінці може походити від третіх осіб і не відображає погляди або думки Gate. Вміст, що відображається на цій сторінці, є лише довідковим і не є фінансовою, інвестиційною або юридичною порадою. Gate не гарантує точність або повноту інформації і не несе відповідальності за будь-які збитки, що виникли в результаті використання цієї інформації. Інвестиції у віртуальні активи пов'язані з високим ризиком і піддаються значній ціновій волатильності. Ви можете втратити весь вкладений капітал. Будь ласка, повністю усвідомлюйте відповідні ризики та приймайте обережні рішення, виходячи з вашого фінансового становища та толерантності до ризику. Для отримання детальної інформації, будь ласка, зверніться до Застереження.

Пов'язані статті

DeepBook запускає ринок прогнозів на тестнеті Sui

Згідно з Foresight News, DeepBook, DeFi-протокол у мережі Sui, запустив DeepBook Predict — ринок прогнозів — на testnet. Розроблений у співпраці з сервісом цінових опцій Block Scholes, Predict підтримує бінарні опціони, колл, пут і спред-опціони, а також з кредитним плечем

GateNews7хв. тому

Віталік прогнозує, що ринки прогнозів переходять до децентралізованих оракулів, і закликає провести приватне голосування далі

За даними ChainCatcher, Віталік Бутерін заявив у X, що якість ринків прогнозів фундаментально залежить від їхніх оракулів. Він висловив оптимізм щодо того, що ринки прогнозів дедалі частіше впроваджуватимуть децентралізовані й такі, що не фінансово-спекулятивно прив’язані, рішення оракулів. Бутерін додав, що наступний етап розвитку

GateNews51хв. тому

Американське медіа-розслідування: Polymarket має штаб-квартиру в Панамі через юридичну фірму та раніше надавала послуги FTX

Згідно з розслідуванням, опублікованим 5 травня Національним громадським радіо США (NPR), журналісти вирушили за адресою штаб-квартири в Панамі, яку Polymarket вказує в офіційній реєстрації, — Панама-Сіті, Океанічний бізнес-парк, 21-й поверх — і на місці не знайшли жодних слідів Polymarket або його панамських юридичних осіб. Офіс за цією адресою належить юридичній фірмі García de Paredes Law Firm, яка раніше надавала правові послуги FTX.

MarketWhisper3год тому

MicroStrategy планує продати Bitcoin, щоб профінансувати дивіденди STRC, переходить від політики «ніколи не продавати»

Згідно зі звітом The Block про прибуткову конференцію MicroStrategy за 1 квартал 2026 року, компанія планує продавати bitcoin, щоб фінансувати дивіденди для свого високодохідного безстрокового привілейованого акціонерного капіталу STRC, що є суттєвим відходом від її багаторічної переконаності “never sell”. Голова Майкл Сейлор заявив, що компанії

GateNews3год тому

Кит Polymarket придбав $133 000 угоди-ставки на Thunder (spread) у матчі 1 західного півфіналу НБА за 50¢

За даними Odaily Seer, рахунок, який заробив понад $12 мільйонів на Polymarket, придбав позиції на суму $133,000, що ставлять на перемогу Thunder над Lakers з різницею у 15,5 очка в першій грі півфіналу НБА Західної конференції 6 травня, за середньою ціною входу 50 центів. Гру було розпочато

GateNews4год тому
Прокоментувати
0/400
Немає коментарів