> 理财 >

世界滚动:加密量化交易策略机器人开发搭建-量化交易新手指南

时间:2022-11-28 12:58:00       来源:腾讯网

加密量化交易策略机器人开发搭建

量化交易新手指南

在本文中,我将向您介绍端到端量化交易系统的一些基本概念。这篇文章有望为两个读者服务。第一个将是个人试图在基金中找到一份量化交易员的工作。第二种是希望尝试建立自己的“零售”算法交易业务的个人。


【资料图】

量化交易是量化金融中极其复杂的领域。获得必要的知识以通过面试或构建您自己的交易策略可能需要花费大量时间。不仅如此,它还需要广泛的编程专业知识,至少需要使用 MATLAB、R 或 Python 等语言。然而,随着策略交易频率的增加,技术方面变得更加相关。因此,熟悉 C/C++ 将是至关重要的。

一个量化交易系统由四个主要部分组成:

策略识别——寻找策略、利用优势并决定交易频率

策略回测- 获取数据、分析策略性能并消除偏差

执行系统- 链接到经纪商,自动化交易并最大限度地降低交易成本

风险管理- 最佳资本配置、“下注规模”/凯利准则和交易心理

我们将从了解如何确定交易策略开始。

策略识别

所有量化交易过程都从最初的研究阶段开始。此研究过程包括寻找策略、查看该策略是否适合您可能正在运行的其他策略的投资组合、获取测试该策略所需的任何数据以及尝试优化该策略以获得更高的回报和/或更低的风险。如果以“零售”交易者的身份运行该策略,您将需要考虑您自己的资本要求,以及任何交易成本将如何影响该策略。

与流行的看法相反,通过各种公共资源找到有利可图的策略实际上非常简单。学术界定期发布理论交易结果(尽管主要是交易成本总额)。量化金融博客将详细讨论策略。贸易期刊将概述基金采用的一些策略。

您可能会质疑为什么个人和公司热衷于讨论他们的盈利策略,尤其是当他们知道其他人“拥挤交易”可能会阻止该策略长期发挥作用时。原因在于他们不会经常讨论他们所进行的确切参数和调整方法。这些优化是将相对平庸的策略转变为高利润策略的关键。事实上,创建您自己的独特策略的最佳方法之一就是找到类似的方法,然后执行您自己的优化程序。

以下是开始寻找战略构想的一小部分地方:

社会科学研究网——www.ssrn.com

arXiv 量化金融- arxiv.org/archive/q-fin

寻找阿尔法- www.seekingalpha.com

精英交易员- www.elitetrader.com

核药物- www.nuclearphynance.com

数量- quantivity.wordpress.com

您将看到的许多策略都属于均值回归和趋势跟踪/动量的类别。均值回归策略是一种试图利用“价格序列”的长期均值(例如两个相关资产之间的价差)存在并且与该均值的短期偏差最终将恢复这一事实的策略。动量策略试图通过在市场趋势上“搭便车”来利用投资者心理和大基金结构,可以在一个方向上聚集动量,并跟随趋势直到它逆转。

量化交易的另一个非常重要的方面是交易策略的频率。低频交易(LFT)通常是指持有资产超过一个交易日的任何策略。相应地,高频交易(HFT)一般是指一种在日内持有资产的策略。超高频交易(UHFT)是指在秒级和毫秒级持有资产的策略。作为零售从业者,高频交易和超高频交易当然是可能的,但前提是对交易“技术堆栈”和订单簿动态有详细的了解。在这篇介绍性文章中,我们不会在很大程度上讨论这些方面。

一旦确定了一个策略或一组策略,现在就需要根据历史数据对其盈利能力进行测试。那是回测的领域。

策略回测

回溯测试的目的是提供证据,证明通过上述过程确定的策略在应用于历史数据和样本外数据时是有利可图的。这设定了该策略将如何在“现实世界”中执行的期望。然而,出于各种原因,回测并不能保证成功。这可能是量化交易中最微妙的领域,因为它包含许多偏差,必须仔细考虑并尽可能消除这些偏差。我们将讨论常见的偏差类型,包括前瞻性偏差、幸存者偏差和优化偏差(也称为“数据窥探”偏差)。回测中的其他重要领域包括历史数据的可用性和清洁度、实际交易成本的因素以及决定稳健的回测平台。我们将在下面的执行系统部分进一步讨论交易成本。

一旦确定了策略,就有必要获取历史数据,通过这些数据进行测试,或许还可以进行改进。所有资产类别都有大量数据供应商。他们的成本通常与数据的质量、深度和及时性成正比。量化交易初学者(至少在零售层面)的传统起点是使用雅虎财经的免费数据集。我不会在这里过多地讨论提供者,而是想专注于处理历史数据集时的一般问题。

对历史数据的主要关注包括准确性/清洁度、幸存者偏差以及对公司行为(如股息和股票拆分)的调整:

准确性与数据的整体质量有关——是否包含任何错误。错误有时很容易识别,例如使用尖峰过滤器,它会在时间序列数据中挑选出不正确的“尖峰”并对其进行纠正。在其他时候,它们可能很难被发现。通常需要有两个或更多提供者,然后相互检查他们的所有数据。

幸存者偏差通常是免费或廉价数据集的“特征”。具有生存偏差的数据集意味着它不包含不再交易的资产。就股票而言,这意味着退市/破产股票。这种偏差意味着在这样的数据集上测试的任何股票交易策略都可能比在“现实世界”中表现得更好,因为历史“赢家”已经被预选。

公司行为包括公司进行的“后勤”活动,这些活动通常会导致原始价格发生阶跃函数变化,不应包括在价格回报的计算中。股息和股票分割的调整是常见的罪魁祸首。在这些动作中的每一个动作中都需要执行一个称为反向调整的过程。必须非常小心,不要将股票拆分与真正的回报调整混淆。许多交易者被公司行为抓住了!

为了执行回测程序,有必要使用软件平台。您可以选择专用的回测软件,例如 Tradestation、Excel 或 MATLAB 等数字平台,或者使用 Python 或 C++ 等编程语言的完全自定义实现。我不会过多地关注 Tradestation(或类似软件)、Excel 或 MATLAB,因为我相信创建一个完整的内部技术堆栈(原因如下所述)。这样做的好处之一是回测软件和执行系统可以紧密集成,即使采用极其先进的统计策略。特别是对于 HFT 策略,必须使用自定义实现。

回测系统时,必须能够量化其性能。量化策略的“行业标准”指标是最大回撤和夏普比率. 最大回撤表示特定时间段(通常是年度)内账户资产曲线的最大峰谷跌幅。这通常以百分比形式引用。由于许多统计因素,LFT 策略往往比 HFT 策略有更大的回撤。历史回测将显示过去的最大回撤,这是该策略未来回撤表现的良好指南。第二个衡量指标是夏普比率,它被启发式定义为超额回报的平均值除以这些超额回报的标准差。这里,超额收益是指策略的收益高于预先确定的基准,例如标准普尔 500 指数或 3 个月期国库券。请注意,年化回报率不是通常使用的衡量标准,因为它没有考虑策略的波动性(与夏普比率不同)。

一旦策略经过回溯测试并被认为没有偏见(尽可能多!),具有良好的夏普和最小化回撤,就该构建执行系统了。

执行系统

执行系统是策略生成的交易列表被经纪商发送和执行的方式。尽管交易生成可以是半自动甚至全自动的,但执行机制可以是手动、半手动(即“单击”)或全自动。对于 LFT 策略,手动和半手动技术很常见。对于 HFT 策略,有必要创建一个完全自动化的执行机制,该机制通常与交易生成器紧密耦合(由于策略和技术的相互依赖性)。

创建执行系统时的关键考虑因素是与经纪商的接口、交易成本(包括佣金、滑点和点差)的最小化以及实时系统性能与回测性能的差异。

有很多方法可以连接到经纪商。它们的范围从直接通过电话呼叫您的经纪人到全自动的高性能应用程序编程接口 (API)。理想情况下,您希望尽可能自动执行交易。这让您可以腾出时间专注于进一步的研究,并允许您运行多个策略甚至更高频率的策略(事实上,如果没有自动执行,HFT 基本上是不可能的)。上面概述的常见回测软件,如 MATLAB、Excel 和 Tradestation 适用于频率较低、策略较简单的情况。然而,为了进行任何真正的高频交易,有必要构建一个用高性能语言(如 C++)编写的内部执行系统。作为一个轶事,在我曾经受雇的基金中,我们有一个 10 分钟的“交易循环”,我们每 10 分钟下载一次新的市场数据,然后在同一时间范围内根据该信息执行交易。这是使用优化的 Python 脚本。对于任何接近分钟或第二频率的数据,我相信 C/C++ 会更理想。

在较大的基金中,优化执行通常不是量化交易员的领域。然而,在较小的商店或高频交易公司中,交易员是执行者,因此通常需要更广泛的技能组合。如果您想受雇于基金,请记住这一点。您的编程技能与您的统计学和计量经济学才能一样重要,甚至更重要!

执行的另一个主要问题是交易成本最小化。交易成本通常包含三个组成部分: 佣金(或税收),这是经纪商、交易所和美国证券交易委员会(或类似的政府监管机构)收取的费用;滑点,这是您的订单预期成交价与实际成交价之间的差异;价差,即所交易证券的买入价/卖出价之间的差额。请注意,点差不是恒定的,取决于市场上当前的流动性(即买/卖订单的可用性)。

交易成本可以区分具有良好夏普比率的极其有利可图的策略和具有糟糕夏普比率的极其无利可图的策略。从回测中正确预测交易成本可能是一个挑战。根据策略的频率,您将需要访问历史交易数据,其中包括买入价/卖出价的报价数据。出于这些原因,整个宽客团队都致力于优化大型基金的执行。考虑一个基金需要卸载大量交易的场景(这样做的原因多种多样!)。通过将如此多的股票“抛售”到市场上,他们将迅速压低价格并且可能无法获得最佳执行。因此,存在将订单“滴灌”到市场的算法,尽管那时该基金有滑点的风险。除此之外,其他策略“掠夺”这些必需品并可以利用低效率。这是领域基金结构套利。

执行系统的最后一个主要问题是策略性能与回测性能的差异。发生这种情况的原因有很多。在考虑回测时,我们已经深入讨论了前瞻性偏差和优化偏差。然而,有些策略并不容易在部署之前测试这些偏差。这主要发生在高频交易中。执行系统和交易策略本身可能存在错误,这些错误不会出现在回测中,但会出现在实时交易中。在部署您的策略后,市场可能会发生变化。新的监管环境、不断变化的投资者情绪和宏观经济现象都可能导致市场行为出现差异,从而导致您的策略盈利能力出现差异。

风险管理

量化交易难题的最后一块是风险管理的过程。“风险”包括我们之前讨论过的所有偏见。它包括技术风险,例如位于交易所的服务器突然出现硬盘故障。它包括经纪风险,例如经纪人破产(考虑到最近 MF Global 的恐慌,并不像听起来那么疯狂!)。简而言之,它涵盖了几乎所有可能干扰交易实施的事物,其中有很多来源。整本书都致力于定量策略的风险管理,所以我不会在这里试图阐明所有可能的风险来源。

风险管理还包括所谓的最优资本配置,这是投资组合理论的一个分支。这是将资本分配给一组不同策略以及这些策略中的交易的方式。这是一个复杂的领域,依赖于一些非平凡的数学。最佳资本配置和策略杠杆相关的行业标准称为凯利准则。由于这是一篇介绍性的文章,我不会详细介绍它的计算。凯利准则对回报的统计性质做出了一些假设,而这些假设在金融市场中通常并不成立,因此交易者在实施时往往比较保守。

风险管理的另一个关键组成部分是处理自己的心理状况。交易中可能会出现许多认知偏差。尽管如果不考虑策略,这对于算法交易来说问题不大!一个常见的偏见是损失厌恶,即由于不得不实现损失的痛苦而不会平仓亏损头寸。同样,获利可能会过早了结,因为对失去已经获得的利润的恐惧太大了。另一种常见的偏见被称为近因偏见。当交易员过分强调近期事件而不是长期事件时,就会表现出来。当然还有一对经典的情感偏见——恐惧和贪婪。这些通常会导致杠杆不足或过度,这可能导致爆破(即账户净值趋向于零或更糟!)或利润减少。

概括

可以看出,量化交易是一个极其复杂但非常有趣的量化金融领域。我在这篇文章中只触及了主题的表面,它已经变得相当长了!整本书和论文都是关于我只提到一两句话的问题的。因此,在申请量化基金交易工作之前,有必要进行大量的基础研究。至少,您需要通过 MATLAB、Python 或 R 等编程语言,具备广泛的统计学和计量经济学背景,并具有丰富的实施经验。对于高频端更复杂的策略,您的技能组合很可能包括 Linux 内核修改、C/C++、汇编编程和网络延迟优化。

如果您有兴趣尝试创建自己的算法交易策略,我的第一个建议是擅长编程。我的偏好是尽可能多地自己构建数据采集器、策略回测器和执行系统。如果您自己的资金处于危险之中,知道您已经全面测试了您的系统并且了解它的陷阱和特殊问题,您晚上睡得更好吗?将此外包给供应商,虽然在短期内可能会节省时间,但从长远来看可能会非常昂贵。

标签: 加密量化交易策略机器人开发搭建-量化交易新手指南