持仓成本
合约平仓后盈亏对不上?已实现盈亏、手续费和资金费怎么分开核对
按平仓价减开仓价算出的盈利,和合约钱包实际多出来的钱常常差一截。差额通常来自开平仓各收一次的手续费和持仓期间的资金费用。这篇按币安官方的钱包余额公式,用算例把一笔仓位拆成已实现盈亏、手续费、资金费用四行,并给出分批平仓和对不上时的排查顺序。
平仓后,按“平仓价减开仓价再乘数量”算出来的盈利,常常和合约钱包实际多出来的钱对不上。多数时候账户没有少给钱,差额来自另外两类记录:开仓和平仓各收一次的交易手续费,以及持仓期间碰上结算时点的资金费用。把这三类记录分开核,差额就能逐项对上。
本文以币安 U 本位永续合约为例说明核对方法。文中所有价格、费率和金额都是教学假设,不是实际仓位、当前费率或收益展示。永续合约涉及杠杆和强制平仓风险,核账不能代替风险管理。
钱包余额由哪几笔记录组成
币安帮助中心在“如何查看合约钱包余额”一文中给出了合约钱包余额的构成:
钱包余额 = 净转账总额 + 已实现盈利总额 + 净资金费用总额 − 手续费总额

这条公式说明了核账的关键:在钱包余额的口径里,已实现盈利、资金费用和手续费是三项分开记账的数字。价格涨跌带来的盈亏记在已实现盈利里,手续费单独扣,资金费用单独收付。只拿价差算出来的数字去对钱包变化,自然会差出手续费和资金费用这两块。
同一篇说明还写明,保证金余额等于钱包余额加未实现盈亏。仓位没平之前,页面上跳动的浮动盈亏属于未实现盈亏,不在钱包余额里。币安“如何计算合约盈亏”一文也写明:“未实现盈亏按标记价格计算,已实现盈亏则按最新价计算。”所以不要拿平仓前截下的浮盈数字,去对平仓后的钱包变化。
| 记录类型 | 什么时候产生 | 怎么算 | 方向 |
|---|---|---|---|
| 已实现盈亏 | 平仓(含部分平仓)成交时 | (平仓成交价 − 开仓均价)× 平仓数量,做空方向相反 | 可正可负 |
| 交易手续费 | 每一笔开仓、平仓成交时 | 成交名义价值 × 该笔成交适用的费率 | 通常为支出 |
| 资金费用 | 结算时点仍持有仓位时 | 按结算时的仓位名义价值和资金费率计算 | 可能支付,也可能收取 |
| 强平清算费 | 仓位被强制平仓时 | 按平台强平规则扣除 | 支出 |
一笔多单从开到平,把账拆成四行
假设在某个 XCOIN/USDT U 本位永续合约上做多:
- 以 2,000 USDT 开多 0.5 枚,这笔成交是吃单,教学假设费率 0.05%;
- 持仓期间经过一次资金结算,教学假设这次支付资金费用 0.40 USDT;
- 之后以 2,080 USDT 平掉全部 0.5 枚,这笔成交是挂单,教学假设费率 0.02%。
| 项目 | 计算 | 金额(USDT) |
|---|---|---|
| 已实现盈亏 | (2,080 − 2,000) × 0.5 | +40.000 |
| 开仓手续费 | 2,000 × 0.5 × 0.05% = 1,000 × 0.05% | −0.500 |
| 平仓手续费 | 2,080 × 0.5 × 0.02% = 1,040 × 0.02% | −0.208 |
| 资金费用 | 结算记录中的实际金额(此处为假设值) | −0.400 |
| 合约钱包净变化 | 以上四项相加 | +38.892 |
按价差算的 40 USDT 没有错,它就是账户里记的已实现盈亏;钱包实际只多了 38.892 USDT,少掉的 1.108 USDT 正好是两笔手续费和一次资金费用。
这个例子里有三处容易漏算:
- 开仓那笔手续费。它在开仓时就扣了,不在平仓那一刻,只看平仓当天的记录会漏掉它。
- 两笔成交的费率不同。手续费按每一笔成交是挂单还是吃单分别计算,不是整张订单用一个费率。现货订单也是同样的道理,逐笔核对的方法可以参考限价单分几次成交时的逐笔手续费账表。
- 资金费用不看开仓价。它按结算时点的仓位和最终费率收付,和开仓价、平仓价都没有直接关系。资金费用对不上时怎么还原每一次结算,可以看永续合约资金费的核对方法。
分几次平仓,已实现盈亏怎么对
分批平仓时,每一笔平仓成交都会单独产生一笔已实现盈亏和一笔手续费。核对时按成交逐笔列出来,再合计:
| 平仓成交 | 数量 | 成交价 | 已实现盈亏(开仓均价 2,000) | 手续费(教学假设 0.05%) |
|---|---|---|---|---|
| 第 1 笔 | 0.2 | 2,050 | (2,050 − 2,000) × 0.2 = +10.00 | 410 × 0.05% = 0.205 |
| 第 2 笔 | 0.3 | 1,990 | (1,990 − 2,000) × 0.3 = −3.00 | 597 × 0.05% = 0.2985 |
| 合计 | 0.5 | — | +7.00 | 0.5035 |
两点要注意:
- 公式里用的是开仓均价。如果开仓也分了几笔,或者中途加过仓,先按成交数量加权算出均价,再去核平仓盈亏。
- 中途加仓会改变开仓均价。加仓前已经平掉的部分,用的是当时的均价;加仓后再平的部分,用的是新的均价。按时间顺序排好开仓、加仓、平仓的每一笔成交,再往下算。
账户里该看哪几种记录
合约交易界面下方的仓位、历史委托和成交历史,适合看价格和数量;要把钱包余额的变化逐笔对上,更适合看合约账户的资金流水(交易历史/资金记录,不同版本的界面名称可能不同)。流水会按类型分别列出已实现盈亏、手续费、资金费用和划转等记录,和上面的余额公式一一对应。币安开发者文档中的账户收益记录接口,也把这些记录分成 REALIZED_PNL(已实现盈亏)、COMMISSION(手续费)、FUNDING_FEE(资金费用)、TRANSFER(划转)等类型。
核对一笔仓位时,建议按这个顺序:
- 在成交历史里找出这笔仓位所有的开仓和平仓成交,记下数量、成交价、挂单或吃单、手续费和扣费币种;
- 用开仓均价和每笔平仓成交价,算出每笔已实现盈亏,再和资金流水里的已实现盈亏逐笔比对;
- 在资金流水里筛出持仓期间的资金费用记录,确认次数和金额;
- 把已实现盈亏、手续费、资金费用相加,和这段时间合约钱包余额的变化比对,中间如有划转要单独扣除。
仓位面板或仓位历史里显示的“盈亏”,可能已经扣除了手续费或资金费用,也可能没有。币安公开的帮助页面没有对每个面板字段的口径逐一说明,界面也可能调整。所以看到一个汇总数字对不上时,先用资金流水的三类明细加总,确认这个汇总数字到底包含了哪几项,不要直接判断为少结算。
差额还对不上时,先排除这几种情况
| 现象 | 可能原因 | 怎么核 |
|---|---|---|
| 差额大约等于一两笔手续费 | 漏算了开仓手续费,或把平仓费率套到了开仓那笔 | 在成交历史里逐笔看手续费 |
| 差额有正有负、金额不大 | 持仓期间经过了一次或多次资金结算 | 在资金流水里筛资金费用,看结算时间 |
| 盈亏比按价差算的大很多或小很多 | 分批开仓、加仓后开仓均价变了 | 按时间重排成交,重新算加权均价 |
| 手续费合计和按 USDT 算的对不上 | 部分手续费以其他资产扣除 | 按扣费币种分别合计,不要直接相加 |
| 钱包少了一大块,流水里出现强平相关记录 | 仓位被强制平仓,产生强平清算费 | 查看流水中的强平相关记录 |
| “今日盈亏”和单个仓位盈亏不同 | 盈亏分析按整个账户钱包余额的变化计算 | 见下方说明 |
币安盈亏分析页面的说明中,合约的时段盈亏按“期末钱包余额 − 期初钱包余额 − 净流入”计算。它统计的是整个合约账户在这段时间的变化,同一时段内其他仓位的盈亏、所有手续费和资金费用都会算进去,不能拿来和单个仓位的平仓盈亏一对一比较。
现货账户和合约账户是两套记账方式:现货没有资金费用,买卖手续费和到账数量的核法可以参考买币手续费从买入算到卖出的完整账表。
参考资料
以下币安官方资料于 2026-09-23 查阅。实际费率、字段名称和界面位置以你账户中的记录为准。
作者:Tradecost 编辑部