Local EPUB Text
软件
图2-12 算法的常见元素
图2-12中所示的算法元素将在整本书中用于解释常见高频交易策略的算法设计。图2-13说明了以下简单的做市算法的分步过程。
1.开始程序。
2.检测市场情况:市场条件是否适合做市。
3.如果是,开始做市。
4.如果否,等待一分钟。
5.重复步骤2。
图2-13中呈现的算法是“嵌套的”,或者包括图2-13中标为“检测市场情况”和“开始做市”的两个附加算法。嵌套任务可能是区别高频交易系统好坏的关键“秘密武器”。通常,任务是在先进的研究基础上设计的,其中任务是对几个竞争性的想法进行严格测试并取得积极结果后,精选得出的。图2-13中所示的两个嵌套任务将在第15章详细解释。
“算法”这个专业术语通常与术语高频交易、系统交易、电子交易和低延迟交易同义使用。然而,术语之间也有足够明显的区别。系统通常指过程高度条理化的方法。因此,系统交易遵循一些严格的框架,但不必完全自动化。如果交易商在某些指标形成特定模式时手动交易,则被认为是系统化。“系统”这个术语之所以被创造,是用来区分系统化配置的交易商和凭直觉或主观判断进行配置的交易商,后者被称为随意型交易商(discretionary traders)。所有高频和算法交易商都是系统交易商。
图2-13 做市算法案例
“电子”这个术语描述了交易商的执行偏好:是否选择以电子方式或者可能通过电话发出订单。所有高频交易、算法交易和低延迟交易都必定是电子的,但系统交易可能涉及非电子部分。相反,许多仅使用电子交易系统线路的订单,既可以用也可以不用算法。然而,由于大多数市场和交易商正在转向电子平台,“电子交易”一词变得隐式和过时。
“低延迟交易”是指利用交易商和交易所之间的快速连接开展的交易。如上文所述,延迟测量了交易商和交易所之间的时间差。大多数延迟的测量值以微秒为单位记录。高频交易系统通常也是低延迟,但反之不然:低延迟系统通常由低频交易商配置,以获得更好的交易价格。
一旦算法被设计,它被分解成多个部分并且以计算机理解的语言编码。编码的目的是将算法的逻辑准确地翻译成计算机“说”,并且在该过程中,当计算机读取和解释代码时,在“运行时间”期间创建尽可能小的延迟。直接写入FPGA芯片的代码是目前最快的算法。然而,许多高频交易商部署非FPGA架构也非常优秀,并依赖于C++和Java之类的语言来对他们的系统进行编码。虽然C++仍然是人类容易理解的最快的计算机语言,但许多系统都是用Java编写的,它是最慢组件的变通解决方法。因此,如著名的纳斯达克OMX系统据报道用的就是Java编码,禁用Java垃圾收集,并用C++替代,如直接访问存储器以提高速度。第16章描述了编码实现的最佳实践方式。
算法的实际交易逻辑代码的概述往往相当短。在许多成功的情况下,交易逻辑只包括50行的代码。除了实际的买入和卖出的决定之外,每个高频交易系统还包括支持报价的数据检索功能,可以在10000多行代码情况下实现和多达5000行代码,以及发送交易和确认收到的应用程序下的同样效果。也许,每个高频交易系统中最冗长但最强制的组成部分是其风险管理的相互制衡[1],它总共可以有50000多行代码。高频交易的风险管理将在本书第14章详细讨论。
总结
算法执行与当今的市场不可分割。这是一个相当必要的功能,它为所有投资者,无论大小,带来相当可观的价值。随着技术成本的大幅下降,目前大多数投资者可以负担建立和使用先进的算法,包括为高频交易设计的算法,以前只有少数市场参与者才能使用,如主机托管提供的安全和速度等额外益处的服务。
章末问题
1.你可以在将交易订单通过互联网传输到交易场所之前进行加密吗?解释原因。
2.史密斯先生看了关于金融业的内容,了解到计算机技术“军备竞赛”,并决定投资最新的超级计算机,以提高快速订单传输的概率。史密斯先生的投资是合理的吗?今天大多数消息拥塞发生在网络空间的哪里?
3.什么是主机托管?
4.平均来说,与报价信息相比,交易订单信息的传输速度要慢多少?
5.什么是心跳检测?
6.X仪器在交易所A的最低卖价包含300单位,交易所B的最低卖价包含500个单位,交易所C的最低卖价只包含100个单位。客户希望你代表他购买550台仪器,你如何分拆客户的订单并将它们在影响最小算法的情况下发送到交易所?
[1] 相互制衡(checks and balances)系美国三权分立体制。——译者注