技术博客

对账体系:与交易所、登记公司、银行的三方对账

第 19 / 141 篇 · 2026-05-08 · secfin · 对账挂账差错处理

券商系统里的账有一个特殊的性质:每一笔客户资产的真相都不在券商自己手里。成交的真相在交易所,持仓的真相在中登,客户资金的银行侧真相在存管银行。券商的账本只是"自己以为的样子",每天晚上必须用三家的外部数据验证一遍——这就是三方对账。对账不是运维例行公事,是券商账实相符的法律义务(三方存管制度的核心监管要求)。这篇讲三方各自对什么、怎么对、不平怎么办。

三方各自对什么

对交易所:成交对账。 拿交易所的成交文件和本地当日成交流水逐笔核对(按合同号/成交编号匹配),核数量、价格、金额、费用。这一方通常最不容易不平——成交回报白天已经实时收过一遍,文件是同一数据的批量重发,对账更多是验证"回报通道没有丢数据"。

对中登:清算与持仓对账。 两块。一是清算对账:中登清算文件给出的每客户应收应付 vs 本地清算模块算出的结果,这是"我的清算算法对不对"的验证。二是股份余额对账:中登的股份余额文件给出每个股东代码下每只证券的登记数量,和本地持仓表逐户逐券比对。持仓对账是硬核对账——余额级别一分不差才算平。

对存管银行:资金对账。 券商台账上每个客户资金账户的余额汇总,应该等于银行侧"客户保证金汇总账户"的余额(加上在途调节项)。这条是三方存管制度的落点:监管要确认券商没有挪用客户保证金,手段就是强制每日比对券商台账总额和银行实际存款。

三方对账:本地账与三个外部真相源券商本地账成交/持仓/资金余额交易所成交文件(笔级)中国结算清算+股份余额文件存管银行汇总账户余额/流水成交逐笔核清算+持仓核总额+调节项核输出:对账结果表(平/不平 + 差异明细),不平挂"待查"科目,阻断日切

对账的算法:匹配、汇总、调节

技术上对账就是两个集合的比对,但要分清三个层级:

逐笔匹配(明细对账):按业务键(成交编号、委托号、流水号)把两边记录配成对,核字段。输出三类差异:本地有外部无(多记)、外部有本地无(漏记)、两边都有但字段不一致(错记)。逐笔对账的匹配键设计很讲究——交易所文件的成交编号天然唯一,最好对;银行流水要和本地存取款流水对,匹配键常常是(金额 + 时间窗口 + 渠道流水号)的组合,组合匹配就要处理"同金额多笔"的二义性。

汇总对账(余额对账):不比明细,只比汇总数——股份余额按(账户 × 证券),资金按账户或总额。汇总对账抓的是"明细对平了但状态推进错了"的问题:比如两笔流水各自都对,但一笔被重复落账,逐笔看看不出来,余额一定不平。

调节(reconciliation adjustment):资金对账里两边余额几乎从来"天然不平",因为存在合法的时间差——客户在银行端 16:30 存入,券商系统 17:00 截止接收,这笔钱银行有、券商今晚的台账没有。所以资金对账是调节表模型:

$$ \text{银行余额} + \text{在途存入} - \text{在途取出} = \text{券商台账总额} $$

合法的调节项必须在预设的枚举类型里(在途存款、在途取款、未达利息……),每一项要能回指具体业务单据。不在调节项枚举内的差异 = 差错,没有第四种解释。调节表是审计必查的东西,"其他"这个调节项如果常年有数,等于挂了一块"这里有鬼"的牌子。

不平怎么办:挂账与追平

对账不平的处理纪律是"先挂起来,再追平",对应两个会计动作:

挂账:差异金额计入专门的待查科目(如"待处理清算差异"),使总账形式上保持平衡。挂账不是掩盖问题,是把差异从"藏在正常科目里污染别人"隔离到一个显眼的、有余额就报警的科目里。待查科目的余额是运营健康度指标:正常应该接近零,持续挂大额说明有未解决的系统性差错。

追平:逐笔调查差异原因,做对应处理。常见原因与处置:

  • 时间差(在途类):不用处理,第二天自然平——但要确认它第二天真的平了,连续两天挂同一笔就是真差错;
  • 己方漏记/错记:补记或红冲蓝补(错账处理那篇的方法),本地账向外部权威数据看齐;
  • 外部文件差错:偶发,中登/银行会发修正文件,按修正文件重对;
  • 两边都"对"但口径不同:费率版本不一致、舍入规则不一致这类系统性偏差,改己方逻辑对齐权威口径。

追平有严格时效:当日差异原则上 T+1 内查清,跨周未平的差异要升级上报。EOD 总览里"对账不平不日切"的栅栏,执行时允许有限度的例外——差异已定位、确属在途类且金额在阈值内的,可以审批后放行日切,差异转入次日追平清单。这个例外通道必须审批留痕,否则栅栏形同虚设。

以谁为准:裁决原则

三方对账隐含一个根本问题:两边不一致时,谁是真相?原则是外部权威源优先:

  • 成交以交易所文件为准(交易所是撮合的发生地);
  • 持仓以中登为准(中登是法定登记机构,它登记多少客户就有多少,券商账错了改券商账);
  • 银行侧资金以银行流水为准(钱的物理位置在银行)。

这个原则推论很硬:对账差异的默认处理方向是改自己的账去贴外部数据,没有"让中登改数"这条路。所以本地的清算算法、费用算法、舍入规则,最终都要和中登口径逐分位对齐——对账体系的存在,实际上是把外部机构的算法口径"传染"成了本地实现的验收标准。

实现清单

  1. 对账结果落库到独立的对账表(对账类型 × 日期 × 账户 × 差异金额 × 状态),不平记录有生命周期:新建 → 定位中 → 已追平/已转差错;
  2. 匹配键和调节项枚举写进配置,不在代码里散落;
  3. 对账任务挂在 EOD 日切前的硬栅栏上,例外放行走审批;
  4. 待查科目余额进监控大盘,非零即告警;
  5. 历史对账数据长期保留(监管检查追溯以年计),查询性能靠日期分区。

三方对账是券商账务体系的外部锚点。内部的复式记账、试算平衡保证"账在自己体系内自洽",三方对账保证"自洽的账和外部世界的真相一致"。两层校验合起来,才构成"账实相符"这个监管要求的完整技术实现。