分享 | 作为Quant Developer 的日常

在许多量化对冲基金被构建为独立的“内部创业”的公司,它由量化研究员,量化交易员和量化开发者组成一个团队。所有这些职位都以“量化”作为前缀,因为它们都涉及到大量的数学问题。而系统交易的方方面面都高度交织,因此,每个人都会接触到数学和算法。

 

 

首先需要建立三个关键领域,而后才能建立“交易通道”。概括来说,它们是: 

 

定价

量化研究人员和交易员都需要针对证券价格时间序列开发自己的算法。因此,获取高质量的证券定价信息是量化研究的一个重要部分。由于信息流的种类繁多,需要以统一的方式进行检索,存储,清理并将其提供给量化交易员。这是量化开发人员的主要工作,大概占日常工作的80%。
 

信号/算法

这方面所涉及的是对所获得的定价数据进行统计研究,以确定交易的时机。对冲基金所采用的策略千差万别:对于系统性交易而言,它们通常可以分为趋势跟踪,均值回归,统计套利或高频/做市。
 

执行/指令

一旦交易策略通过了任何必要的回测,并且获得了足够的理论性能,执行工程师的工作就是建立模型,以便有效地将交易提交给交易所,以避免太多的时间延误或交易成本。与定价一样,团队中的有些同事通常负责有效地执行算法——实际上,执行和信号的工作有大量的重叠。一旦设计了执行算法,执行量化开发人员的工作就是构建一个到主代理的接口用以允许执行交易。此外,项目组合管理和协调工具需要实现全自动化,以根据需要生成快照报告。这部分在我工作中占比20%。
 

量化定价开发

 

定价主要由四个方面构成:

连接到数据源并获取数据

以统一的方式存储数据

清理数据以避免错误

 

用简单易用的方式将数据呈现给定量研究人员。

 

建立这类证券数据库的第一步是创建证券主列表。此表将列出在单个非重复数据库中可能有利益的每个安全/资产。此类主列表的关键问题之一是,不同的源通过不同的代码引用的却是相同的安全性。因此有必要构建一个证券映射列表,为每种证券提供唯一的定价数据。 
 

我们的定价数据是从特有和免费来源的组合中获得的,通常是通过应用程序编程接口(API),这样就可以以一种重复的自动化方式进行。我们构建了一个系统,用于检查错误,并在未获得数据或与同一证券的其他来源不匹配的情况下标记问题。我们的数据存储在关系数据库管理系统(Relational Database Management System,RDBMS)中,该系统已经基于性能和案例进行了广泛调整。 

 

数据下载后,我们运行三种主要类型的数据分析和修改脚本。第一种是检查从不同来源获得数据的相同安全性是否获得了相同的值。第二种是检查数据中没有无法解释的“峰值”(即与正常交易区间的重大偏差),这通常是存在错误的表现。第三种分析是对公司行为(股息、股票分割、股票发行等)的价格调整,这样我们的产出回报流就变成了一系列百分比价格变化,而不是绝对价格。 
 

随后,通过内部编写的API和数据库复制技术将这些数据披露给其他软件包。

 

整个过程实现了全自动化。唯一需要手动完成的是检查错误日志和修复数据源、添加新的数据源以及调整API以允许其他函数的调用。 
 

除了以上是作为Quant Developer 经常会涉及到的工作内容,在计算机coding 方面的化,我主要使用的是C++ 和python,进行大量的加速,以便收集和存储大部分数据。