综合交易平台运维培训教材系列风控.docx
《综合交易平台运维培训教材系列风控.docx》由会员分享,可在线阅读,更多相关《综合交易平台运维培训教材系列风控.docx(37页珍藏版)》请在冰豆网上搜索。
综合交易平台运维培训教材系列风控
综合交易平台运维培训教材系列(第一册)
综合交易平台
交易、风控、银期系统技术介绍
1文档介绍
1.1文档目的
本册培训教材的编写目的是使综合交易平台系统运维人员对交易、风控以及银期系统实现和维护有一个比较清晰的了解,并进而掌握,从而能够达到解决系统日常运维中出现的各种问题。
1.2读者对象
综合交易平台系统日常运维和支持人员。
1.3参考文献
《FTD1.0Release2.01》
1.4术语与缩写解释
缩写、术语
解释
FIB
期货交易所信息总线
FTD
期货交易数据交换协议(FuturesTradingDataExchangeProtocol,简称FTD)
1.5概述
交易系统是综合交易平台的重要组成部分,主要为期货公司交易人员和客户提供服务,完成交易业务。
交易系统主要为期货公司提供接收报单(报价)、交易风险控制、行情发布、查询等服务。
交易系统启动时通过交易初始化组件与结算系统进行数据交换,盘中则通过实时上下场组件进行数据交换。
风控系统为期货公司风控人员提供交易过程风险揭示和风险管理服务。
交易系统与风险控制系统之间通过交易总线进行实时数据交换。
银期系统为期货公司投资者提供实时转账业务服务。
风控系统篇
2风控系统架构
2.1风控系统架构图
风控系统架构图
2.2风控流水
风控系统各组件之间数据交互主要通过发布/订阅主题的方式,发布/订阅方式使用流文件来缓存数据。
如riskgate程序,从交易系统订阅tradeseries和traderesult主题,缓存到流文件中,按流中时间报文合并tradeseries和tradeseries,加上风控自身初始化数据,输出到流文件,发布triskgate主题,并在本地流水目录下缓存流水文件riskgate_outflow。
风控系统各组件保存下来的流水以及各流水之间的关系参考附件二。
2.3外围系统依赖
2.3.1交易系统
2.3.1.1数据依赖
交易系统是风控系统最主要依赖的外围系统,风控系统的大部分数据是来自交易系统,包括交易日初初始化数据,报单、成交,交易参数(用户权限等),结算参数(保证金率,手续费率等),盘中实时上场数据(投资者开销户,出入金,银期转账等)。
2.3.1.2代码重用
风控系统中多个组件重用了交易核心组件的代码,重用交易核心代码的组件包括
⏹Riskengine
⏹Riskfront
⏹Localfront
⏹riskdbwriter
这些组件在程序中模拟一个交易核心组件,通过处理交易输入流tradeseries(订阅交易系统中的排队机发布的数据流来获得),来计算盘中持仓、资金数据。
进行实时盘中结算。
进行盘中结算的原因有两点:
⏹资金、持仓数据量很大,不便于传输
⏹风控某些功能需要保证数据的一致性,如辅助强平单生成,强平报单,压力测试等
试算功能,等等
2.3.1.3业务交互
风控系统一方面通过riskgate组件订阅交易系统的排队机数据流和交易结果流来获取交易系统产生的数据,另外也有部分功能也需要提交数据给交易系统处理,包括强平报单,风控操作员密码修改,发送风险通知到交易终端,查询席位资金等等。
这些功能都是通过riskengine发布triskorder主题,由交易系统的排队机来订阅这个主题数据流来完成。
2.3.2结算系统
交易系统提供了绝大部分日初初始化数据,但仍有一小部分初始化数据交易系统没有提供,这些就需要结算系统提供。
包括
经纪公司邮件服务器
投资者的短信
邮件发送权限
多活灾备中交易中心代码
在后台管理系统状态从“不活跃”换到“启动”状态时,后台管理系统会将这些数据从settlement库写至risk库(riskdb)中,风控后台程序启动时再读取riskdb,数据库表包括:
⏹risk.t_investor
⏹risk.t_tradeparam
⏹risk.t_broker
⏹risk.t_SecBrokerIdentities
⏹risk.t_dridentities
访问risk库的风控组件包括:
⏹Riskgate
⏹Riskmsg
⏹Riskdbwriter
这几个组件通过全局配置文件DeployConfig.xml来获取数据库配置信息,如下:
2.4风控系统组件
2.4.1终端程序(Rcwin)
风控客户端,绝大部分风控功能都通过rcwin界面操作完成。
连接rcwin和风控后台的程序是前置,包括riskfront(风控前置)和localfront(本地前置)。
根据处理功能的后台组件不同,可将功能划分为两类:
前置处理请求(rcwin-req-front)、风控引擎处理请求(rcwin-req-engine)。
2.4.1.1前置处理请求(rcwin-req-front)
这类功能只会影响rcwin和它连接的前置riskfront,与系统其它部分无关。
rcwin直接从riskfront获取基本数据(riskfront内置了一个内存数据库装载了从交易系统过来的数据),如投资者信息,交易编码,报单,成交,持仓,出入金,资金,用户事件,风险通知,业务通知,强平预埋单,风控设置等等。
还有部分查询功能,如成交排名,持仓排名,辅助强平单生成等等。
2.4.1.2风控引擎处理请求(rcwin-req-engine)
这类请求需要提交到riskengine处理,分成两类:
⏹涉及系统其它部分的全局性功能,如风控操作员登录,全局风控设置(通知模板,风控指标等),风险通知发送,业务通知发送,风控预埋单,风控强平单等。
⏹查询性质功能,如市场持仓量分布显示,压力测试,权益反算,风险预算等等
2.4.2风控网关(Riskgate)
2.4.2.1功能说明
⏹从风控物理数据库中获取风控自身的初始化数据。
⏹多个风控程序需要重用交易核心组件进行盘中结算,按时间报文合并交易核心的tradeseries和traderesult流水,为其它风控组件提供统一有序的交易数据。
如初始化数据(投资者信息,交易、结算参数等)就必须在报单、成交回报等数据之前,报单请求报文要在报单应答或回报之前。
2.4.2.2INI中特殊配置
DRSysID=1//多活环境中各风控系统的唯一系统ID,只用于风控系统,和交易系统中
的DRIdentityID没有联系
2.4.3风控前置(Riskfront)、本地前置(Localfront)
riskfront和localfront与交易系统中的front类似,只是负责更多的功能。
客户端rcwin中数据更新的模式基本采用后台(前置)主动推送的方式,包括持仓、资金数据的更新。
这是前置中需要盘中结算的主要原因。
Riskfront进行盘中结算的输入数据(tradeseries和traderesult)通过订阅riskcompositor(风控排队机)的输出流水CompLog获得。
localfront中盘中结算的输入通过riskfront转发tlocalseries获得,通过tcp连接进行通讯,Localfront自身也是需要通过账户登录到风控系统。
riskfront在风控系统内网运行,localfront可以通过公网连接到riskfront。
2.4.3.1两者相同的功能
⏹重用交易核心代码,进行盘中结算
⏹处理rcwin-req-front
⏹转发rcwin-req-engine功能的请求(xfrontpub流),及对应的应答和回报(tresult流),涉及到的路径如下:
◆rcwin登录到riskfront的报文路径
请求:
rcwin--->riskfront--->riskengine
应答:
riskengine--->riskfront--->rcwin
◆rcwin登录到localfront的报文路径
请求:
rcwin--->localfront--->riskfront--->riskengine
应答:
riskengine--->riskfront--->localfront--->rcwin
2.4.3.2两者的联系
riskfront是localfront的服务器,提供以下服务:
∙转发交易流水tradeseries和traderesult(流文件tlocalseries)
∙转发来自localfront的rcwin-req-engine功能请求
∙转发来自localfront的rcwin-req-engine功能的应答和回报(流文件tlocalresult)
2.4.3.3INI中特殊配置
Riskfront.ini
businessthreads=2#business线程数量(处理部分rcwin请求的线程数量,min=2,max=20)
MemorySize=1024#内存数据库Size(mbytes,default=512(32bit),4096(64bit))
WriteCSVTime=17:
00:
00#保存MDB到文件的流时间(default=17:
00:
00)
MaxTotalRate=1024#FtdEngine发送数据的最大总速率(kbytes/s,default=1024,min=100)
MaxSessionRate=200#向一个session发送数据的最大速率(kbytes/s,default=200,min=20)
BrokerSize=1#本系统处理的经纪公司数量(default=1),和MaxLocalFrontPerBroker
参数一起决定localfrontsvr可提供的最大连接数量
MaxLocalFrontPerBroker=5#每个Broker可连接的localfront的最大个数(default=5,max=5)
FrontType=riskfront#riskfront或者riskmonfnt,必须配置两者之一,否则程序不能运行,
大小写区分
ordertimeout=3#riskmonfnt中报单回报最大延迟时间(default=3)
以下两项配置从交易核心组件继承,必须和交易核心组件配置文件的值相同
Settlement_Interval=2#定时结算时间(sec,default=2),不要设置该值
SingleUserSession_MaxNum=6#说明用户同时在线Session的上限,无此配置默认为1
localfront.ini:
businessthreads=2#business线程数量(处理部分rcwin请求的线程数量,min=2,max=20)
MemorySize=1024#内存数据库Size(mbytes,default=512(32bit),4096(64bit))
#最大数据传输速率设置为10M,即局域网速度
MaxTotalRate=10240#FtdEngine发送数据的最大总速率(kbytes/s,default=200)
MaxSessionRate=10240#向一个session发送数据的最大速率(kbytes/s,default=100)
登录riskfront信息:
#登录riskfront用户密码;多个localfront可以使用相同用户名密码
Broker=8000
User=8000_admin
Password=1
#riskfront地址,riskfront提供的localfrontsvr地址,见DeployConfig.xml中配置
riskfront=tcp:
//172.16.126.72:
10003
#localfront地址,本程序提供给rcwin连接的地址
localfront=tcp:
//172.16.126.72:
10007
#说明交易系统用户同时在线Session的上限,无此配置默认为1,必须和交易后台配置一致
SingleUserSession_MaxNum=6
2.4.4riskengine
2.4.4.1功能说明
风控引擎,负责所有风控功能的后台计算;处理的功能主要包括:
风控操作员登录、全局风控设置(通知模板,风控指标等)、风险通知发送、业务通知发送、风控预埋单、风控强平单、市场持仓量分布显示、压力测试、权益反算、风险预算等等
2.4.4.2INI中特殊配置
#begin灾备配置
#二席系统中没有可以识别二席经纪公司代码的初始化数据,因此需要在这里配置
#SecBrokerWithMain=本CTP系统中有主席的二席经纪公司代码,以半角','分割
#如果本CTP系统中所有经纪公司都是,则可以配置SecBrokerWithMain=all
#如果本CTP系统中没有这种经纪公司,则可以不配置该项
#SecBrokerWithMain=all
#end灾备配置
MemorySize=1024#内存数据库Size(mbytes,default=512(32bit),4096(64bit))
WriteCSVTime=17:
00:
00#保存MDB到文件的流时间(default=17:
00:
00)
#riskengine提供的各种服务
#每个riskengine都处理的基础数据,但不一定都需要输出,例如投资者参数设置,风控权限分配等(default=no)
BasicOutPut=yes
#是否为下单代理,只允许一个riskengine为下单代理(default=no);下单代理功能包括强平单,预埋单,强平单留痕,以及其它要发送到交易的查询
Order=yes
#登录服务(default=no)
LoginService=yes
#风险通知(default=no)
RiskNotify=yes
#业务通知(default=no)
BizNotice=yes
#指标功能(default=no)
IndexService=yes
#指标NPP(default=no)
IndexNPP=yes
#持仓分布查询(default=no)
PositionRate=yes
#压力测试(default=no)
StressTest=yes
#权益反算(default=no)
SafePriceRange=yes
#风险预算(default=no)
PredictRisk=yes
#以下所有配置从交易核心组件继承,必须和交易核心组件配置文件的值相同
#Settlement_Interval=600#定时结算时间(sec,default=2),不要设置该值,
SingleUserSession_MaxNum=6#说明用户同时在线Session的上限,无此配置默认为1
2.4.5riskarb和riskcompositor
2.4.5.1功能说明
风控仲裁机和风控排队机,这两个程序作用和交易中的arb和compositor一样。
主要是为了能部署多个riskengine实现冗余互备。
但目前因为riskengine处理了一些查询性质的功能(2.4.2第二部分功能),因此冗余互备不能实现。
以后将这部分功能移到前置中处理后,可以实现riskengine的冗余部署。
2.4.5.2INI中特殊配置
2.4.6riskdbwriter
2.4.6.1功能说明
日终将风控需要保存的设置和历史数据写入riskdb。
负责将强平留痕数据、用户导出记录、风控系统基本参数回写到risk物理数据库中,不能盘中实时回写;使用riskengine/flow中的riskengine_in.con和riskengine_notify.con流水重演,来获取需要回写的数据。
多活系统在正常情况下,主中心的主席和二席风控系统需要在盘后运行riskdbwriter,以回写数据至risk库,备中心不需要运行riskdbwriter,risk库由结算系统每日增量备份。
在主席发生灾难时,取代主中心主席的那个备中心需要运行riskdbwriter,生成risk库数据,然后备份到主席以及其他备中心risk库。
2.4.6.2INI中特殊配置
#内存数据库Size(mbytes,default=512(32bit),4096(64bit))
MemorySize=1024
#内存数据库保存路径(default=./)
CSVWritePath=../log/
#初始化数据检查结果文件
ConsistentCheck=../log/InitCheck.txt
#保存MDB到文件的流时间(default=17:
00:
00)
WriteCSVTime=17:
00:
00
#以下所有配置从tkernel继承,必须和tkernel配置文件的值相同
#定时结算时间(sec,default=2),不要设置该值,
#Settlement_Interval=600
#说明用户同时在线Session的上限,无此配置默认为1
SingleUserSession_MaxNum=20
2.4.7riskmsg
2.4.7.1功能说明
和短信运营商、邮件运营商的接口程序,负责风控短信通知和风控邮件通知的发送,以及回执的接受。
2.4.7.2INI中特殊配置
#经济公司名称,用于区别不同的经济公司,提供不同的服务
#海通=htqh广发=gfqh长城伟业=ccwy
broker_name=ccwy
#以下海通的参数,一般情况不能修改以下参数
#sp的id号
spid=7964
#sp的密码
sppassword=13579
#移通网络提供的短信接收地址
spurl=
#本地接收状态报告的端口号
receiveport=5000
#发送不成功,然后重复发生的时间间隔
interval=1800
#最大重复发生次数
maxrecount=1
#可提供短信服务的Broker代码
SMSBroker=3030,8000
#以下广发的参数,一般情况不能修改以下参数
#服务器地址
gf_server=202.96.150.106
#sp的id号
gf_user=gfqh
#sp的密码
gf_password=gfqh
#数据库名
gf_database=mas
#接口代码
gf_interfacecode=gfqh
#轮询数据库的时间间隔,以秒为单位
gf_interval=20
#以下长城伟业的参数,一般情况不能修改以下参数
#服务器地址
ccwy_server=183.62.101.19:
1433
#用户名
ccwy_user=sa
#用户密码
ccwy_password=123456
#数据库名
ccwy_database=kdsgroupsms
#分支代码
ccwy_branch=100026
#轮询数据库的时间间隔,以秒为单位
ccwy_interval=20
2.4.8riskdrmt
2.4.8.1功能说明
负责将需要盘中同步到其他风控系统的报文转发到其他风控系统,直接登录到riskfront读取需要的转发流水,TCP连接,取到的流水为riskfront流水tresult.con中的riskengine结果流水riskengine_drmt。
输出流水:
CompFlow:
需要转发到其他风控系统的流水
转发功能流程图:
⏹架构说明:
1.riskdrmt部署
riskdrmt可以单独部署,不需要与某个CTP系统的程序一起。
好处是发生灾难时,不需要重启riskdrmt,就能继续提供转发灾备报文的服务。
如果riskdrmt和某个CTP系统部署在一起,并且因灾难发生而宕机,则可以用相同的配置文件重新启动一个新的riskdrmt,继续提供转发灾备报文服务。
2.Riskdrmt使用专门用户登录到各系统中的riskfront
专门用户固定写定在riskdrmt程序中,不用配置,只需在riskdrmt.ini中配置各个riskfront提供的drmtsvr的地址以及经纪公司会员号;每个风控系统均有个唯一编号DRSysID;
3.Riskdrmt登录成功后,从主中心主席riskfront接收需要同步到其他风控系统的报文,报文会带上该系统的DRSysID,DRSysID由riskfront填写。
4.Riskdrmt向主中心二席和备中心riskfront发送来自主中心主席riskfront的同步报文
5.Riskdrmt接收和发送流水均支持断点续传,riskfront接收和发送同步流水功能也支持断点续传
⏹灾备处理说明:
1.所有系统均处于正常情况
风控功能只能在主中心主席操作;功能包括:
下强平单、设置风险通知模板、发送风险通知、设置业务通知模板、发动业务通知、设置电话通知、设置自定义强平标准、设置净持仓保证金指标,其他功能可以在各风控系统操作;
2.主中心主席发生故障,启用备中心系统
收到交易流水中的ReqInsDRTransfer报文,将风控功能权限迁移至备中心系统,所有功能只能在备中心操作;启用备中心风控系统的riskdrmt。
3.主中心二席发生故障,交易权限迁移至主中心主席系统
收到交易流水中的ReqInsDRTransfer报文,对风控系统没有任何影响;
4.主中心主席、二席发生故障,启用备中心系统
收到交易流水中的ReqInsDRTransfer报文,将风控功能权限迁移至备中心系统,所有功能只能在备中心操作;启用备中心风控系统的riskdrmt。
⏹Riskdrmt转发的报文包括:
(1-6项只能在一个风控系统有操作权限,所以需要实时同步,以保证数据统一,7-8项是为了保证各个系统的riskdbwrite数据一致,以保证某个系统故障后,其他系统的riskdbwrite不会丢失任何数据)
1.自定义强平标准(设置->选项->投资者资金信息->使用风险度自定义强平);
2.业务通知模板设置;
3.业务通知;
4.风险通知模板设置,包括自动短信发送时间,风险通知警示值,是否允许重复发送选项;
5.风险通知;
6.净持仓保证金指标;
7.用户导出数据操作(不会作为实际操作处理,仅用来保证各套系统的盘后riskdbwrite数据一致);
8.强平单(不会作为报单处理,仅用来保证各套系统的盘后riskdbwrite数据一致);
2.4.8.2INI中特殊配置
配置项'MainSysID'在v5.5.0版本后将被取消
#主中心主席的DRSysID,必须是以下Frontn中的一个
MainSysID=1
#前置中的drmt服务器,格式=DRSysID,server_ip:
port。
#DRSysID等于前置所在CTP系统的riskgate.ini中配置的DRSysID
#服务器地址必须使用ip地址
Front3=1,tcp:
//172.16.126.72:
10006
Front2=2,tcp:
//172.16.126.72:
40006
Front1=3,tcp:
//172.16.126.72:
11006
2.5故障诊断
2.5.1log分析
⏹所有风控自身的Log信息格