选自《交易技术前沿》第51期
机构交易接入中台建设实践
胡长春,单兴邦,高春蕾,李沁,黄赛,何少锋东方证券股份有限公司 系统运行总部 上海E-mail :huchangchun@orientse随着东方证券机构交易服务的深入发展和东方雨燕极速交易系统的日趋完善,为支持各类机构交易终端以非极速的方式接入到东方雨燕极速交易系统、集中交易系统、新一代业务核心系统、及其他第三方快速交易系统,并支持客户在不同交易系统中切换,以及为构建机构交易生态圈打好基础,需要建设屏蔽核心交易系统差异性的自主可控的机构交易接入中台。本文将重点介绍东方证券机构交易接入中台系统建设方案和实践经验。
关键字:机构交易、中台、API网关、gRPC、微服务架构
1.引言
由东方证券和东证期货联合自主研发的东方雨燕OST极速交易系统上线平稳运行,大量对交易速度有极致要求的量化私募、量化策略及做市交易型客户、量化社区客户、银行/保险/公募/期货等持牌机构量化业务客户通过类CTP的API接口对接进行证券交易,日均交易量百亿规模。随着东方证券机构交易生态圈逐渐完善以及OST极速交易系统在量化客户中口碑稳步提升,除极速量化客户外,越来越多高净值客户及活跃交易型客户均希望通过原有机构交易终端在OST极速交易系统中进行交易。其次为夯实财富管理业务基石,快速响应公司财富管理业务转型发展需要,提升公司核心业务系统的连续服务能力,保障安全稳定,东方证券开始构建统一技术架构的新一代核心业务系统逐步替换原有集中交易系统。另外为进一步落实以量化交易为重点的机构经纪业务的定位,为客户提供从策略生成到交易执行、软硬件配置等一系列优化支持服务,在量化交易领域中的保持领先优势,满足特定客户需求可能会进一步引入FPGA极速交易系统。
为支持机构交易终端接入OST极速交易系统、集中交易系统、新一代核心业务系统、以及可能后续可能引入的FPGA极速交易系统等第三方快速交易系统,机构交易接入中台兼容不同交易系统接口协议,为机构交易终端提供统一接入,屏蔽后台复杂性和差异性。机构交易终端对接中台后,客户在不同交易系统切换,机构交易终端系统无需重新对接开发,通过验收测试后即可投入生产,极大提高机构交易终端接入效率。
2.背景
2.1 交易系统
2.1.1普通交易系统
普通交易系统即集中交易系统为证券公司的核心业务系统,定位于面向所有普通客户进行全部场内和部分场外交易。系统实现的目标是稳定、容量大并支持全业务,技术上主要基于传统的关系型数据库模式,交易延时较高,并发有一定限制。
2.1.2快速交易系统
快速交易系统目标客户为有快速交易需求的量化客户;系统通常追求高性能、高可靠性、容量可扩展,并支持场内大部分业务;技术上主要采用内存交易技术,部分采用硬件加速机制。为满足客户上海深圳报盘极致速度的要求,通常支持灵活的双节点,在上海和深圳分别部署,支持同一投资者的两个证券账户两地就近报盘。
2.2 客户交易渠道
2.2.1 普通散户
速度不敏感,由于通过纯手工操作,对百毫秒级别的延迟感知不明显。
2.2.2 极速量化客户
极速量化客户通常托管系统对接快速交易系统进行场内竞价交易。托管系统主要指极速量化客户自建的一套系统,该系统通过API对接证券公司快速交易系统,并由证券公司向客户购买后部署在证券公司机房,仅提供给该客户使用。客户对交易速度非常敏感,毫秒级延迟可能影响程序化交易的收益,通常追求微秒级延迟。客户除主要通过托管系统进行交易外,通常还需要一套备用机构交易终端,满足客户除托管系统交易外的全业务交易需求。
2.2.3 机构交易终端客户
机构交易终端客户指通过机构交易终端进行交易的客户,主要包括使用PB交易终端,如迅投PB、恒生PB客户、卡方、宇量策略平台,和机构PC交易终端,如机构版、通达信机构版、日内快速交易终端等的客户。机构交易终端客户中的交易型客户通常对交易速度较敏感,通常追求毫秒级延迟,将客户从普通交易系统迁移至快速交易系统,能提升客户交易体验。
3.方案
3.1 总体方案
机构交易接入中台核心需求为提供成熟的、符合竞价交易速度、稳定性、连续性要求的统一入口,承载机构交易统一协议,实现路由控制、负载均衡、安全控制、流量控制、访问控制、运维支持等功能。
图1 机构交易接入中台总体架构图
中台基于多套交易系统提供的接口协议定义机构交易统一协议,实现C++、Java、Python语言的API封装机构交易统一协议;基于开源Netty开发实现API网关支持机构交易终端系统接入,通过会话管控保证安全和访问控制并通过gRPC协议实现API网关与交易系统适配模块之间内部通讯;并基于微服务gRPC框架实现交易系统适配模块,负责将机构交易统一协议适配转换为各种交易系统的接口协议。另外为简化系统复杂度并提高系统可用性,引入开源Nginx服务器提供具体路由控制、负载均衡、流量控制能力;为支持主推送方式接入,引入开源Kafka消息中间件存储回报消息,由API网关通过订阅Kafka获取和缓存回报消息并通过TCP协议推送至机构交易终端。
3.2 API与gRPC选择
关于机构交易终端系统接入方式,支持类CTP API方式还是采用公司业务中台广泛推广的gRPC接口,在比较API方式和gRPC接口的特点后,考虑到主流PB交易终端系统的对接习惯,以及gRPC接口在支持互联网接入情况下可能遭遇非法终端接入的风险,最终选择支持API方式。
3.3 API网关请求处理过程
为减少中心节点API网关的复杂度,提高系统稳定性,API网关采用基于机构交易统一协议的gRPC接口调用交易系统适配模块,机构交易统一协议和交易系统接口协议的适配转换由交易系统适配模块完成,API网关负责解析通讯报文、校验报文入参、校验会话、并根据业务功能、客户、请求参数确定路由信息,转发请求和处理响应。
图2 API网关请求处理过程
3.4 API网关设计
API网关主要内容包括API消息协议、API网关初始化、会话管理、路由管理、订阅推送等功能。
API消息协议TCP报文内容结构包括消息头、消息体、校验位三部分。消息头包括请求类型、请求编号、业务消息长度、压缩标志、最后报文标志、API版本等内容;消息体包括业务消息;校验位为检查报文内容有效性。
API网关启动初始化过程中,从管理数据库获取资金账户白名单、以及关联的IP、MAC信息,并通过调用交易系统适配模块gRPC服务获取各交易系统节点支持的资金账户和市场。
机构交易终端在与API网关建立TCP连接后,调用登录接口认证建立会话。建立会话过程主要包括资金账户白名单、终端IP、MAC信息校验,以及交易密码校验,校验通过后建立会话。API网关管理会话相关的TCP连接、资金账户、消息订阅状态、终端信息等信息。在TCP连接断开时,API网关注销会话并清理会话相关内容。
API网关根据请求资金账户和市场代码,确定客户竞价交易相关请求对应的交易系统节点。针对快速交易系统不支持的业务,确定客户对应的普通交易系统。通过在发往Nginx服务器的gRPC请求元数据中加入交易系统类型信息,由Nginx服务器将请求转发至对应交易系统适配模块。
3.5 交易系统适配模块
东方证券制定了企业技术架构向以微服务为核心的现代化架构转型并选择了具有跨语言特性的 gRPC 为核心框架,并在其基础之上新增服务治理特性和星辰服务治理平台,优化改进服务质量。综合考虑gRPC协议多路复用、高效编解码方式、框架成熟度以及复用公司服务治理平台提供的监控和告警等功能,交易系统适配模块采用gRPC接口方式实现机构交易统一协议,供API网关内部调用。基于机构交易统一协议,快速交易系统适配模块提供给其支持的竞价交易相关的接口,普通交易系统适配模块基本涵盖机构交易统一协议定义的全部接口。
在引入新交易系统的情况下,通过新增交易系统适配模块,并在API网关和Nginx调整路由配置,即可支持原有机构交易终端接入新的交易系统。
4.实践
4.1 统一协议
不同系统对于新股申购、ETF申赎等业务功能接口提供方式,资金账户、市场代码等业务字段命名,委托市价、信用交易相关参数的组成,市场代码、委托状态字段取值均可能不同。
机构交易统一协议主要以快速交易系统提供的接口为基础,补充机构交易终端支持客户全业务交易时所需证券交易接口。其中针对普通账户,支持普通买卖、ETF申赎、国债逆回购、新股申购、配股配债、转股回售、港股通业务;针对信用账户,提供担保品买卖、信用交易、非交易委托、新股申购业务;针对股票期权账户,提供买入开仓、卖出平仓、卖出开仓、买入平仓、备兑开仓、备兑平仓等业务。
机构交易统一协议主要包括接口清单、接口出入参字段、字典字段取值三部分内容。机构交易统一协议接口73个,其中同时支持普通账户、信用账户、期权账户的接口27个;同时支持普通账户、信用账户的接口37个;接口出入参字段413个,其中浮点型字段170个,字符类型114个,整型字段76个,长整型字段53个,入参字段个;字典字段41个,包括委托状态、委托方式、委托属性、市场代码等。
4.2 全业务支持
由于快速交易系统主要支持竞价交易业务如普通买卖、ETF申赎、国债逆回购、信用交易、股票期权交易等,而对速度要求不高的业务如新股申购、配股配债、转股回售、港股通业务由普通交易系统支持。统一协议中将委托接口主要拆分为竞价委托和普通交易系统委托。
关于竞价委托,API网关根据客户竞价交易所在的交易系统,将请求转发至对应的交易系统适配模块。而针对有的交易系统的竞价委托业务,如市价委托、限价委托、ETF申购、ETF赎回,由不同的接口支持,交易系统适配模块根据统一协议确定请求具体业务类型,完成接口字段和字典字段的适配,调用交易系统对应的API。
关于普通交易系统委托,由于部分快速交易系统也支持如新股申购、配股配债、转股等业务,API网关根据统一协议中普通交易系统委托的委托属性判断业务类型,并根据客户该业务所在的交易系统,将请求转发至对应的交易系统适配模块。
4.3 双节点客户支持
对于沪市深市证券账户分别在上海和深圳快速交易系统节点的客户,称为双节点客户。通常为追求报盘极致速度,这类客户通过托管系统进行交易。部分交易型的机构交易终端客户也为双节点客户。针对双节点客户交易、资金
中台通过API网关路由和对查询结果进行合并汇总,实现单点接入的方式支持双节点客户。对于客户的资金、持仓、委托流水、成交流水在不同节点的情况,API网关分别将请求转发至对应交易系统节点,并将查询结果进行合并汇总。对于交易类请求,API网关根据入参中市场代码,将请求转发该市场对应交易系统节点。为兼容传统方案,API网关通过侦听不同的端口分别表示对应上海、深圳、全市场交易系统节点。如果终端系统连接上海或深圳交易系统节点对应的端口,则API网关则将请求转发至对应交易系统节点,不进行双节点消息的合并汇总处理。
4.4 消息订阅
为支持主推送模式接入,避免机构交易终端定时查询的消息延迟,中台支持消息订阅,当委托状态发生变化或有成交产生时,主动推送消息到机构交易终端。通常机构交易终端系统启动时以“从本交易日开始重传消息”的订阅模式接收全量消息,在发生网络异常情况下以“从上次收到点续传消息”的订阅模式接收后续消息,部分不需要全量消息的机构交易终端,以“只传送订阅后的消息”的订阅模式接收当时间节点后产生的消息。
交易系统适配模块根据各自交易系统对于委托状态和成交回报推送的方案,获取当日推送消息并转换为机构交易统一协议定义的委托状态和成交回报消息,存储到Kafka消息中间件。对于不支持消息推送的交易系统,交易系统适配模块定时增量查询获取并存储数据。
API网关从Kafka消息中间件订阅数据进行必要转换后在内存中按照客户缓存消息队列,并维护会话中客户消息订阅请求和当前推送序号等状态,在有后续消息达到内存消息队列时通过会话的通讯通道主动推送消息到机构交易终端系统。
4.5 基于订阅消息提供查询
由于快速交易系统通过基于内存交易技术,大量查询请求可能影响快速交易系统交易性能。中台基于缓存的消息队列,提供委托查询和成交查询,避免委托查询和成交查询请求透传至快速交易系统。
对于成交查询,成交回报消息即为成交明细消息。API网关维护客户、消息定位串到成交回报消息的映射关系,其中消息定位串以跳表的数据结构组织,支持基于消息定位串入参的增量查询。
对于委托查询,每笔委托的最新委托状态消息即为该笔委托的查询结果。API网关维护客户、消息定位串到委托状态消息的映射关系,并在委托的最新消息到达时,更新映射关系。
基于缓存消息提供的查询接口,在查询性能和并发支持方面有数量级提升。
4.6 委托引用
机构交易终端收到委托状态消息时,通常使用委托状态消息的委托引用关联原委托。由于部分交易系统对委托引用取值规则进行限定或者定义类型不一致,不能返回机构交易终端委托的委托引用。中台将委托引用定义为长整型字段,对于支持长整型委托引用的交易系统,中台采取透传方式;对于不支持长整型委托引用的交易系统,中台维护委托引用和委托的关系,并在委托查询结果和委托状态消息推送中补充委托引用字段。
中台在向交易系统转发委托请求前,在内存维护委托引用和委托的关系,并通过Kafka消息中间件存储和共享全量映射关系。在查询委托消息或收到交易系统委托状态消息推送时,中台根据映射关系填充委托引用字段。由于部分映射关系是通过Kafka共享,极端情况可能发生存在先收到委托状态消息而后获取映射关系的情况,为保障推送客户消息的顺序性以及委托引用原值返回,中台采用更新委托引用和回填委托引用两部分。在更新委托引用阶段,如果未获取委托引用,则等待若干毫秒后重试,直至超过允许处理的时间,在该阶段该委托所属客户的其他消息也均暂时阻塞,以保证消息的顺序性。回填阶段是指在允许处理的时间内,未更新委托引用的消息,被会记录并定时检查根据获取的映射关系进行回填。
4.7 算法交易
中台提供算法交易接口支持机构交易终端算法交易,机构交易终端系统登录中台后其算法单的母单子单处理流程如图,机构交易终端系统通过子单的委托引用与母单委托编号一致匹配母单字单。
图3 算法交易处理流程
5.总结与展望
目前机构交易接入中台已投入生产使用,已支持一套PC交易终端直接从互联网访问和一套PB交易终端,日均交易量约数千万。中台在测试环境已支持3套交易系统的沪深A股普通交易、沪深A股两融交易、港股通、ETF申赎、期权业务接入,并完成多家PB交易终端接入的联调测试工作,随着联调测试继续推进,机构交易接入中台将进一步完善。预计在东方证券完成新一代核心业务系统切换时,机构交易终端系统均通过中台接入交易系统,日均交易量约为数十亿。
参考文献
[1]微服务框架gRPC交易接入网关实践
[2]东方证券服务治理建设实践
https://mp
[3]新一代证券交易系统应用架构的研究
pGYgk2A
[4]企业级证券业务中台探索与实践
《交易技术前沿》投稿免责声明————————–
上海证券交易所为证券公司、基金管理公司等市场参与者及相关行业机构提供交易技术支持与服务,包括日常交易技术支持、技术交流研讨、市场调查反馈、证券信息技术知识库、测试等服务。