净值披露出去之前,估值表要过三层校验。这三层不是重复劳动——每层抓的错误类型完全不同,去掉任何一层,某一类错误就会漏到披露。
第一层:恒等式勾稽(自己跟自己算)
$$ \text{资产总计} - \text{负债总计} - \text{权益总计} = 0 $$
会计恒等式是复式记账的公理(全科目余额代数和恒为零,见《会计核算》篇的凭证设计),所以这一条永远应该成立,一分钱都不该差。差了就说明凭证生成或余额汇总有 bug——方向写反、漏了一张凭证、科目映射错了行。这是阻断项:恒等式不平,当天估值流程直接停线,不存在"先披露再查"。
第二层:纵向勾稽(今天和昨天算)
$$ \text{今日净值} = \text{昨日净值} + \text{今日损益} + \text{申赎净额影响} $$
损益从会计科目来:利息收入、公允价值变动损益、投资收益、费用。这个等式把净值变动拆成"市场给的"(估值变动、价差)和"运营动的"(申赎进出),两边独立算出来必须相等。这里抓的典型错误:某笔公允价值变动凭证没生成(漏了估值调整)、申赎确认的份额和金额不匹配(TA 数据接入错)。
实务上有个必须面对的细节:舍入噪声。等式两边经过各自的舍入链,差一分钱是常态不是事故。所以校验规则要带容差:$|\Delta| \le 0.05$ 元视为通过,超过才报警。容差是经验值,且要全局统一——某个产品偶尔差 0.03 通过、另一个产品差 0.03 报警,排查的人会疯。
第三层:横向勾稽(三套独立账对)
估值核算系统不是唯一知道真相的系统。同一事实有三份独立记录:
- 清算系统:钱券的实际变动(交收结果);
- TA 系统:份额的登记变动(申赎确认);
- 估值系统:科目余额与净值。
横向勾稽做的是:
$$ \text{估值持仓}_{i,t} \stackrel{?}{=} \text{估值持仓}_{i,t-1} + \text{清算变动}_{i,t}, \qquad \text{估值份额}_t \stackrel{?}{=} \text{TA 份额}_t $$
第一式对的是"数量",第二式对的是"份额"。数量和金额分开对——数量对不上是清算接入错了(漏文件、重复处理),金额对不上是价格错了(收盘价张冠李戴)。合在一起对,两类错误互相掩盖。
一分钱差异的定位路径
真出现差异时,排查按"先粗后细"的顺序,每步都有明确的判定:
- 定位科目:差异挂在哪个科目?股票市值差 → 价格或数量问题;清算备付金差 → 交收流水问题;应付管理费差 → 计提模板问题。
- 定位流水:科目内逐笔对。今日该科目发生了哪些业务流水、生成了哪些凭证,和清算明细逐笔勾——这一步自动化做,输出差异流水清单。
- 查环境与版本:流水全对上但金额差,剩下的是输入差异——行情快照版本(收盘价改过?)、估值价版本(中债发布过修订?)、汇率取的是哪个时点、费率模板今天换没换。
第 3 步有个高频坑值得单独说:估值价修订。第三方估值公司偶尔会重发某只债券的估值(发现异常成交影响拟合),如果估值系统取的是旧版、托管系统取的是新版,双方恒等式各自成立、横向对账差钱。处理规则要事先定死:估值价以首次发布为准还是以最新修订为准,全行业没有统一答案,但管理人和托管必须用同一个答案。
分级:不是所有差异都停线
勾稽结果分两级处理:
- 阻断:恒等式不平、持仓数量对不上、TA 份额对不上——数据正确性存疑,停线。
- 告警:纵向损益偏差在 0.05~1 元之间、某科目尾差放大——出异常清单挂工单,值班人员当天内处理,不阻断披露。
分级的依据是一句话:这个差异可能让披露净值错到影响客户决策吗? 一分钱尾差不会,持仓差 1000 股会。不分级的后果有两个极端:全阻断,运维半夜被一分钱叫醒,久而久之值班人员对报警麻木;全告警,真正的错误淹没在噪声里。勾稽体系的价值不在校验公式本身,而在让"该停的时候一定停,该走的时候一定要走"。