1、上证所Level2行情接口开发主要内容主要内容 Level-2产品介绍 Level-2系统接入 Level-2数据解码一、Level-2 产品介绍Level-1行情的不足Level-1行情Show2019.dbf不足之处 内容信息量少,市场深度反映不够Show2019只有29个有效字段实时信息产品单一 Show2019 为仅有的实时行情产品按同一模式显示不同的交易品种显示债券、基金信息时出现“市盈率”字段名 技术5秒钟一次的快照,文件交换方式,发布延时明显信息内容可扩展性差dbf文件是固定字段,只能通过增加数据库字段方式来增加信息内容从Level-1到Level-2 商业模式:“免费”-收费
2、发布路径:券商-信息商 行情深度:五档-十挡,新增委托明细和全部成交信息 行情频率:5秒-3秒 数据格式:dbf-FIX/STEP-FAST 交换方式:文件-文本数据流-二进制数据流 行情延时:3秒-28毫秒-20毫秒Level-2内容 Reference Data(UA101)Transaction(UA3101)Market Data(UA3102,UA3113)Order Queue(UA3111)行情展示Order Queue(UA3111)Market Data(UA3102)Transaction(UA3111)二、Level-2系统接入SSE to Vendor Connecti
3、on1.VDE(Vendor Data Engine)2.VSS(Vendor Supplies System)VDE to VSS ConnectionDaily Procedure三、Level-2 FAST数据解码Level-2 FAST的介绍F FIX IX A Adapted for dapted for StStreaming(FAST)reaming(FAST)为解决FIX协议传输市场数据存在冗余度高,带宽需求大的问题,芝加哥商品交易所于2019年11月17日向FPL提交了一个隐示标记(Implicit tags)方案 FPL于2019年12月27日宣布成立市场数据优化工作组(M
4、DOWG,Market Data Optimization Working Group).2019年5月开始MDOWG根据一系列POC的结果,开始进行协议标准制定 2019年初完成FAST(FIX Adapted for STreaming)V1.0 2019年12月完成FAST V1.1Level-2 FAST的介绍 中国证券市场的特点 1.2亿交易帐户 较高的换手率,上海证券交易所日交易金额峰值超过3000亿,成交笔数超过4000万 市场数据的发展趋势和挑战 产品越来越多、挂牌证券数量越来越大 更多的价格档位、更多的市场深度 更少的延时Level-2 FAST的介绍 STEP协议的优缺点
5、基于FIX,已成为事实上的证券数据标准 语法简单,定义灵活,易扩展 数据相对冗余STEP.1.0.0STEP.1.0.09r青岛啤酒48600600448.520 381000 20190703-09:35:28 1182510157 STEP 的冗余平均每条消息长度为467字节,FAST编码后为127字节平均每条消息长度为160字节,FAST编码后为25字节Level-2 FAST的介绍 FAST的技术优势高压缩比(70-80%)低资源消耗算法简单,效率高,每秒百万级别消息的处理能力FAST系统测试结果u带宽利用率与带宽利用率与STEP系统对比测试结果比较系统对比测试结果比较 测试结果:测试
6、结果:FAST版本最大值为0.679Mbps;平均值为0.162MbpsSTEP版本最大值为2.23Mbps;平均值为0.668MbpsFAST版本平均值为版本平均值为STEP版本的版本的24.2%FAST关键技术 Field Encoding 隐式标签(Implicit Tag)(模版 Template)提供消息层面的优化 操作符(Operator)消息层面和tag层面的优化 Transfer Encoding 二进制数据流 Presence Map(PMAP)Stop Bit Encoded Entities Field EncodingImplicit Tag Implicit tag
7、将FIX的tag=value格式进行分离,变成消息模板和消息内容。消息模板在双方通信之前就确定,实际只需要传输消息内容Field Encoding 常用数据类型Data Data type type DescriptDescription ion strinstring g String data type int32int32integer data typeint64int64long data typesequesequencencerepeating groupField EncodingField Encoding OperatorEntryDescriptionConstantCo
8、nstant valueDefaultDefault value if not specifiedCopyCopy previous value if not specifiedIncrementIncrement previous value if not specifiedDeltaDelta value from previous valueTailTail value from previous valueField Encoding Operator Constant Value用途:主要用于表示模板中的固定数据constant valuevalue in streamoutput
9、value“VALUE”N/A“VALUE”Field Encoding Operator Default Value用途:主要用于表示默认值default valuevalue in streamoutput value“VALUE”N/A“VALUE”“VALUE”“HELLO”“HELLO”Field Encoding Operator Copy Value用途:主要用于表达相邻数据相同的情况previous valuevalue in streamoutput value“VALUE”N/A“VALUE”Field Encoding Operator Increment Value 用
10、途:主要用于表示前后数据有规律的递增的情况previous valuevalue in streamoutput value5N/A651010Field EncodingField Encoding-Template 定义和语法,包括:Field(Message Structure)Field Encoding Operator Data Type 如何表示:XML语言Field Encoding-Template XML格式的模板示例 StructureData TypesField OperatorsTransfer Encoding 对FIX数据实现二进制Byte/Bit Level优
11、化 根据模板生成数据流,并且同步进行压缩的协议 本身具有通用性,是一个与具体的应用无关的协议。Transfer Encodingstream:=message*|block*block:=BlockSize message+message:=segmentsegment:=PresenceMap TemplateIdentifier?(field|segment)*field:=integer|string|delta|ScaledNumber|ByteVectorinteger:=UnsignedInteger|SignedIntegerstring:=ASCIIString|Unicode
12、Stringdelta:=IntegerDelta|ScaledNumberDelta|ASCIIStringDelta|ByteVectorDeltaTransfer Encoding-Stop Bit 最高比特位 0:下一个字节属于同一个实体 1:下一个字节不属于同一个实体 编码举例:Transfer Encoding-Presence Map 在每一条消息的开头处增加标志串(BYTE 数组)每一个Bit标示后面的各个field存在与否,1存在,0不存在 不用传送的field不用进行编码,减少了数据量Transfer Encoding-Presence MapPresence Map Bi
13、t in RequiredOperatorMandatoryOptionalNoneNoNodefaultYesYes constantNoYes*copy YesYesincrementYesYesPresence Map and NULL NULL一般用来指示这一field没有出现(absent)OperatorPresenceOccupy使用NULLNoneMandatorynoOptionalnoyesconstantMandatorynoOptionalyesData Type Example uInt32 ExampleOptional Number如何解析Level-2 FAST
14、 的消息 VSS 1 Initial 2 ReadTemplates 3 Connect VDE 4 Logon 5 Receive Data 6 Decode 7 业务处理 8 数据存储和转发FAST的实现过程的实现过程UA3101的解码实例的解码实例PMAP 5F E0 1011111 1110000010111111100000TID占位占位=118 9d 11000 10011101 110000011101310135 不占位不占位UA310136 10121 占位占位=010122 10011 占位占位=1 8110000001 00000001110012 10115 占位占位=
15、1 8610000110 000001106UA3101的解码实例的解码实例 48 占位占位=1 36 30 31 37 36 B6 60176649 10013 占位占位=1 04 34 4A 83 100 0110100 1001010 0000011 9250051 9250050 10014 10014 占位占位=129 83 101001 0000011 525152505.25010015 10015 占位占位=11E 42 A1 11110 1000010 0100001 500001 500000 500.000 10016 1001710016 占位占位=1 00 7D 15 5D A1 1111101 0010101 1011101 0100001 262500001 262500000 2625.00000 35=UA3101|10011=1|10115=6|48=601766|10013=9250050|10014=5.250|10015=500.000|10016=2625.000|谢 谢