含义
高频交易是指从那些人们无法利用的极为短暂的市场变化中寻求获利的计算机化交易,比如,某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差。
发展现状
在中国,随着金融市场的不断创新和发展,这些条件都已逐步具备。特别是2010年4月股指期货上市使中国股票市场具备了完善的套利机制,高频交易在中国也将面临一个快速发展的阶段。
特征
由以上几点可以得出,交易的速度对高频交易至关重要,胜负通常只在毫秒之间。
关注重点
高频交易需要在流量高峰时也能快速响应,所以更看重延迟。
高频交易的精髓在于把单机的软硬件系统的性能发挥到极致。
一笔交易包括从主机到交易所的整条通信线路,在这条线路上有很多段不同的延迟:交易所到主机网络延迟,主机内部处理。
延迟测试
最基本的tick-to-trade延迟,是指主机接收到数据到做出响应所需的时间。比较合理的测试是在主机端做记录,测试从收到市场数据(tick)的TCP/UDP包到发送交易指令(trade)包的时差。
网络延迟
主机到交易所之间的网络延迟:
—国外因为可以直连交易所,基本上都有微波线路,延迟比光纤要低很多。网上经常听到的高频装备竞赛,也指这方面。
—国内:到交易所线路都是通过券商或期货公司。一般都是主机托管在交易所机房,从物理距离短来缩短延迟。另外机房内部升级万兆网卡也可降低延迟。
主机端网卡延迟
当数据送到了交易主机,这时候需要决定网卡的方案,专用的网卡除了自身硬件的设计外,一定需要的是切换掉系统自带的linux内核空间的TCP/IP栈,避免昂贵的上下文切换。
网络栈上的I/O延迟,收包发包加起来做到2?3微秒是可以的。这个层面上FPGA是很有应用价值的,因为可以做一些额外的逻辑处理,如解包等,进一步减少CPU中断。
业务逻辑
这部分也许会用到一些数学建模,核心的还是延迟,这个在计算机内部分两个部分,一是core的使用率,比如irq balance,cpu isol,affinity等,主要是要尽可能的独占core;另一个是cache invalidation,从L1/L2/L3 cache到TLB,page fault,memory locality之类都要仔细考虑,这个更多考验的是对体系结构的理解和程序设计的功力。
系统、编程语言
具体选择那种语言,首先是取决于公司的技术积累和市场上的技术人员供给,一般广泛使用c/c++,最好选择针对cpu优化的编译器,如Intel C++编译器。
核心的部分一般就是加减,比较。业务逻辑本身的处理完全可以做到纳秒级。
操作系统:普通的企业级linux已经有足够的空间用来做性能优化。简单说,一个企业级的linux(如redhat)加上通用的架构(intel主流处理器)足以做到市面上已知的最低延迟。