高频交易软硬件是怎么架构的

144
提问者
2023-03-16 08:28 悬赏 0财富值 阅读 988回答 1

首先,高频交易不一定是套利算法。事实上HFT做的最多的业务是做市(market making),可以是把商品从一个交易所倒卖到另一个交易所,也可以是在同一个交易

默认分类
登录 后发表回答
1楼 · 2023-03-16 09:15.采纳回答

首先,高频交易不一定是套利算法。事实上HFT做的最多的业务是做市(market making),可以是把商品从一个交易所倒卖到另一个交易所,也可以是在同一个交易所内部提供某种商品的流动性。这两种方式的共同点都是让人们可以特定地点买到本来买不到的商品,所以本身就是有价值的,收服务费就可以盈利。
  二,延迟和流量是不同的概念。低延迟不等于高数据量,事实上大部分时间交易数据流量并不大,一个market一天最多也就几个GB。但HFT系统需要在流量高峰时也能快速响应,所以更看重延迟。这也是HFT系统和互联网系统最大的区别所在,HFT系统的精髓在于把单机的软硬件系统的性能发挥到极致,而不是像互联网那样强调高负载和延展性,动辄用几千台机器搭集群的做法在这里是不适用的。用互联网系统的性能指标来认知HFT系统也是没有意义的,像淘宝这样的应用需要保证交易的正确和一致性,包括从终端用户的浏览器到淘宝后台到银行接口之间一系列复杂的事务性数据操作,这个场景和HFT直接对接交易所走高速线路收发交易指令有天壤之别,不能用同样的思维去理解。
  三,一个HFT业务包括从主机到交易所的整条通信线路,在这条线路上有很多段不同的延迟,是需要分开讨论的。如果是做跨交易所的交易,首先需要考虑的是两个交易所之间的网络延迟。当数据通过网络到达主机的时候,有一个最基本的tick-to-trade延迟,是指主机接收到数据到做出响应所需的时间。但这个东西的测量很有技术含量,根据不同的测量方式,它可能包括或不包括网卡及网络栈的处理时间。所以拿到一个HFT系统的延迟数据时,首先要搞清楚它指的是什么,然后再来讨论。
  题主提到从一个直连计算节点的router的角度来观测,这是一个理论上看起来可行但实际仍然很模糊的概念,因为一般router本身是不做存储和处理的,一个router会收发大量不同的数据,要理解一个接收到的包是对之前发出去的某个包的“回应”,是需要相当的处理逻辑的,一般很难这样测。比较合理的测试仍然是在主机端做记录,测试从收到市场数据(tick)的TCP/UDP包到发送交易指令(trade)包的时差。目前(2014)的情况是,这个延迟如果平均控制在个位数字微秒级就是顶级了。因为网络传输才是延迟的大头,如果网络上的平均延迟是1毫秒(1000微秒)以上,你的单机延迟是2微秒还是20微秒其实是没有区别的。一般单机比网络低一个数量级就可以了,比如网络上需要100微秒(很现实的数字),单机控制在10微秒足以保证速度上没有劣势。至于公众报道,有时是为搏人眼球,难免有夸大的成分,不必太当真。

首先,高频交易不一定是套利算法。事实上HFT做的最多的业务是做市(market making),可以是把商品从一个交易所倒卖到另一个交易所,也可以是在同一个交易所内部提供某种商品的流动性。这两种方式的共同点都是让人们可以特定地点买到本来买不到的商品,所以本身就是有价值的,收服务费就可以盈利。
  二,延迟和流量是不同的概念。低延迟不等于高数据量,事实上大部分时间交易数据流量并不大,一个market一天最多也就几个GB。但HFT系统需要在流量高峰时也能快速响应,所以更看重延迟。这也是HFT系统和互联网系统最大的区别所在,HFT系统的精髓在于把单机的软硬件系统的性能发挥到极致,而不是像互联网那样强调高负载和延展性,动辄用几千台机器搭集群的做法在这里是不适用的。用互联网系统的性能指标来认知HFT系统也是没有意义的,像淘宝这样的应用需要保证交易的正确和一致性,包括从终端用户的浏览器到淘宝后台到银行接口之间一系列复杂的事务性数据操作,这个场景和HFT直接对接交易所走高速线路收发交易指令有天壤之别,不能用同样的思维去理解。
  三,一个HFT业务包括从主机到交易所的整条通信线路,在这条线路上有很多段不同的延迟,是需要分开讨论的。如果是做跨交易所的交易,首先需要考虑的是两个交易所之间的网络延迟。当数据通过网络到达主机的时候,有一个最基本的tick-to-trade延迟,是指主机接收到数据到做出响应所需的时间。但这个东西的测量很有技术含量,根据不同的测量方式,它可能包括或不包括网卡及网络栈的处理时间。所以拿到一个HFT系统的延迟数据时,首先要搞清楚它指的是什么,然后再来讨论。
  题主提到从一个直连计算节点的router的角度来观测,这是一个理论上看起来可行但实际仍然很模糊的概念,因为一般router本身是不做存储和处理的,一个router会收发大量不同的数据,要理解一个接收到的包是对之前发出去的某个包的“回应”,是需要相当的处理逻辑的,一般很难这样测。比较合理的测试仍然是在主机端做记录,测试从收到市场数据(tick)的TCP/UDP包到发送交易指令(trade)包的时差。目前(2014)的情况是,这个延迟如果平均控制在个位数字微秒级就是顶级了。因为网络传输才是延迟的大头,如果网络上的平均延迟是1毫秒(1000微秒)以上,你的单机延迟是2微秒还是20微秒其实是没有区别的。一般单机比网络低一个数量级就可以了,比如网络上需要100微秒(很现实的数字),单机控制在10微秒足以保证速度上没有劣势。至于公众报道,有时是为搏人眼球,难免有夸大的成分,不必太当真。