Ф'ючерси
Сотні безстрокових контрактів
TradFi
Золото
Одна платформа для світових активів
Опціони
Hot
Торгівля ванільними опціонами європейського зразка
Єдиний рахунок
Максимізуйте ефективність вашого капіталу
Демо торгівля
Вступ до ф'ючерсної торгівлі
Підготуйтеся до ф’ючерсної торгівлі
Ф'ючерсні події
Заробляйте, беручи участь в подіях
Демо торгівля
Використовуйте віртуальні кошти для безризикової торгівлі
Запуск
CandyDrop
Збирайте цукерки, щоб заробити аірдропи
Launchpool
Швидкий стейкінг, заробляйте нові токени
HODLer Airdrop
Утримуйте GT і отримуйте масові аірдропи безкоштовно
Pre-IPOs
Отримайте повний доступ до глобальних IPO акцій.
Alpha Поінти
Ончейн-торгівля та аірдропи
Ф'ючерсні бали
Заробляйте фʼючерсні бали та отримуйте аірдроп-винагороди
Інвестиції
Simple Earn
Заробляйте відсотки за допомогою неактивних токенів
Автоінвестування
Автоматичне інвестування на регулярній основі
Подвійні інвестиції
Прибуток від волатильності ринку
Soft Staking
Earn rewards with flexible staking
Криптопозика
0 Fees
Заставте одну криптовалюту, щоб позичити іншу
Центр кредитування
Єдиний центр кредитування
Центр багатства VIP
Преміальні плани зростання капіталу
Управління приватним капіталом
Розподіл преміальних активів
Квантовий фонд
Квантові стратегії найвищого рівня
Стейкінг
Стейкайте криптовалюту, щоб заробляти на продуктах PoS
Розумне кредитне плече
Кредитне плече без ліквідації
Випуск GUSD
Мінтинг GUSD для прибутку RWA
Акції
AI
Gate AI
Ваш універсальний AI-помічник для спілкування
Gate AI Bot
Використовуйте Gate AI безпосередньо у своєму соціальному додатку
GateClaw
Gate Блакитний Лобстер — готовий до використання
Gate for AI Agent
AI-інфраструктура, Gate MCP, Skills і CLI
Gate Skills Hub
Понад 10 000 навичок
Від офісу до трейдингу: універсальна база навичок для ефективнішої роботи з AI
GateRouter
Розумний вибір із понад 40 моделей ШІ, без додаткових витрат (0%)
Polymarket PnL точний розрахунок: чому ваш облік прибутків і збитків може бути неправильним?
Я працюю на 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