QuantFabric量化交易系统架构
一、交易所架构
1、证券交易架构
- 证券交易包括交易所、买方、卖方,证券交易解决方案架构如下:
- 卖方是把各种资产包装成产品并提供给市场的实体,如各大证券公司(中信证券、中信建投、海通证券、国泰君安证券等)、期货公司(永安期货)。
- 买方是进行投资管理的实体,如公募基金、私募基金、对冲基金、保险公司、个人投资者。
- 通常量化机构客户通过券商极速交易柜台进行交易,普通客户通过集中交易系统进行交易,但极速交易柜台没有清算功能,日初数据需要从集中交易系统进行同步。
2、深交所交易系统架构
- 2016年6月上线的深交所新一代交易系统(深交所第五代交易系统)报盘机架构有重大变化,由原来的写数据库方式改成socket流形式。深交所第四代交易系统和当前上交所交易系统的报盘机架构是将订单数据写入券商本地的数据库中,然后通过报盘程序轮询地同步到交易所,因此订单时延较大,目前上交所订单延迟在数十ms到数百ms不等,深交所交易系统的订单延迟通常小于3ms。
- 深交所第五代交易系统已经跻身世界级交易系统之列,持续委托处理能力由10万笔/秒提升至30万笔/秒,委托处理平均延迟由110ms降低至1.1ms,可容纳的投资者账户数超3亿个,证券数量从原有系统的5千只扩大至5万只,日处理委托数达到4亿笔以上。
- 上交所新一代交易系统预计在2023年年底就绪。
3、深交所交易系统网络架构
4、交易所机房托管
- 撮合引擎是交易所交易系统的核心,用来匹配买卖订单。由于撮合引擎需要匹配证券市场的所有买家和卖家的委托订单,因此撮合引擎的稳定运转对于确保交易所的正常运作至关重要。撮合引擎在交易所的核心机房里,为了能够更快地把订单传输到交易所进行撮合,HFT客户会尽可能地把自己的交易主机靠近交易所的数据中心。
- 国内交易所都有自己的服务器托管中心,如上交所外高桥上证通托管机房、深交所南方中心深圳通托管机房、上交所金桥托管机房,只有证券、期货公司可以向交易所租用托管机房机柜。证券、期货公司通过提供机柜、购买设备、购买或租用软件为其客户提供服务。高端程序化交易团队通常自购设备或指定硬件配置由证券、期货公司采购,经证券、期货公司同意,放到租用的机柜内进行交易。
- Co-location适用于低延时交易用户。HFT客户或自营交易团队可向证券公司或期货公司申请机柜和网络资源,将交易主机与交易所的交易主机在物理距离上尽可能近地放置在一起。
- 交易所托管机房受制于场地及电力所限,一般资源容量有限,常常供不应求。虽然托管机房内不同位置距离核心撮合引擎服务器的直线距离不尽相同,但通常会通过增加光纤、网线长度确保所有机柜到核心撮合引擎服务器的物理距离是相同的。
5、网关
- 交易单元指会员(证券公司)向交易所申请设立的、参与证券交易与接受监管及服务的基本业务单位。会员可以根据需要,向交易所申请设立一个或多个交易单元;不同的会员不得使用同一交易单元。交易所通过交易单元对会员进行业务管理,根据会员的业务许可范围和申请,按照相关业务规则开通或限制交易单元各项交易权限。
- 网关是指放置在会员处、用于连接会员与交易所交易系统的软硬件设施。会员可同时使用多个网关进行报盘,但不允许使用他人的网关报盘。会员可根据需要将下属交易单元配置到网关上。多个交易单元可以同时配置在一个网关上,一个交易单元也可以配置在多个网关上。
- 交易所通过网关对会员的报盘流速进行总量控制。当实际报盘速率达到网关的流速限制值时,节流功能开启,超过限制值的报盘将被推延至下一时段传送。会员可根据需要申请对网关的报盘流速进行设定。深交所规定每份标准流速为50笔/秒,配置到网关上的流速必须是标准流速的整倍数,目前单个网关支持的最大流速为1000笔/秒。交易所每年会对标准流速值进行检测和必要的调整,确保会员拥有的总体流速与市场发展需要相适应。
- 交易参与人(证券公司、基金公司等)需要连接交易网关、行情网关、文件网关。Level I行情用户(纯行情用户,高单用户)需要连接行情网关;Level II行情用户(信息服务商)需要连接行情网关、文件网关;基金托管行需要连接交易网关 (接收成交数据)、文件网关 (视需要)、行情网关 (视需要)。
6、行情网关
- 行情网关用于提供行情服务。不同的行情信息被分为多个通道发送,市场参与者可以根据需要选择只接收指定通道的行情信息。
- Level2行情的逐笔委托和逐笔成交合成一个数据流发送实时行情发布频率、行情快照买卖盘个数可按业务需求配置。
7、交易网关
- 交易网关敲门机制以平台为单位,不同平台独立进行敲门在每次平台从非开放状态转到开放状态时,交易网关测量网关与撮合引擎间的网络时延,并收取(且只收取)柜台第一笔委托,根据网络时延在平台开放前提前(提前量=网络时延)上报进行敲门,如果敲门成功(即申报被接受),则正常处理后续委托,否则交易网关将立即以第一笔委托进行重试,直到敲门成功。
- 平台状态是即将开放或开放时柜台系统可以报单,其它状态下向网关发送的委托都会以平台未开放拒绝。
- 敲门过程中原因为“平台未开放”的业务拒绝将由网关自动处理(继续重试),不会送给柜台。
- 敲门过程中柜台可以继续报单,但委托将缓存在网关操作系统的缓冲区中,在成功后网关才会接收。
8、性能数据
- 深交所福田滨海数据中心测试,流速3000笔每秒时Colo网关端到端的委托确认延迟平均值为1818微秒,90%置信区间延迟为1932微秒,委托成交延迟平均值为1945微秒,90%置信区间延迟为2070微秒。
二、交易柜台
1、交易柜台简介
- 依据国内监管要求,客户无法直连交易所系统,中间必须经过经纪公司的柜台系统,由经纪公司柜台系统调用交易所API下单。
- 交易柜台是连接交易所的下单系统。投资者交易系统通过经纪公司交易柜台把交易指令发送到交易所,然后经纪公司交易柜台再将交易所委托回报和成交回报反馈给投资者。
2、证券柜台
- 依据国内监管要求,客户无法直连交易所系统,中间必须经过证券公司(Broker)的系统,即柜台系统。证券公司会有多套柜台系统,在功能上分为集中交易柜台和快速交易柜台(极速柜台系统)。
- 国内券商交易柜台厂商主要有恒生、金证、华锐、顶点、根网、金仕达、宽睿等公司,柜台系统功能模块根据付费多少而不同,也可以根据证券公司需求做开发,提供给投资者使用。普通交易柜台即集中交易柜台,主要是提供给一般投资者使用;针对机构客户等程序化交易客户,经纪公司同时提供了快速交易柜台。
- 主流券商系统(金证、恒生、金仕达)大致分为报盘系统、接口数据库、柜台系统三部分,程序化交易的接口通常是柜台系统提供的券商私有接口API和券商接口API两种。券商私有接口API是提供给第三方金融软件公司的,第三方软件公司可以通过券商私有接口API开发出行情软件或交易软件,供给个人投资者使用,比如通达信,同花顺等;券商接口API是指券商把其接口进行封装后,直接供给个人程序化投资者使用;报盘接口API,一般不可能供给个人用户使用的,只可能由券商系统提供商和其第三方合作伙伴共同开发。
- 集中交易柜台是券商的核心系统,用于对接上交所、深交所的股票交易,属于场内市场。普通交易从进行委托开始,委托会先从投资者所在地到券商总部,再从券商总部到集中交易柜台,然后从集中交易柜台到交易所检查是否合规,如果判断合规,则从交易所传递信息返回集中交易柜台—券商总部,然后再下单,假设投资者在深圳,抛开审核时间,还要经历从深圳到券商总部,再到交易所的物理时间。集中交易柜台是按照满足券商经纪业务来设计的,主要业务功能如下:(1)账户业务。为客户进行账户开户、销户、管理业务权限、处理与交易相关的适当性管理、合规报送等。(2)资金业务。支持客户保证金三方存管制度。(3)证券交易业务。处理投资者提交的各类交易指令,按照交易规则进行资金和证券的处理,并实现与交易所的委托和成交指令的对接。(4)信用交易业务。2010年证监会推出融资融券业务试点,投资者可以通过向证券公司融资买入股票,也可以融券卖出股票,实现了杠杆交易。系统需要按照信用交易的业务规则处理各类交易指令。(5)基金代销业务。投资者可以通过证券账户购买开放式基金产品,系统处理投资者的产品申购赎回指令,并实现与相应基金公司的指令交互和资金、份额结算。(6)清算业务。负责与交易所、登记结算公司进行数据交互和业务核对,完成客户在交易所内产品的资金、股份清算和结算。(7)查询业务。满足客户需要的各种交易流水、对账单、交割单等业务数据。(8)理财产品销售。券商为扩大客户投资品种范围,自行提供的各类理财产品的销售。(9)现金余额理财业务。可将客户投资账户上的现金余额自动申购为货币基金,提高客户的资金收益。(10)其他管理职能。系统参数设置、客户账号安全、外围系统接入、异常交易监控等。
- 快速交易柜台:快速交易柜台主要是为程序化交易客户提供的快速交易通道,通常只提供基本的交易功能,力图实现低延迟极速性能,因此主流快速交易柜台的股票现货交易和信用交易是分开的,因此需要分别进行接口开发。不同券商的快速交易柜台支持的交易功能有所不同,但委托申报、委托回执、交易回执、撤单申报是基本功能,同时上海主板、上海科创板、深圳主板、深圳中小板、深圳创业板、可转债、逆回购是需要支持的基本业务品种。
- 快速交易柜台在接到客户委托申报时会进行风控合规检查,只要过了风控就可以直接通过一条连接交易所的专线传递信息,无论是审核时间还是传输时间都得到了极大的缩短。
- 国内主要快速交易柜台系统包括华锐ATP快速交易柜台、恒生UST快速交易柜台、顶点HTS快速交易柜台、金证FGS快速交易柜台、宽睿OES快速交易柜台,华宝证券自研LTS快速交易柜台,中泰证券自研XTP快速交易柜台。
3、期货柜台
- 依据国内监管要求,客户无法直连交易所系统,中间必须经过期货公司(Broker)的系统,即柜台系统。期货公司会有多套柜台系统,在功能上分为主席和次席系统。
- 主席系统:主席柜台功能全面,支持出入金、盘后结算等,要求高吞吐量与高可靠性,普通客户都是在主席系统上交易。
- 次席系统:次席系统一般只用于下单及撤单,重点是低延迟穿透时间,一般面向对时延要求较高的程序化交易客户。次席柜台的资金划拨、结算等功能则交由主席柜台实现。期货公司的极速交易系统是次席交易柜台,柜台内部穿透耗时峰值在百纳秒级,尤其适用于对延时要求严苛的交易团队。
- API:在中国,任何柜台系统都必须调用交易所API才能下单。期货柜台系统一般都会提供API给程序化客户接入柜台使用,同时柜台系统需要调用交易所的API将用户的交易订单传输给交易所。股指期货实现程序化交易最简便的是CTP。CTP提供了全开放的API接口,所以不论是个人还是第三方软件公司,都可以基于其API接口进行程序化交易系统的开发,但交易席位仍然要通过期货经纪公司。只要投资者选择一家以CTP为主交易系统的期货公司,利用CTP全开放的API接口,就可以开发自己的程序化交易系统。如果投资者的交易思想属于高频交易,对速度要求很高,就要选择CTP交易系统运维优良并提供服务器托管服务的期货经纪公司。
- 交易所前置机:期货交易柜台需要通过交易所前置系统与交易所主机连接,前置系统是柜台与交易所撮合系统之间的通讯中继。交易所前置服务器不仅仅起到中间桥梁的作用,还要以通讯IP地址控制连入的终端,减少交易主机的网络负担的作用,以及对交易指令进行部分正确性检测处理。同时,还可以起到防火墙的功能,防止交易主机受到外界的攻击,确保交易主机的安全运行。为缓解交易系统压力,提高期货公司交易速度,交易所会设置多个交易前置机均衡前置机的系统负载,期货公司可按照交易所发布的前置机IP优选配置规则进行配置。
- 极速交易柜台:在国内期货市场,任何交易系统都必须调用交易所API(应用程序编程接口)才能下单。而国内交易所只提供软件版本API,而软件API只能通过CPU调用。极速交易柜台拥有独立服务器的客户交易系统,使用独立的交易通道,优点在于委托速度快、申报指令推送快、成交回报快。集中交易系统中,客户下单后通过网上客户端软件,先集中到网上交易服务器,再由网上服务器转向券商交易系统服务器,然后再接到交易所接口,最后再到交易所;极速交易通道,下单后转到快速交易通道与交易所系统对接。
- 国内主要快速交易柜台系统包括上期所CTP柜台、中金所飞马柜台、郑商所易盛柜台、大商所飞创柜台以及第三方柜台厂商如盛立REM极速柜台、易达YD极速柜台、闪策波塞东Poseidon极速柜台、广策TacMars 极速柜台。
三、量化交易系统架构
1、交易系统简介
- 欧美交易网络中,投资者可以用电话、传真等传统方式通过经纪商中介来参与交易,也可以通过交易市场直连(DMA)等方式,跳过经纪商中介,直接参与电子交易网络。在交易执行过程中,订单管理系统(Order Management Systems,OMS)和订单执行管理系统(Execution Management System,EMS)在整个交易网络中起着重要作用。
- OMS(订单管理系统)是所有买方投资者交易活动的中枢,专注于提供投资者电子的交易能力,用来让投资者管理和记录其电子化交易活动,被买方投资者用来很好的与其经纪商交互,特别是基于FIX(Financial Information Exchange)的交易记录管理系统。随着交易技术的发展,Direct Market Access(DMA)的引入、算法交易及订单路由(Order Routing)的出现,买方交易迫切需要一种新的、更侧重于管理交易执行过程而非仅仅有交互和记录功能的系统,解决方案就是随后出现的EMS(订单执行管理系统)。EMS专注于增强经纪商在直接市场(Direct Market)、算法交易等方面执行电子交易策略的功能,即通过内嵌的算法交易引擎,利用ECN、Crossing网络等项,找寻多元交易选择,从而发掘更全面的流动性来源。
- 随着市场的发展,EMS和OMS有互相靠拢的趋势,逐渐具备了对方系统的部分功能。OMS(Order Management System)是订单管理的核心业务系统,典型案例是各大证券公司的大集中系统。EMS(Execution Management System)是提供更多订单类型和订单执行的核心业务系统,是OMS的强助力。PMS(Portfolio Management System)是提供对客户的资产组合分析的系统,提供如资产报告、交易报告、组合分析、盈利分析、风险分析、交易行为分析、账户诊断、风控与合规等功能。POMS(Portfolio and Order Management System)是PMS和OMS结合的系统的统称。
2、量化交易系统需求
- 行情网关,适配不同Broker的行情源API,收取行情数据。
- 交易网关,适配不同Broker的极速交易柜台交易API,实现报单指令、撤单指令、订单回报管理。
- 风控功能:提供账户间风控功能,风控规则包括:流速控制、账户锁定、防自成交、撤单限制等。
- GUI客户端监控:GUI监控客户端提供行情展示、报单、撤单、订单回报管理、资金信息展示、仓位信息展示、风控参数管理、用户权限管理;不同功能展示页的多屏幕展示。
- 策略进程,实现不同交易策略,根据行情触发交易信号,执行买卖操作。
- 交易系统延迟必须尽可能低,因此行情网关尽量接入Broker提供的组播行情,交易系统必须部署在交易所机房Broker托管Colo,交易系统不同组件之间通信必须尽可能采用共享内存IPC方式。
3、QuantFabric架构
- QuantFabric是基于Linux/C++开发的中高频量化交易系统,提供国内中金所和A股量化IT基础设施的基础功能,预计2022年底开源发布。
- 优秀的量化交易系统拥有最快接收行情数据线路、最快数据处理与读取能力、最好的策略软件、最快的交易通道,每个环节缺一不可。
- 基于量化交易系统通用需求,QuantFabric架构如下:
- QauntFabric交易系统中XMarketCenter和XQuant之间行情数据交互使用共享内存消息队列进行IPC通信,XTrader和XQuant之间报单、撤单、订单回报交互使用共享内存消息队列进行IPC通信,XTrader与XRiskJudge的风控请求和响应使用TCP进行IPC通信。
- XWatcher负责转发XMarketCenter、XTrader、XQuant、XRiskJudge的监控数据并监控进程组件状态以及Colo状态。
- XServer用于转发不同Colo的交易数据以及管理XMonitor监控客户端。
4、QuantFabirc模块
- Utils:基础工具模块,提供交易系统不同组件共用的工具模块,如配置加载模块、HPPackClient客户端、HPPackServer服务端、SQLiteManager数据库操作、Singleton单例、Logger日志、RingBuffer、LockFreeQueue无锁队列、IPCMarketQueue行情消息队列、IPCLockFreeQueue内存队列、SnapShotHelper快照工具、时间戳函数、字符串工具函数、不同组件消息通信协议。
- XAPI:第三方库,包括SPDLog日志库、HPSocket通信框架、YAML-CPP解析库、CTP柜台API、REM柜台API、YD柜台API、ConcurrentQueue并发队列、OES柜台API。
- XMarketCenter:行情数据中心,适配不同Broker柜台行情API,收取行情数据;提供行情数据写入共享内存消息队列,行情数据落地,行情数据转发至XServer。
- XServer:消息中间件,转发不同组件之间的消息数据。转发XMonitor的报单撤单请求消息到XTrader、风控控制命令消息至XRiskJudge,转发XMarketCenter行情数据、XTrader订单回报至XMonitor。管理XMonitor客户端登录用户的权限校验。
- XTrader:交易网关,适配不同Broker柜台交易API,执行报单、撤单指令,管理订单回报。转发订单回报、资金信息、仓位信息至XServer。
- XRiskJudge:风控系统,提供账户间风控,如流速控制、账户锁定、自成交、撤单限制检查等风控功能;加载风控参数,解析XServer转发的风控控制命令,更新风控参数,发送风控参数至XServer;接收XTrader报单、撤单请求,进行风控检查,发送风控检查结果至XTrader;接收XTrader报单回报、撤单回报,管理订单状态,Ticker交易日内累计撤单计数。
- XWatcher:Colo监控进程,转发Colo交易进程如XMarketCenter、XTrader、XRiskJuage、XQuant等消息至XServer,并提供Colo状态监控,App交易进程监控功能。
- XMonitor:QuantFabric量化交易系统GUI监控客户端,提供行情数据展示、订单回报管理、报单、撤单、风控管理、用户权限管理等功能。
- XQuant:策略进程,实现不同交易策略,并根据行情触发交易信号。
- Tools:工具模块,如MarketReader行情导出工具、OrderSender批量报单工具。
- XMonitor主要插件如下:
- Market插件
- EventLog插件
- Monitor插件
- OrderManager插件
- Permission插件
- RiskJudge插件
推荐参考学习资料:
#量化交易##QuantFabric#