PnL 口径

币安已实现盈亏是否包含手续费?

不包含。币安(Binance)成交历史里的 Realized PnL 只描述价格结果,交易手续费和资金费用作为独立账单类型记录在资金流水中,需要另行扣除才是账户里实际增加的金额。

IENEO · 最后核验 2026-08-31 · 约 8 分钟 · 依据 2 项交易所官方来源 · 核验与更正方法

为什么不能给所有 PnL 字段一个固定答案

交易平台的持仓页、成交历史、资金流水和接口可能服务于不同用途。即使都出现 PnL 字样,也可能分别表示未实现盈亏、平仓盈亏、账单收入类型或汇总后的账户结果。

产品版本、账户模式和导出格式变化也可能调整列名。因此,与其依赖一个笼统结论,不如查看同一文件是否同时提供 Commission、Funding Fee 或独立账单类型。

如何判断手续费是否已经单列

先选取一小段只有一两笔成交的时间范围,记录页面平仓盈亏、成交手续费和资金流水变化。若 Realized PnL 与平仓价格差对应,而 Commission 另有记录,就应分列计算。

如果账单中还有返佣、手续费抵扣或其他币种费用,也应作为独立项目保留;不要为了让余额对上而随意把它们并入 Realized PnL。

合并两份文件时怎样避免重复扣费

成交文件可能包含每次 fill 的手续费,资金流水又可能包含对应的 Commission 账单。合并时应优先使用稳定的交易标识、账单标识、币种、金额和毫秒时间进行匹配。

若没有可靠标识,不应自动把相同金额全部视为重复。更安全的做法是标记为待核对,并降低结果可信度。

计算口径

避免口径歧义的重构方式

重构净结果 = Realized PnL − Commission + Funding Fee 净额 − 其他费用

Funding Fee 净额为收入减支出;若导出文件用正负号表达方向,应保留原始符号后再求和。

数字案例

同一笔交易的两个数字

Realized PnL 为 300 USDT,Commission 为 78 USDT,Funding Fee 净支出 24 USDT,不计其他成本时重构净结果为 198 USDT。

本文所有金额与费率都是用于说明计算方法的匿名示例,不代表真实账户,也不代表当前费率。你的实际费率取决于交易所公开费率表和你自己的账户等级,请以官方页面为准。

字段级核对

币安账单里,哪些字段属于费用,哪些属于盈亏

币安 U 本位合约的导出文件把价格结果和费用拆在不同的记录类型里。把它们混成一列,就会得出“已实现盈亏已经扣过手续费”的错误结论。

账单类型对应的英文字段在净结果中的处理
已实现盈亏REALIZED_PNL价格层面的结果,尚未扣除任何费用
交易手续费COMMISSION开仓与平仓分别发生,需要整段求和后扣除
资金费用FUNDING_FEE按结算事件单独计入,正负号都要保留
手续费返还COMMISSION_REBATE冲减手续费,不要计入价格盈亏
保险与清算费INSURANCE_CLEAR只在强平时出现,属于费用而非盈亏
资金划转TRANSFER改变余额但不属于交易结果,核对时单列
完整算例

同一笔交易,在两个文件里为什么是两个数字

假设在币安 U 本位合约开多 1 BTC,开仓成交额 60,000 USDT,平仓成交额 60,300 USDT,全程吃单。

成交历史(Trade History)里,这笔交易的 Realized PnL 显示为 +300 USDT。这是价格差的结果,不包含手续费。

资金流水(Transaction History)里,同一时间范围会额外出现两条 COMMISSION 记录,以及持仓跨过结算时点产生的 FUNDING_FEE 记录。只有把这些记录一并扣除,才是这笔交易真正留在账户里的钱。

  1. 已实现盈亏(REALIZED_PNL):+300 USDT
  2. 开仓手续费(COMMISSION):−30 USDT
  3. 平仓手续费(COMMISSION):−30.15 USDT
  4. 资金费用(FUNDING_FEE)净支出:−12 USDT
  5. 账单净结果:300 − 30 − 30.15 − 12 = 227.85 USDT
如何解释结果

成交历史里的 +300 和账户实际增加的 227.85 都不是错的,它们只是两个口径。对外说“这笔赚了多少”时,应该用后者。

完成前检查

确认这 5 项,再说这笔赚了多少

  • 已实现盈亏取自成交历史,费用取自资金流水
  • 开仓和平仓两次手续费都已计入
  • COMMISSION_REBATE 冲减在手续费一侧
  • FUNDING_FEE 保留正负号,没有被取绝对值
  • TRANSFER、充值和提现已排除在交易结果之外

按这三步分离盈亏与费用

  1. 1

    确认导出文件的产品类型和时区

    确认是 USDⓈ-M、COIN-M 还是其他产品,并记录导出时使用的时区。

  2. 2

    按收入类型分别汇总盈亏、手续费和资金费用

    保留原始正负号和费用币种,先按类型求和,再统一换算。

  3. 3

    用余额变化抽样复核重构结果

    抽取一个交易较少的日期,将重构结果与账户流水逐项对照。

混淆两个文件时最常见的错误

  • 把 Unrealized PnL 当成已经进入余额的收益。
  • 看到 Realized PnL 就默认已扣除 Commission 和 Funding Fee。
  • 把同一笔 Commission 在成交文件与资金流水中各扣一次。
  • 把资金流水里的 REALIZED_PNL 和成交历史里的已实现盈亏相加,等于把同一笔结果算了两遍。

字段命名变化带来的边界

  • 接口字段可能随版本更新
  • 返佣和抵扣可能单独入账
  • 税务口径不等于交易平台账单口径
  • 币安不同时期导出的字段名称并不完全一致,旧文件需要按含义而非列名匹配

常见问题

Realized PnL 一定不含手续费吗?

不能跨页面和导出格式一概而论。应检查同一数据源是否把 Commission、Funding Fee 单独列出,并用一小段账单做余额核对。

返佣应该从手续费中直接扣除吗?

如果返佣以独立账单入账,建议单独列为费用返还,不要改写原始手续费。这样能保留毛手续费与净费用两个口径。

没有订单 ID 还能去重吗?

可以结合时间、合约、金额、币种和记录类型做保守匹配,但无法确认时应保留不确定性,不能为了得到一个整齐数字强行删除记录。

官方来源

继续核对其他盈亏口径问题

想核对自己的账单?原始文件只在浏览器内解析,不需要 API Key。先看如何导出账单

导入账单,生成费用回放