如何避免量化交易的陷阱?

如何避免量化交易的陷阱?

 

大家好,我是Lucy@FinTech社区,今天的文章将和大家分享避免量化交易陷阱的方法。欢迎添加以下微信:fintech78,加入社群,提认知,攒人脉,求职招聘!

当我们踏入量化金融世界大门,会发现这是个让人着迷的世界,在这里我们可以使用各种金融数据、并通过数学和统计学、机器学习等来建立模型,去理解金融市场,并从金融市场获取丰厚的汇报,如此种种都足以让人激动不已。

 

现代量化金融的历史,最早可以追溯到20世纪初,有记录的最早的量化模型,是当时巴赫利尔建立的期权定价模型。但量化金融的真正发展起来,是在80年代中期,当时的数学家和统计学家,开始利用数学方法建立量化模型来预测(和交易)金融市场。

 

如果我们回顾Winton Capital、AHL、Aspect Capital和Renaissance Technologies等基金的历史,我们会发现早在80年代中期,这些基金就已经在使用数据和数据科学建立模型,并且利用开发的量化模型来捕捉金融市场中的机会。

 

20世纪90年代,量化/系统自动交易属性的基金的快速增长,当时Millennium Partners、D.E Shaw、LTCM和AQR等基金筹集了大量资金开发自动交易系统。随着计算能力的指数级增长,以及量化社区的不断壮大,使量化基金成为投资者蜂拥而入的最热门领域。

 

量化交易涵盖了非常广泛的交易策略(从大数据分析到高频交易做市)。在本文中,我们将重点介绍量化分析和数据科学,因为它们被不同类型的交易者广泛使用。通过对量化交易持久的研究,我们发现在制定量化交易策略时,有四个主要陷阱:

1. 理解统计学和概率。

2. 模型实现。

3. 策略回溯测试/模拟。

4. 风险管理。

 

在我们意识到到存在这些陷阱之后,让我们深入挖掘一下,为什么我们可能会因为这些陷阱,导致我们可能的失败(损失)。

 

理解统计学和概率

统计分析是数据科学和量化交易的基础。当我们分析数据(尤其是时间序列)时,如果我们对统计/概率(以及统计概念)没有很好的理解,我们很容易陷入各种陷阱!

 

正态分布

正态分布假设是我们在对金融资产动态建模时,所做的最弱的假设。关于金融资产时间序列的正态性假设,已经发表了许多论文,然而,由于缺乏更好的选择,我们使用高斯(正态)分布,因为它允许我们非常容易地分析数据。假设收益率分布在钟形曲线下,通常会在出现3+个标准差收益率,给你带来的巨大的惊喜。如果我们能准确理解“正态性”有时可能是一个较弱的假设,我们就可以使用已实现的分布(采取不同的时间框架)并验证它是否符合正态分布,通过这种方式我们可以评估我们资产的回报分布有多接近正态。

 

相关性

如果说有一件事很多数量化分析师和交易员都喜欢的话,那就是“相关性”。相关性可能是统计学中使用最多但误解最多的概念。大多数人使用的相关系数是“皮尔逊相关”。简而言之,相关性描述了两个变量(X,Y)之间的线性关系。相关性在(-1,负线性关系)和(+1,正线性关系)之间振荡。这听起来很简单,那我们怎么会弄错呢?

 

首先,我们需要理解什么是相关性。它不是一个预测因子(也就是说,它不表示因果关系,而是一个线性关系)。当我们使用相关性函数时,我们需要确保不会犯以下错误:

1.关联价格而不是回报(无论是对数回报还是实际回报),当我们处理时间序列时,我们通常处理的是资产价格。资产价格本质上是“非平稳”的。“非平稳”过程基本上意味着资产呈现一种趋势(或非均值回复过程)。例如,如果我们将黄金现货价格与美国10年实际收益率相比较,我们可以清楚地看到使用非平稳数据的效果。这就是黄金/收益率价格的回归。

Image

黄金/美元10年实际收益率价格回归 R²=0.81 , R=-0.9

下面展示的是价格变化(即平稳时间序列)的回归情况

黄金(log Rtn)/10年实际收益率 . R²=0.18, R=-0.43

 

2.没有更多的考虑样本量/频率—当我们进行相关性分析时,就像我们分析波动性一样,我们需要考虑样本量/频率。大小和频率对我们的相关性估计都有很大影响。如果我们用的频率太短,我们可能会混淆短期行为和持续相关性。这个问题的另一面是使用样本量持续时间太长(比如说,当我们想要交易短期策略时,与1年周期的相关性)。如果我们看看下面的相关矩阵热图,我们可以清楚地看到使用20天窗口和180天窗口之间的区别

Image

解决样本量问题的较好方法是对不同的样本量和不同的周期(非重叠周期)进行采样。

 

3. 假设长期相关性持续存在—在相关性分析中,其中很大的陷阱是认为长期相关性不会破裂。在金融压力和市场低迷时期,这种假设通常会被抛到窗外,因为这时相关性往往会失效并走向极端。从下面的图中我们可以清楚的看到在2020年3月,相关性的巨大变化!

Z-score和均值回归

 

作为交易者,我们希望进行有良好风险回报的交易。我们用来确定风险回报的一种方法是使用Z-score。简言之,Z-score是一种测量我们观察结果与分布平均值间距的方法。很显然,作为交易者,我们的目标是寻找极端情况,因为它们呈现出最佳的风险回报(因为我们假设某种回归/收敛到平均值)。Z-score的棘手之处是,就像统计学中的其他问题一样,它高度依赖于我们的样本量和频率。使用Z-score作为信号的陷阱的一个很好的例子是2020年3月和4月的黄金期货场外交易。如果我们在3月24日计算Z-score,我们会得出结论,风险回报处于极端水平(平均值+5.8个标准差)。

Image

与1年回溯期相比,这的确是极端的,但如果我们仅在2周后观察,我们会发现,这一风险汇报已进一步扩大到平均值+8.5个标准差(几乎是3月24日的两倍)

Image

所以我们看到,使用Z-score是时间序列中,探测极端性的很好的指标,但它不能是唯一的指标。

 

解决这个陷阱的一个好办法是将我们目前的观察结果与历史上不同的回溯窗口进行比较,以解释不同的市场机制。

 

模型实现

在我们理解了统计分析中可能存在的陷阱之后,我们进入交易的核心——模型。虽然在实施我们的模型/策略时,有很多方法可能会导致失败,但我们将专注于我们可能犯的最常见(也是最关键)的错误。避免这些陷阱将大大有助于确保我们的模型的适应性和鲁棒性。

 

过拟合/欠拟合

模型拟合是艺术也是科学。在拟合我们的模型时,我们需要在模型过拟合和模型欠拟合之间找到平衡。因为这两种类型的拟合最有可能导致我们的模型性能不佳。

 

过度拟合-当我们的模型在捕捉数据间的关系时非常精确,往往会导致过度拟合。通常,过度拟合模型会涉及相对大量的变量。

欠拟合-欠拟合是过度拟合的反面。当模型太简单(变量太少)时,会导致拟合不足,这使得它不能精确的捕捉数据间关系。

Image

美元兑日元1周RVol与UDSJPY 1个月RVol回归

 

在拟合模型时,我们的目标是使用最少的变量数目,同时模型有最强大的预测能力。这背后的想法是,我们希望将我们的模型校准到最低限度,同时能产生稳健结果的模型。我们添加的变量越多,需要进行的校准越多,它就越无法快速应对不断变化的市场。

 

样本内/样本外数据

在任何模型开发中,区分样本内/样本外都是个关键点,因为“训练集”和“测试集”之间的重叠会使我们的结果不准确。我无法告诉你有多少次我得到了看起来非常成功和有利可图的推荐模型,结果却发现它们在训练集上进行了部分测试。在构建样本数据时,我们需要确保将数据集拆分为“训练集”和“测试集”(并确保它们不会混合在一起)。

 

异常值处理

不管我们喜欢与否,异常值观测都是我们数据的一部分。我们不能忽视这些异常值,但是,我们需要知道如何处理它们,这样我们的模型就不会因为极端的观测而产生偏差。虽然我们可能会试图忽略(或删除)异常值,但我们应该忍住这种冲动,因为实时交易可能会时不时地引入我们的模型异常值。显然,我们需要区分不同类型的异常值——如果我们看到观察值明显是错误的(数据错误),我们可以删除它,但是,如果它是有效的观察值,我们应该接受它,并让我们的模型处理它。

 

策略回溯测试/模拟

现在我们有了一个基于稳健的统计/数据分析的可靠模型,我们希望在历史(或生成的)数据上对其进行回测。这是模型开发的一个关键部分,因为这是我们可以看到(和分析)模型在受控环境中的行为的阶段。尽管在这个阶段(与之前的阶段相比)犯错误的方法较少,但这些错误可能代价高昂,让我们无法发现模型的弱点(或问题)。

 

测试不同的市场机制

当我们构建模型时,我们希望它在100%的时间内都表现良好。不幸的是,这几乎是不可能的!因为不同的策略会在不同的市场机制中表现良好。虽然我们不能建立一个完美无缺的模型,但我们可以确定模型表现不佳的地方。为了识别这些弱点,我们应该在不同的市场机制下测试我们的策略。

 

考虑交易成本

当我们回测/模拟我们的模型时,我们通常要么获取历史数据集,要么模拟一些数据。这样做时,我们往往忽略交易成本(因为考虑交易成本会使我们的分析变得复杂)。忽视交易成本会产生不切实际的结果(会产生比我们在实时交易中预期的更高的损益)。在分析交易成本时,我们需要考虑资产的流动性、买卖价差、滑动等。考虑所有交易成本将使我们的测试结果更接近实际结果,并让我们更清楚的评估模型/策略的盈利能力。

 

风险管理

风险管理流程能确保我们交易行为的可持续。谨慎的风险管理将确保即使我们的模型赔钱,我们的本金也不会完全消失。良好的风险管理将涵盖三个方面:仓位、风险极限和退出点。

 

仓位管理

仓位大小是交易者通常忽略的事情。我们往往很少考虑仓位的大小。适当的仓位规模需要考虑许多变量,包括账户规模、预期风险水平等等。

一些交易者倾向于在仓位对他们不利时将仓位翻倍,但如果市场继续对他们不利(这最终将迫使他们止损),这可能会使他们面临进一步的损失。解决这一问题的一个好办法是,在开始时定义总仓位规模和我们将增加仓位的水平。

 

风险极限

设置能忍受的风险极限是我们风险管理流程的重要部分,它应该独立于我们的交易模式/策略。鉴于我们的风险参数(账户余额、保证金、风险承受能力等),风险极限应该为我们的风险敞口和我们允许的最大损失划定清晰的界限。如果我们的风险极限很模糊,那么当形势对我们不利时,我们更有可能遭受重大损失,因此我们在执行策略时必须遵守纪律,不要超过风险极限。不同的策略会有不同类型的风险限制。

 

退出点

我们交易的退出点将决定我们的风险回报。每笔交易都应该有一个明确的退出点(止损和获利回吐),以反映我们对潜在利润的看法,我们将退出交易并承认我们的信号/观点是错误的。不设置这些点将导致低风险调整回报。

 

正如我们前面所见,虽然有很多创造性的交易策略方法,但是它们也会很容易让我们陷入定量分析/交易陷阱。上面展示的几个例子只是我们将一个健全的模型/策略转变为失败的几种方法。盈利策略远不止是将数据放入ML库(PyTorch/TensorFlow/SkLearn)并等待它生成模型。它包括大量的准备工作、对量化概念的理解、正确的建模和谨慎的风险管理。承认陷阱和发现可能的陷阱是建立健全量化交易活动的第一步。

 

本次的分享就到这里