示意图:账户乙 ETH 的滚动余额线从 0.80 落到 0.05,在 10.12 跌破零到 −0.2000 并被圈出,到 10.20 仍为负,10.27 回到零以上
滚动余额在 10.12 第一次跌破零;最低点 −0.2000,就是那一行之前至少缺的数量。

余额算成负数,本身就是一条很准的线索。

一个币在卖出、提走之前必须先在账户里,账本里它跌破零,说明在变负的那一行之前,有一笔流入或期初没记上;少数时候是行的先后顺序排错了。变负的那一行通常没有错,错的是它前面缺了东西。

第一步不用找平台对账:按资产和账户分开,把记录从旧到新排好,逐行算出滚动余额,记下第一行变负的位置和整段里的最低值。下面用一组示例数据演示,账户叫“账户乙”,资产是 ETH,时间都按 UTC 记。

先算滚动余额:第一行负数在哪,最低到多少

滚动余额就是“到这一行为止账本认为有多少”:上一行的余额,加上这一行的流入,减去流出和单列的手续费。几个账户、几个币混在一张表里时,先按账户和资产拆开再算,否则一个账户的流入会盖住另一个账户的负数。

示例:账户乙 ETH 十月记录与滚动余额(模拟数据)
时间(UTC)记录数量变化滚动余额
10-01 00:00期初(九月对账单)+0.50000.5000
10-03 08:14买入+0.30000.8000
10-08 02:40提币−0.75000.0500
10-12 13:05卖出−0.2500−0.2000
10-14 09:31买入+0.1000−0.1000
10-20 17:48卖出−0.0500−0.1500
10-27 06:02买入+0.40000.2500

这张表能读出两件事。第一行负数在 10-12 13:05,漏掉的流入就发生在这一刻之前;整段最低值是 −0.2000,漏掉的流入至少有 0.2000 ETH。

“至少”很要紧。

最低值只给下限,真正缺的可能更多,后面没再跌破只是因为流出不够大。月末账本算出 0.2500,如果平台月末余额是 0.4500,差 0.2000,刚好等于下限,说明多半只缺这一笔。平台余额比 0.4500 还高,就还有别的缺口;那部分余额不会变负,要改用找出差额从哪天开始里的办法去定位。

记账软件遇到这种行也会报错。Koinly 的说明写得很直白:软件只能指出导致余额变负的那一笔,真正缺的那笔要拿平台的余额流水手工对照才找得到(见文末来源)。手工账本也一样,盯着变负的那一行改,方向就错了。

本期第一笔流出就变负:先查期初有没有记

负数从本期第一笔卖出或提币就开始,而且之后一直没有回到零以上,最常见的原因是期初数量没进账本,或者记成了 0。示例里如果漏了 10-01 那行 0.5000,第三行提币就会直接算出 −0.4500。

这种情况不要用月末余额倒推一个期初。

倒推出来的数会把本月别的漏记一起吞掉,账面看着平了,问题也被藏起来。期初缺证据时怎么记待核对项、去哪补带日期的余额,见账本期初余额找不到怎么办。

用了一段时间后才变负:流入在别的文件或别的账户里

示例就是这种:前几行都是正数,到 10-12 才跌破零,之后负了好几行。要找的是 10-12 13:05 之前、数量不少于 0.2000 的一笔流入。按下面的顺序翻,比从头读整个月快:

  • 同一平台另一个账户划进来的币,比如从资金账户、理财账户转回交易账户。账本只导了交易账户的文件时,这一笔不会出现(范围怎么定见月末账户范围,划转两端怎么配对见内部划转);
  • 兑换得来的币,记录在单独的兑换历史里,没进成交文件(见闪兑记录没有出现在现货文件里);
  • 从别的平台或自己的钱包充值进来,那一端的记录不在这本账里;
  • 奖励、返现、空投这类入账,常在单独的页面或文件里;
  • 同一资产换过代码,流入记在旧代码下,流出记在新代码下(见代币改名换代码后)。

示例里最后在资金账户的划转记录里找到一行:10-10 21:16 从资金账户划入 0.2000 ETH。补上之后,10-12 那行的滚动余额变成 0.0000,月末变成 0.4500。正好卖光,不再是负数。

反过来,也可能是流出被记了两次。分段导出的两个文件日期有重叠,同一笔卖出就会进账本两回(见怎样发现日期重叠)。查法是在第一行负数附近找时间、数量、订单号都相同的两行,确认是重复再删一行,删之前保留原文件。

负了一行、下一行又回正:先怀疑排序

只有一行是负数,紧接着的下一行就回到零以上,而且两行时间相同或只差几秒,多半不是漏记,而是排序把卖出排到了买入前面。几种来源:

  • 同一秒里先买后卖,表格按时间排序时把两行的先后打乱了;
  • 导出文件是新到旧排列,拼接时有一段没有倒过来;
  • 两份文件一份按 UTC、一份按本地时区,合并后同一天的记录前后错开(见CSV 时间与页面差一天)。

处理办法是给排序加一个稳定的次序:先按时间,时间相同的再按原文件里的行号,不同文件先统一时区再合并。重排之后负数消失,就是排序问题,不用补任何记录。

只负一点点,比如 −0.00000002

卖光或提光之后,余额停在一个极小的负数上,通常和流入无关,要看两处。一是手续费记了两次:成交数量已经是扣费后的净额,账本又单独扣了一次费(见手续费记在哪个币种里)。二是表格软件把长小数截短或改成了科学计数法,每行少一点,累积起来跌破零(见导出文件用表格打开后出了问题)。

别直接把它四舍五入成 0。先拿原始 CSV 用文本方式打开,对一下最后几位小数;确认是显示精度造成的,再在问题清单里写明“精度差,原文件数量为多少”。

借币和杠杆账户里的负数,另起一行记

用过杠杆或借币的话,借来的币是一笔负债,不是账户里多出来的资产。把它记成资产的负余额,会和上面这些漏记混在一起,分不清哪个负数是正常的。借入记一行负债、还款时冲掉它,资产那一栏就不该出现负数。这类账户的完整记法不在本文范围内。

原因没找到之前,账本里怎么标

不要补一笔数量刚好等于缺口、备注写着“调整”的流入。账面平了,以后谁也不知道那 0.2000 是从哪来的。在月末的问题清单里单开一行:

  • 账户别名与资产;
  • 第一行负数的时间、记录类型,以及整段最低值(缺口下限);
  • 负数的样子:从第一笔流出就开始、中途持续变负、只负一行,还是只负极小一点;
  • 已经翻过哪些文件,还剩哪些没翻;
  • 状态:待核实、已找到原因、已补记。

没查完的这一行跟着原月份进下个月的清单,不要在新月份里悄悄抹掉(清单和版本怎么管见月末对账文件改了好几版)。找到那笔真实记录后,补记的就是那一行本身,带上原始文件名和时间。

REKQO 编辑台

本站文章统一以 REKQO 编辑台署名。示例为明确标注的模拟数据;事实依据和更正方式可在编辑原则中查阅。 编辑原则