由于你们很多人可能对编程和数学、金融一样感兴趣,所以我有必要讨论一下这个角色实际上是什么样的,以及我“每天”在做些什么,以防你们认为这种类型的工作比“更纯粹”的量化角色更为适合。
许多系统/量化对冲基金被构建为独立的“内部创业”单位,由量化研究人员、量化交易员和量化开发者组成的小组组成。所有这些职业都以“quant”为前缀,因为它们都涉及到大量的数学知识。系统交易的每个方面都高度交织在一起,因此每个人都接触到数学和算法。
在系统基金中,在建立“交易通道”之前,有三个关键领域需要实施。广义而言,它们是:
l 定价/数据源:量化研究人员和交易者需要根据证券价格时间序列开发他们的算法。因此,定量研究的一个重要部分是获得优质的证券定价信息。数据源种类繁多。数据需要以统一的方式检索、储存、清理并提供给量化分析人员。这是量化开发者定价。这大约是我工作的80%。
l 信号/算法:这一方面包括对获得的定价数据进行统计研究,以确定交易机会。对冲基金采用的策略极其多样。对于系统性基金来说,它们通常属于趋势跟踪、均值回归、统计套利或高频交易/做市商。所有的基金都用卡片遮挡在自己的胸前,以致于好的策略很少被披露。这个领域属于量化研究者或交易者。
l 执行/订单:一旦交易策略通过了所有必要的回测并取得来了足够的理论支持,这便由量化执行者建立模型来保证在不导致过多滑点或交易费用等损失的情况下有效地进行交易。和定价一样,这些博士团队经常研究有效的执行算法—事实上执行和信号有很大的重叠。一旦设计了执行算法,量化执行者的工作便是建立一个与主要交易商的接口来保证交易的执行。此外,项目组合管理和调节工具需要完全自动化,能够按需生成快照报告。后者约占我工作的20%。
不幸的是,我不会讨论我们使用的精确算法,因为这篇文章不能泄露交易策略!然而,我将讨论作为量化开发者的定价问题。
量化定价发展
定价包括四个主要方面:连接数据源和获取数据,以统一的方式储存数据,清理数据使其没有错误,以及以简单易用的方式将数据呈现给量化研究人员。
我们的基金主要(但不是唯一)利用股票多头/空头模型作为交易机制。我们主要关注以下资产类别:全球股票、宏观固定收益和衍生品数据、外汇现货数据(和期货)、大宗商品(期货和期权)以及S&P500、富时100指数、VIX等指数。频率主要是日内/ohlc(开盘价,最高价,最低价,收盘价)到十分钟的其他来源的数据。
建立这种证券数据库的第一步是创建一个被称为证券大师的列表。这将列出单个非重复数据库中可能感兴趣的每个资产和安全性。这种主列表的关键问题之一是不同的源通过不同的代码引用相通的安全性。有必要构建一个证券映射列表为每种证券提供独特的定价数据和安全性。
我们的定价数据是从专用和免费资源中混合取得的,通常是通过应用程序编程接口获得的,因为可以以重复、自动化的方式执行。我们构建了一个系统来检查错误,并在没有获得数据或数据与其他来源的相同证券不匹配的情况下提出预警。我们的数据储存在关系数据库管理系统中(RDBMS)中,该系统已经针对性能和我们的实际用例进行了广泛的调整。
数据下载后,我们运行了三种主要类型的数据分析和修改脚本。第一个用来检查从不同来源获得的相同的安全性是否达到了相同的值。第二个用来检验数据中有没有无法解释得“尖峰信号”(即与正常交易范围的重要偏差),如果出现,这通常表示有错误。第三种用来分析公司行为(股息、股票分割、股票发行等),这样我们的产出回报流就变成了一系列百分比的价格变化,而不是绝对价格。
然后,这些数据通过内部编写的API和数据库复制技术。
整个过程最终完全自动化了。唯一需要执行的手动任务是检查错误日志和修复数据源、添加新数据源以及调整APIs以允许调用额外的函数。
除了作为“量化定价开发人员”的职责之外,我还为某些任务制作了基于网络的报告工具,组合调节工具和各种其他“内务”脚本。所有这些软件都是用Python(80%)和C++(20%)混合编写的。我需要大量地加速一些算法(特别是组合协调)使用C++,用Python来进行大部分的数据收集和储存。我们还大量使用MATLAB和Excel进行战略开发和分析。
更多内容微信关注火象查看哦~