LabHub
学习 学习路径 课程

资本市场与清结算

市场时段支配着批处理排期

在 LabHub 中继续学习

一句话总结

证券系统的批处理时间表、日志格式和保留期限,并非由工程师自行选择,而是由市场运行时间与监管要求决定;不了解这一点,就会提出“能不能把这个批处理推迟 30 分钟”之类的建议。

概念图: 每一个时刻都与市场规则绑定。 · 集合竞价 · 订单接收负载和成交负载先在时间上分离,随后集中到同一个点爆发 · 没有协商余地

为什么需要这些知识

刚进入证券公司,第一次看到批处理时间表时,会觉得安排得异常密集:08:30、08:40、09:00、15:20、15:30、15:40 和 16:00 集中了大量任务,中间却很空。提出均匀分摊服务器负载的建议很自然,但这种建议无法实行,原因在于:

每一个时刻都与市场规则绑定。

08:30~09:00  장 시작 동시호가. 주문을 받되 체결은 하지 않는다
09:00        정규장 개시. 첫 체결이 쏟아진다
15:20~15:30  장 마감 동시호가. 종가를 정하는 구간
15:30        정규장 종료
15:40~16:00  시간외 종가 매매
장 종료 후    청산·결제 지시, 잔고 확정, 보고 파일 생성

集合竞价尤其重要。这一时段持续接收订单,但不会立刻成交,而是先集中起来,到截止时刻再按一个价格统一撮合。从系统角度看,这意味着订单接收负载和成交负载先在时间上分离,随后集中到同一个点爆发。在 09:00:00 和 15:30:00,每秒处理量会升至平时的数十倍。如果按平均负载规划容量,系统就会在这两个时点崩溃。

而且,这些时刻没有协商余地。必须在 15:30 确定的收盘价,如果到 15:31 才确定,当天所有衍生品的结算价都会出错。这正是“把批处理推迟 30 分钟”无法实行的原因。

它是如何运作的

**熔断机制和波动性中断机制(VI)**从系统负载角度看尤其棘手。当指数跌幅超过一定范围时,交易会暂停数分钟;当个股价格剧烈波动时,则只将该股票短暂切换为单一价格撮合。

从负载角度看,情况如下:暂停期间订单仍会持续进入并堆积在队列中,到恢复时刻一次性释放。数倍于日常峰值的负载会集中在一个点爆发,而且无法预测这一时点。 因此,证券系统的容量规划通常按“正常峰值的若干倍”预留余量。如果把这部分余量视为浪费并加以削减,熔断发生的那一天就会付出代价。

订单记录保留义务。 资本市场相关法律及下位规定要求,订单和成交记录必须保存规定年限,通常为 10 年。它对系统造成的影响并不只是“占用大量磁盘”。

원본 그대로 보존해야 한다   가공한 것으로 대체할 수 없다. 그래서
                            정규화된 테이블과 원본 로그가 둘 다 남는다
변경 이력이 남아야 한다     덮어쓰기가 아니라 append 로 쌓는 구조가 된다
조회 가능해야 한다          분쟁이나 조사에서 특정 주문을 꺼내야 하므로
                            아카이브에도 색인이 필요하다

这在调查时反而成为优势。在其他领域可能早已删除的原始数据,在证券系统中通常仍然保留。之所以能执行“不要相信状态字段,应从原始记录重新构建”的建议,正是得益于这项保留义务。

市场监察(异常交易检测)决定日志格式。 监察系统会检查特定账户是否反复提交又撤销某只股票的报价,或是否在接近收盘时集中下单。要分析这些模式,被撤销的订单和未成交的报价也必须全部保留。 因此,“反正已经撤单,就从日志中删除”的优化在证券领域无法采用。账户标识符、订单时间和修改历史之所以成为必填字段,也是源于监察要求。

在实际工作中会是什么样

某机构为了降低订单日志的保留成本,曾制定政策,在 90 天后删除未成交且已撤销的订单。审计指出问题后,政策虽然撤销了,但已经删除的数据无法恢复。在监管领域实施不可逆的优化之前,必须先咨询合规部门。 这不是工程师能够独自作出的决定。

另外,对接海外交易所时,各市场的时区和休市日都不同。 韩国休市时美国市场可能开市,反之亦然。这里常见的事故是按服务器本地时区切分日期。若以 UTC 午夜为一天的边界,就会与韩国市场的自然日错位,收盘后的成交可能进入次日批处理。当天和次日的汇总都会出错,但总和仍然一致,因此连对账也发现不了。日期边界必须按各市场的营业日明确规定。

监管要求转化为系统需求的位置

资本市场监管文件虽然篇幅很长,落到系统层面后,通常会转化为几类反复出现的要求。了解这些形式后,即使出现新规,也知道该提出哪些问题。

第一,记录不可变。 订单、修改、撤销和成交都必须连同时间一并保留,日后不得更改。因此,数据结构不是更新现有记录,而是不断追加记录,并且必须能够重现“当时知道什么”。

第二,时间准确度。 不同规定要求的精度不同,例如毫秒或微秒。要按这种精度记录,时钟同步本身就会成为系统要求,而且同步失效的时间区间也必须记录。

第三,可重构性。 必须能够重新构建特定时点的订单簿和订单状态。正因如此,快照与增量数据需要一并保存,而保留期限会直接转化为存储成本。

第四,权限与职责分离。 下单人员与能够修改订单记录的人员必须不同。如果开发人员可以直接连接生产数据库,这件事本身就会成为审计问题。

第五,报告期限。 必须在规定时间之前,以规定格式完成报送;延迟或错误本身就是违规。因此,让人员立即获知报送批处理失败的机制,与故障响应同样重要。

开发人员要问的三个问题始终相同: 这个值的基准时刻是什么、依据哪些输入计算、重新计算能否得到相同结果。只要能回答这三个问题,其余事项就可以通过与合规负责人的沟通解决。

最后,监管合规不是功能,而是约束。 如果事后再添加,就必须改变系统结构。设计新功能时,养成先确认记录、时间和复现这三项要求的习惯,能够降低后续成本。

下一次测验要确认什么

你将确认集合竞价对负载的影响、熔断恢复时队列如何被清空、保留义务在数据结构中留下的痕迹、市场监察如何决定日志格式,以及如何处理时区与营业日边界。