许多系统化/量化对冲基金是由独立的“内部创业小组”组成,包括由量化研究员、量化交易员和量化开发人员所组成的小团队。所有这些头衔的前缀都是“量化”,因为他们在很大程度上都和数学有关。系统交易的各个方面高度相互交织,因此,每个人都必须直面数学和算法。


对于量化基金,在交易正式启动之前,有三个关键方面是必须要落实的。一般来说,它们是:


价格/数据源:量化研究员和交易员需要根据证券价格时间序列开发自己的算法。因此,量化研究的一个重要方面就是获取高质量的证券价格信息。数据源类型多种多样。数据需要被检索、存储、清洗,并以统一的格式提供给量化人员。这是量化开发人员的工作,也是我几乎80%的工作内容。


信号/算法:这方面的工作涉及对获取的价格数据进行统计研究以识别交易机会。对冲基金所采用的策略是非常多样化的。对于量化基金,他们通常会采用趋势跟踪、均值回复、统计套利或高频/做市商策略等。所有的基金都会保好自己的底牌,因此,好的策略很少会透露出来。这一块就是量化研究员或交易员的工作。


执行/订单:一旦交易策略通过任何必要的回溯测试,并获得足够的理论性能,接下来就是针对交易执行的建模,将订单以最优的方式发送到交易所,同时不至于造成太大的滑价或交易成本。正如定价一样,博士团队通常会研究有效执行下单的算法,事实上,交易执行和信号有明显的重叠。一旦执行算法设计好,接下来就是执行量化开发人员的工作——建立与主要经纪商的接口以实现交易。此外,投资组合管理和调整工具需要完全自动化,以按需生成快照报告。后者约为我20%的工作内容。


遗憾的是,我不会谈论我们所使用的具体算法,因为这篇文章是不能够泄露交易策略的!不过,我将讨论作为一个量化开发人员在数据源方面的工作。


主要包括四个方面的工作:连接到数据源和获取数据,将这些数据以统一的格式进行存储,数据清洗以避免错误,将数据以简单、易于使用的方式提供给量化研究员。


我们基金的主要交易机制是利用股票多/空模型。我们主要关注以下资产类别:全球股票、固定收益宏观和衍生数据、外汇现货数据(期货)、商品(期货及期权)和指数如标准普尔500指数、富时100指数、VIX指数等。频率主要为日开高低收价格数据到其他特定来源的10分钟民意调查数据。


构建这种类型的证券数据库的第一步是创建所谓的证券主列表。它将在单一的、非复制的数据库列出可能感兴趣的每一个证券/资产。如此主列表的其中一个关键问题是,同一证券的不同数据源使用的是不同的代码。因此,有必要构建一个证券映射列表为每个证券提供独特的价格数据。


我们的价格数据通过专有通道和免费渠道获得,通常是通过应用程序编程接口(API),因此,可以通过可重复、自动化的方式执行。我们构建了一个系统来检查错误并标记缺失数据或是与其他数据源同一证券不匹配的数据。我们的数据被存储在一个关系数据库管理系统(RDBMS),广泛微调性能和我们的用例。


一旦数据被下载,我们将运行三个主要类型的数据分析并修改脚本。首先确定对于不同数据源的同一证券数据是相同的。其次,确定数据中不存在无法解释的异常值(即显着偏离正常范围),通常来说是错误值。第三个是根据公司行为(股息、股票分割、份额问题等)调整价格,这样我们的输出值返回的是一个价格变动百分比序列,而不是绝对价格。然后,这些数据通过内部编写的APIs和数据库复制技术被其他软件包所调用。


这整个过程最终是完全自动化的。仅有的手动任务就是,检查错误日志和修复数据源,添加新的数据源和调整APIs以增加额外的功能。


在我的工作之上,我也会创建基于网页的报表工具、组合调整工具和其他针对某些任务的各种各样的“管家”脚本。所有这些软件都是通过Python(80%)和C++(20%)来编写完成的。当需要急剧提高某些算法的运算速度时,我通常会用C++;Python主要用于数据收集和存储。我们还会大量使用Matlab和Excel进行策略开发和分析。