Polymarket PnL正確計算:為什麼你算的盈虧可能是錯的?

BlockBeatNews

原文タイトル:《Polymarket PnL 精准計算:なぜあなたの損益計算は全て間違っている可能性があるのか》
原文作者:Leo、暗号分析師

我在 Polymarket 自研自动化交易半年,踩过的最大坑不是策略失灵,是连自己赚了多少钱都算不对。
ポリマーケットで自作の自動取引を半年間行ってきたが、最も大きな落とし穴は戦略の失敗ではなく、自分がいくら稼いだかすら正しく計算できていなかったことだ。

不是我菜。是 PM 的 PnL 计算本身就是雷区。官方 API 给你的数字是错的,第三方分析网站展示的排名也是错的。你自己写脚本算?大概率还是错的。
私が下手なわけではない。PMのPnL計算自体が落とし穴だ。公式APIが提供する数字は誤っているし、サードパーティの分析サイトが表示するランキングも誤っている。自分でスクリプトを書いて計算?ほぼ間違っている可能性が高い。

偏差有多离谱?排行榜第 3 名 kch123,用错误方法算出来亏 $350 万,实际盈利 $1140 万。不是差几个百分点——是盈亏符号都反了。
偏差はどれほどひどいのか?ランキング3位のkch123は誤った方法で計算し、損失350万ドルと出たが、実際の利益は1140万ドルだった。数ポイントの差ではなく、損益の符号さえ逆になっていた。

这篇把我踩过的每个坑拆开讲。做交易的、写工具的、看排行榜的,迟早会遇到。
この記事では、私が経験した各落とし穴を詳しく解説する。取引をする人も、ツールを作る人も、ランキングを見る人も、いずれ直面するだろう。

坑 1:cashPnl 不包含已结算的盈利

落とし穴1:cashPnlは既に決済された利益を含まない

最直觉的做法:拉 /positions 接口,求和 cashPnl(现金盈亏)字段。
最も直感的な方法:/positions APIを呼び出し、cashPnl(現金損益)フィールドの合計を求める。

拿排行榜前 15 的三个地址实测:
ランキング上位15のアドレス3つで実測:

**swisstony:**cashPnl 求和 +$3.5 万,排行榜实际 +$560 万,差 158 倍
**swisstony:**cashPnlの合計 +3.5万ドル、実際のランキングは+560万ドル、差は158倍

**kch123:**cashPnl 求和 -$352 万,排行榜实际 +$1140 万,符号反转
**kch123:**cashPnlの合計 -352万ドル、実際は+1140万ドル、符号が逆

**gmanas:**cashPnl 求和 -$264 万,排行榜实际 +$502 万,符号反转
**gmanas:**cashPnlの合計 -264万ドル、実際は+502万ドル、符号が逆

三个地址,两个盈亏符号直接反了。
この3つのアドレスのうち、2つは損益の符号が逆になっている。

原因:/positions 接口返回的 cashPnl 不包含已 closed/redeemed 的 realized PnL。赢了的仓位被自动赎回成 USDC 后,这个 position 就从 API 响应里消失了。留下来的是未结算的持仓——往往以浮亏为主。
原因:/positions APIが返すcashPnlには、既に決済・償還された実現損益が含まれていない。勝ったポジションは自動的にUSDCに償還され、そのポジションはAPIのレスポンスから消える。残るのは未決済のポジションで、多くは含み損の状態。

你以为在算全部盈亏,其实只拿到了未结算的部分。
あなたは全ての損益を計算していると思っているが、実際には未決済部分だけを取得している。

坑 2:makerPnl 字段与链上现金流不一致
落とし穴2:makerPnlフィールドとオンチェーンのキャッシュフローが一致しない

交易数据 JSONL 里有个 makerPnl(做市盈亏)字段,看名字就是给你算 PnL 用的。别信。
取引データのJSONLにはmakerPnl(マーケットメイカーの損益)というフィールドがあるが、名前からして損益計算用だと思うだろう。しかし信用してはいけない。

我在做市数据中观察到,SUM(makerPnl) 算出来的数字跟链上现金流核算结果差了一个数量级。具体倍数可能因场景不同而变化,但方向一致:makerPnl 的内部计算逻辑跟实际 USDC 流动对不上。
マーケットメイカーのデータを観察したところ、SUM(makerPnl)で計算した数字はオンチェーンのキャッシュフローの結果と1桁違う。具体的な倍率はシナリオによって異なるが、方向性は一致している:makerPnlの内部計算ロジックは実際のUSDCの流れと一致しない。

不管偏差多大,结论一样:不要用这个字段算 PnL。
どれだけ偏差が大きくても、結論は同じ:このフィールドを使って損益を計算してはいけない。

坑 3:不能按 txHash 单独去重
落とし穴3:txHash(トランザクションハッシュ)だけで重複除去してはいけない

这个最反直觉。
これは最も直感に反する。

同一个 txHash(交易哈希)出现了多条记录,正常人第一反应:重复数据,去重。
同じtxHashの取引が複数記録されている場合、普通の人は最初「重複データだ」と思い、除外する。

不能这么做。PM 的 CLOB(链上限价订单簿)在一笔链上交易里可以撮合多个 maker 订单,同一个 txHash 下的多条记录是真实的独立 fill。
しかし、それは間違い。PMのCLOB(オンチェーンの指値注文簿)は一つの取引内で複数のmaker注文を成立させることができ、同じtxHashの複数記録は実際には独立した埋め合わせ(fill)である。

我之前按 txHash + asset 去重,BUY 侧少算了 $133。上 Polygon 链验证,一个交易哈希里确实有多个独立的 USDC Transfer event,每条都对应一笔真实成交。
以前はtxHash +資産で重複除去していたが、BUY側の損益が133ドル少なくなっていた。Polygonチェーンで検証したところ、一つの取引ハッシュには複数のUSDC送金イベントがあり、それぞれが実際の取引に対応している。

结论:不能按 txHash alone 去重。要算 PnL,直接对 /activity 原始数据求和。
結論:txHashだけで重複除去してはいけない。損益を計算するには、/activityの生データを直接合計すべきだ。

坑 4:offset 翻页有天花板
落とし穴4:offsetによるページングには上限がある

/activity 接口翻页,用 offset(偏移量)?超过 3000 条直接 400 报错。文档里没写。
/activity APIのページングでoffset(オフセット)を使う?3000件を超えると直接400エラーになる。ドキュメントには記載されていない。

上面三个地址全部验证过:GET /activity?offset=3100 返回 HTTP 400,错误信息 max historical activity offset of 3000 exceeded。头部玩家动辄上万笔交易,3000 条根本不够。
上記の3つのアドレスで検証済み:GET /activity?offset=3100はHTTP 400を返し、「最大履歴アクティビティオフセットは3000を超えています」とエラー。トッププレイヤーは何万件もの取引を行っており、3000件では全然足りない。

用 end 参数(传上一页最后一条的时间戳 - 1)做游标翻页,没有上限。
endパラメータ(前ページの最後のタイムスタンプ-1)を使ったカーソルページングには上限がない。

坑 5:排行榜 PnL 口径差异
落とし穴5:ランキングのPnL計算基準の違い

你算完一个地址的 PnL,去排行榜一对比,差了一点。
あるアドレスの損益を計算し、ランキングと比較すると少し差が出る。

大多数情况下差距在 $10 以内(来自持仓市值的实时波动)。但如果差距明显更大,可能的原因包括:排行榜的聚合窗口、缓存刷新延迟、或者用户绑定了多个 proxy wallet。
ほとんどの場合、差は10ドル以内(ポジションの時価評価のリアルタイム変動による)。しかし、差が明らかに大きい場合、その原因としては、ランキングの集計ウィンドウ、キャッシュの更新遅延、またはユーザーが複数のプロキシウォレットを紐付けている可能性がある。

实测中,用现金流法算出的单地址 PnL 跟 lb-api 返回值高度一致。如果你的结果差距较大,先检查翻页是否完整(坑 4)、是否用了错误字段(坑 1-2)。
実測では、キャッシュフロー法で計算した単一アドレスの損益はlb-apiの返す値と非常に一致している。もし差が大きい場合は、まずページングが完全か(落とし穴4)、誤ったフィールドを使っていないか(落とし穴1-2)を確認。

正确做法
正しい方法

试了各种歪路之后,我验证下来最可靠的方法是 Data API 现金流汇总。不用任何预计算字段,直接从原始交易记录算资金进出。
いろいろ試行錯誤した結果、最も信頼できるのはData APIのキャッシュフローの集計だ。事前計算されたフィールドを使わず、生の取引記録から資金の出入りを直接計算する。

公式:
式:

PnL = SUM(TRADE where side=SELL) + SUM(REDEEM) + SUM(MERGE) + SUM(MAKER_REBATE) + SUM(REWARD) - SUM(TRADE where side=BUY) - SUM(SPLIT) + 持仓市值
PnL = 売り取引の合計 + 償還の合計 + マージの合計 + メイカーレベートの合計 + リワードの合計 - 買い取引の合計 - スプリットの合計 + ポジションの時価評価

· TRADE BUY:花 USDC 买 token(支出)
· TRADE BUY:USDCを使ってトークンを購入(支出)

· TRADE SELL:卖 token 回收 USDC(收入)
· TRADE SELL:トークンを売却してUSDCを回収(収入)

· REDEEM:赢的仓位赎回 USDC(收入)
· REDEEM:勝ったポジションのUSDC償還(収入)

· SPLIT:USDC 铸造成 token 对(支出)
· SPLIT:USDCをトークンペアに鋳造(支出)

· MERGE:token 对合并回 USDC(收入)
· MERGE:トークンペアをUSDCにマージ(収入)

· MAKER_REBATE:Maker 返佣(收入)
· MAKER_REBATE:メイカーのリベート(収入)

· REWARD:奖励/空投(收入)
· REWARD:報酬・エアドロップ(収入)

· 数据来源:
· データソース:

GET /activity?user=

&limit=500,用 end 翻页,全量拉取后按类型求和。
GET /activity?user=<アドレス>&limit=500で、endパラメータを使ってページングし、全データを取得後、タイプごとに合計。

· 持仓市值:
· ポジションの時価評価:

GET /positions?user=

,size × curPrice。
GET /positions?user=<アドレス>、size×現在価格。

· 交叉验证:
· クロスバリデーション:

拿计算结果跟 Polymarket 排行榜 API(lb-api.polymarket.com/profit?window=all&address=X)对比,差 <$10 就算过。差距来自持仓市值的实时波动。
計算結果をPolymarketのランキングAPI(lb-api.polymarket.com/profit?window=all&address=X)と比較し、差が10ドル未満なら合格とする。差はポジションの時価評価のリアルタイム変動による。

验证:排行榜前 15 实测
検証:ランキング上位15の実測

用现金流法算完后,拿排行榜 API 交叉验证:
キャッシュフロー法で計算した後、ランキングAPIとクロスバリデーション:

swisstony:现金流法 +$560.1 万,排行榜 +$560.1 万,差距 < $10
swisstony:キャッシュフロー法 +560万ドル、ランキング +560万ドル、差は10ドル未満

kch123:现金流法 +$1139.6 万,排行榜 +$1139.6 万,差距 < $10
kch123:キャッシュフロー法 +1139.6万ドル、ランキング +1139.6万ドル、差は10ドル未満

gmanas:现金流法 +$502.4 万,排行榜 +$502.4 万,差距 < $10
gmanas:キャッシュフロー法 +502.4万ドル、ランキング +502.4万ドル、差は10ドル未満

三个地址误差均在 $10 以内,差距来自持仓市值的实时波动。
3つのアドレスの誤差はすべて10ドル以内で、差はポジションの時価評価のリアルタイム変動による。

方法跑通之后,我拿它分析了上百个头部地址的真实盈亏。那是另一回事了。
この方法が動作することを確認した後、何百もの主要アドレスの実損益を分析した。これは別の話だ。

汇总
まとめ

SUM(cashPnl) from /positions → 不行,不含已结算盈利,符号可能反转
SUM(cashPnl) from /positions → 不可能、既に決済された利益を含まない、符号も逆になる可能性

makerPnl 字段求和 → 不行,与链上现金流不一致
makerPnlフィールドの合計 → 不可能、オンチェーンのキャッシュフローと一致しない

按 txHash 去重后计算 → 不行,$100+,删了真实 fill
txHashで重複除去 → 不可能、100ドル超、実際の埋め合わせを削除してしまう

offset 翻页 + 求和 → 不行,数据截断,>3000 报错
offsetページング +合計 → 不可能、データが切断される、3000超でエラー

Data API 现金流法 → 目前最可靠,<$10
Data APIのキャッシュフロー集計 → 現時点で最も信頼できる、差10ドル未満

做量化的第一步不是找 alpha。是先确认你算得对。
クオンツの第一歩はアルファを見つけることではなく、自分の計算が正しいかどうかを確認することだ。

以上全部来自实盘踩坑,不是理论推导。PM 的 API 随时可能调整行为,建议定期用排行榜 API 交叉验证你的计算结果。
これらはすべて実取引での失敗例であり、理論的な推論ではない。PMのAPIは随時挙動を変更する可能性があるため、定期的にランキングAPIと照合して計算結果を検証することを推奨する。

原文链接
原文リンク

点击了解律动BlockBeats 在招岗位
こちらをクリックして律動BlockBeatsの募集ポジションを確認

欢迎加入律动 BlockBeats 官方社群:
公式コミュニティに参加しませんか:

Telegram 订阅群:https://t.me/theblockbeats
Telegram購読グループ:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App
Telegram交流グループ:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia
Twitter公式アカウント:https://twitter.com/BlockBeatsAsia

免責事項:このページの情報は第三者から提供される場合があり、Gateの見解または意見を代表するものではありません。このページに表示される内容は参考情報のみであり、いかなる金融、投資、または法律上の助言を構成するものではありません。Gateは情報の正確性または完全性を保証せず、当該情報の利用に起因するいかなる損失についても責任を負いません。仮想資産への投資は高いリスクを伴い、大きな価格変動の影響を受けます。投資元本の全額を失う可能性があります。関連するリスクを十分に理解したうえで、ご自身の財務状況およびリスク許容度に基づき慎重に判断してください。詳細は免責事項をご参照ください。

関連記事

ポリマーケットとカルシーの通算取引量が4月に1,500億ドル(1500億ドル)を突破

The Blockによると、Polymarket と Kalshi の合計の累計取引高は4月に1500億ドルを超えました。この節目は、各プラットフォームの7か月連続で月次の最高記録が更新されていた流れが終わり、9月以来初めて、分野全体の取引活動が減少したことに伴って到来しました。Polymarketのグローバル・プラットフォーム s

GateNews19分前

A16z、金曜のコメント書簡でCFTCを支持、参入障壁として州の予測市場ルールを引用

The Blockによると、Andreessen Horowitzは金曜日にCFTCへ18ページの意見書を提出し、予測市場に対する連邦レベルの監督を支持するとともに、州レベルの規制が公正な市場アクセスへの障壁になっていると主張した。VC企業は、差し止め命令の書簡や提案された禁止が、市場参加者を黙らせるための不当な手段になり得るとしている。

GateNews53分前

Polymarket と Kalshi の累計取引高が 1,500 億ドルに到達:4 月の単月は 219 億で過去最高を更新

4月にPolymarketとKalshiの累計取引量が1,500億ドルを突破し、月間合計は219億ドル(Kalshi 134億、Polymarket 85億)で、合計の構成比は85%です。開業以来の累計は1,500億ドルに達し、YTDは4/20時点でKalshiが374.9億ドル、Polymarketが292.3億ドル、合計が667億ドルです。KalshiはCFTCの完全な規制監督と、スポーツベッティングに近いインターフェースで先行しています。一方でPolymarketは国際的な参加を開放し、USDCで決済でき、扱うテーマもより幅広いです。今後の注目点は、CFTCの解禁に関する交渉、Polymarketの資金調達、そしてKalshiのバリュエーション動向です。

ChainNewsAbmedia1時間前

A16z、CFTCを後押しし、州レベルの予測市場ルールが市場アクセスの障壁を生むと警告

The Blockによると、Andreessen Horowitzは金曜日に商品先物取引委員会(CFTC)へ18ページのコメントレターを提出し、予測市場に対する連邦レベルの監督を支持するとともに、州レベルでの取り締まり強化に反対した。A16zは、やめさせる(cease-and-desist)のレターや州の規制当局による提案された禁止措置(proposed bans)について主張した。

GateNews8時間前

ポリマーケットとカールシーは$150B の4月の通算取引量を合算している

The Blockのデータによると、PolymarketとKalshiの合算の取引累計額は4月に1500億ドルを超えました。しかし4月は、プラットフォームが9月に爆発的な成長を経験し始めて以来、セクター全体の取引活動における初めての月次下落となり、7か月連続の記録を終えることになりました。

CryptoFrontier12時間前

イーサリアムETFが$184M 4日連続の下落を記録

米国の上場投資信託(ETF)は、市場データによると4月30日までの4日連続で、合計1億8400万ドルの資金流出を計上した。地政学的な不透明感が米国株の上昇分を相殺したためだ。資金流出は、週の初めに始まった敗走が続く展開を延長しており、最大の単日での撤退は

CryptoFrontier12時間前
コメント
0/400
コメントなし