鱼C论坛

 找回密码
 立即注册
查看: 2220|回复: 0

[经验总结] 揭秘高频交易中多快才算快?

[复制链接]
发表于 2021-5-16 11:35:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、高频量化交易者们的主要作用是什么



1.保证在现有的市场环境中制定的交易策略的准确性和可靠性;

2.通过对市场机会或不利因素的透彻理解,优化现有交易策略,或制定新的交易策略,利用市场影响因素来赚钱。



二、为什么量化机器人在高频交易领域如此流行



自动化量化交易体系可以将多类不用频繁交易缺有很大概率能成功赚钱的交易策略有效组合在一起,最大化交易收益。计算机在监控繁多的交易量方面远胜于人。



三、为甚高频量化交易利润如此可观



交易风险与交易量平方根呈线性相关,交易回报与交易量呈线性相关。高频交易利用此关系,进行大量交易,交易回报增长远远高出交易风险,从而得到丰厚报酬。



四、高频量化交易的丰厚利润取决于哪些因素



高频量化交易的丰厚利润取决于“快速处理数据的能力”,与“交易持有期限无关”,因此“延迟”是影响利润的关键变量。此相关性取决于交易市场,和市场的成熟度及市场参与者的经验水平密切相关。


                               
登录/注册后可看大图




五、【实验】高频量化交易到底要多快



以芝加哥商品交易所的美国10年中期国债期货为例:

一个正常交易日内有约500万的交易指令更新,新的交易指令并不是随时间平均分配的,而是随机地在某一时间段内集中产生。



如果将未产生交易指令的时间段去除,则一个交易日可以浓缩为5分钟。交易回报率和一个交易日内的报升量紧密相连,因此交易表现和快速处理数据的能力,即“延迟”密切相关,不仅跟“平均延迟”相关,与“延迟方差”也有关。



“延迟”的分布并不是正态分布,因此通常测量有99%的概率是最差延迟的点。



一般情况下,有99%的概率为最差的延迟和延迟中位数相差并不会大,然而一旦出现相差很大的情况,则意味着交易员们有机会进行延迟套利,从而获利。




                               
登录/注册后可看大图

图1.交易回报与交易数据量的关系



六、【实验方案】如何缩短交易时间



现在我们来搭一个测试平台,从下述几个方面来看看如何缩短高频交易的交易时间:



1.解决高频交易中的“三只老虎”
高频交易中的“三只老虎”:

(1)“锁定”

(2)“内存分配”

(3)“任务转换”




人们会本能认为,只需多个运算处理能力极强的CPU同时工作,即可解决高频交易中的快速处理大量数据的问题,却忽略了因此而产生的问题,即:CPU越多,则CPU之间的任务转换和内存重新加载的工作量就越大。



为了避免“任务转换”带来的繁重工作量,一个方法是可以将总的交易工作量拆分成不同的工作包,每个工作包由一个专有的CPU来处理



通常,工作包按照逻辑可以分成四类

1)数据 – 负责获取市场数据;

2)交易指令 – 负责发送和接受指令,及执行交易指令;

3)策略 – 负责制定交易策略;

4)其它 – 负责处理日志,数据集等工作杂项。



将工作量拆分成子工作包,又会导致各子工作包之间的通信成本增加。一般的通信模式是要对同一数据结构的不同信息进行锁定,因此会导致通信速度下降。



针对这个问题,可使用“环形缓冲器”进行解决。它是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。它适用于先进先出的数据缓冲,可以向通信程序提供对缓冲区的互斥访问,因为当一个数据元素被用掉后,其余数据元素不需要移动其存储位置。



2.快速获取数据

下面我们来介绍两种提升数据获取的方法:



(1)A-B行

各工作包之间的任务交换会带来冗余的数据输入,这钟现象可用“A-B行”方法来减轻,因为数据并不是同时录入到同一行上,而是在某一时间点到达A行,在另一时间点到达B行。交替进行A行或B行的数据输入可以减少获取数据的时间,譬如会给芝加哥商品交易所带来几微秒的数据获取优势,即可大大提升高频交易的延迟套利。



(2)网卡
当网卡接收到一组数据包时,并不能直接进行交易策略的执行,而是先要经历下列步骤:



数据包→网卡→OS操作系统中的网盘→内核(进行数据处理)→接口程序库→应用端



运用如SolarFlare公司提供的特殊网卡,可大大加速这一过程,因其可以省去上述步骤中的“传输至内核进行数据处理”这一步,用以提升交易延迟。



SolarFlare称其研发出了一款“低延迟网卡”,实现了“内核旁路”技术,使得接收到的数据包可直接传输到应用端,不需和操作系统进行交互,不需额外的IO接口,干扰或者冗余的数据备份等。SolarFlare号称其低延迟网卡可将7秒的传输延迟减至1秒。



3.快速的FIX通信接口

FIX – Financial Information eXchange,金融信息交换协议,是一个开放式协议,为了将各类证券金融业务需求流程格式化,转换成可用计算机语言描述的功能流程,并在每个业务功能接口上统一交换格式,方便各个功能模块的连接。



FIX会话协议提供了一个消息传递的可靠数据流,与FIX应用协议一起,提供了一个可靠的传输FIX应用消息的传输机制。FIX会话层与数据传输相关,FIX应用层则定义了商业相关的数据内容。



FIX会话协议由标准头(Standard Header),标准尾部(Standard Trailer)和基于“tag=value”语法的管理消息构成。所有的FIX消息都由一个唯一的序列号进行标示,在每一个FIX会话开始时被初始化为1,并在整个会话期间递增。



借助一些开源库可以大大简化处理FIX消息的时间,如quickFIX等,可以在40~50微秒的时间内处理一条FIX消息。OnixS则号称可以达到6-7微秒/每条消息的处理速度。再加上一些软件的技巧和数据处理方法,可以做到1微秒每条消息的处理速度。利用开源库处理FIX消息速度十分之快的原因在于无垃圾消息的产生,也不用处理非相关领域的非相关消息。



4.状态机:交易者在快速交易中可实时明确交易位置

一个状态机可对指令的处理进行有效的建模,使得交易系统更加强壮,避免执行无效的交易策略。



原理如下:一个交易指令为N个状态中的一个,且交易指令的生命周期和准许的状态跃迁严格遵循马可维夫链。



一个交易指令的开始状态为“NEW”,下达至交易市场为“SENT TO MARKET”,被确认后状态改为“CONFIRMED”,指令完成后变为“FILLED”。



完成的指令,即“FILLED”状态的指令不会被送到交易市场去执行,因此只有“某些状态的指令”才是有效的。

交易平台内的信息复杂纷乱,会对指令的现有状态造成干扰,状态机的出现是为了防止已经完成,即“FILLED”状态的指令不会被篡改成“UNFILLED”的状态,重新进行交易,使得指令无效。



下图的矩阵(表1)可用来表示指令的状态跃迁是否被允许,如指令从一个行里的某一个状态跃迁到一个列里的状态,用于验证是否可行的代码格式为:



Return_transition_matrix [from_state][to_state]



如果返回值为真,则指令仍有效,指令状态仍可被改变/更新。


                               
登录/注册后可看大图

表1. 用于查询状态跃迁是否可行的矩阵



5.存储连接方式



深入理解一个CPU的内存和I/O系统的连接方式能够让处理器发挥最大的潜能。影响数据处理速度的关键点在于从RAM上加载变量,而非进行数学运算。前者相较于后者对性能提升的影响要大出不止几个数量级来。



因此,确保数据离CPU足够近可大幅提升高频交易的交易速度,可设计一个“状态查询方案”来解决此问题,将所有的状态和工作变量捆绑在一个物体中,确保他们在同一个地址空间,及同一个快速缓冲贮存区内,在系统中出现大量数据涌入的情况可快速进行状态处理。



七、【实验结果】 减少8毫秒的交易延迟



通过上述实验平台的搭建,对各个变量进行优化,最终可以减少8毫秒的交易延迟。进一步优化硬件和FPGA,选择高性能的硬件来支撑,能够帮助减少更多的交易延迟,从而获得更丰厚的高频交易回报。



总结



本文仅是从技术细节上给出了一个交易延迟优化的可行性方案及评估,希望给各位技术大拿们一些启发,也希望各位量化交易员们能够给出更多可行性优化方案,一同探讨。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 23:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表