欢迎光临散文网 会员登陆 & 注册

(触手译)3/N_exAHL顶级对冲基金经理:系统化交易

2022-02-17 10:49 作者:触手期货  | 我要投稿

已翻译章节回顾:

人的主观认知缺陷;金融行为学;引出系统化交易的必要性;

市场历史数据表现的分布状态;

好的系统必备特征;

系统失效的特征(盈利的来源);

交易风格在历史统计上的表现区别;

可实现的夏普率表现;

提高夏普率的方式;

经常白嫖的人会 1产生幻觉 2记忆力差 4不识数 6神志不清 这九点大家记牢


--------------------------------------------------------------------------------------

这个系列是全球顶级CTA对冲基金AHL的基金经理Robert Carver的Systematic Trading书籍(中文译)。

笔者在AHL的十几年里管理了超过百亿的全球宏观对冲基金。离开AHL后,运用这一套系统规则超过7年。其本人有Pyton写的开源回测框架及交易系统.https://qoppac.blogspot.com/

我抽空余时间把书籍按照自己的理解翻译出来。因为内容真的很多,所以见谅,更新的会比较慢。

本书作为入门书籍,仍旧有难度,因为有相当多的东西和实盘实战挂钩。框架建立于理论,但其它包括回测等等的很多细节问题都仍旧需要单独解决。

无论是主观交易、半自动交易、程序化交易,都推荐阅读的,从入门到放弃的书籍

细节的备注和超级链接会在后续添加。

--------------------------------------------------------------------------------------

第二大块——工具

    第三章:拟合

整个章节的内容围绕利用数据来为系统化交易者建立交易规则。如果你是半自动交易、或者是大类资产配置,那没有必要使用这个框架。

使用一个系统化的交易系统意味着你需要选择 一个/多个 交易规则,并且同时扔掉哪些不值得的规则。这个过程称为拟合。因为作为人,我们本身有非常大的认知缺陷,所以拟合的过程是很危险的很容易陷入误区。你需要非常谨慎的对待过拟合。如果你的规则非常非常适配历史数据,那这个规则很有可能在未来不具备盈利的能力。

    章节概述

  1. 过度拟合的危险(利用历史数据有选择性的筛选和适配规则所带来的风险)

  2. 有效的拟合(如果你执意要拟合交易规则,你最好要遵守的步骤)

  3. 我是怎么选择交易规则(我用来很好避免过拟合的流程)

    过度拟合的危险

    离开对冲基金行业后不久,我想为当地一家自营交易公司Aqueduct capital提供咨询服务,并管理一些资金。办公室里经常有头发花白的前伦敦国际金融期货交易所交易员和天真的年轻人,他们整天交易期货合约。但老板特别为他的定量团队感到骄傲,这个团队由两名20多岁的年轻人组成,他们拿着电脑,运行着现成的备用测试软件包。

    “这是乔。他到这里才一个月,就已经提出了50条新的交易规则,这些规则在背测中是有利可图的!”

    “是的,这个软件太棒了。它每天可以自动测试数百条规则,”

    乔补充道。我强作一脸的严肃,尽我所能的圆滑地回答道:“嗯,我相信有些办法是管用的。”

    结果是打算不参与这家公司了,但幸运的是,公司在几个月后清算。

    从成千上万种可能性中筛选出明显有利可图的规则,这是一种极其危险的方法,原因将在本章的其余部分变得显而易见。想法优先首先要测试规则和变量,在理解乔为什么走错路之前,我们需要清楚什么是拟合。在这一章中,我将把注意力集中在第二章中介绍的第一种方法上。你已经知道,我更喜欢理念优先的方法,但我在这里使用它的原因是,与数据优先的替代方法相比,它更容易解释和理解如何避免过度拟合。拟合的过程将涉及从候选列表中选择一个或多个交易规则,每个规则都基于一个好的想法。让我们看一个人为的例子,但是要注意,这不是我推荐使用的规则。基本假设是英镑/美元的汇率在图6所示的范围内移动。你可能会认为,如果英镑比去年的平均水平低5%就买进,在高于平均水平5%的时候卖出,是一个不错的策略。这是均值回归规则的一个例子。然后我们在历史数据上测试这个初始规则,看看它的执行结果和表现行为。在这个阶段,如果规则不管用,就放弃它,继续下一个想法。如果你足够喜欢这个规则,你可以进入下一个阶段,我称之为调试,尽管很可能也很希望不通过调试直接使用初始规则。

图6

    在调试过程中,检查基本交易规则的一些变量。在这个简单的例子中,你可以用3%、6%或10%来测试正负5%的原始范围,或者你可以将当前的价格与过去一年、一周或两年的平均价格进行比较。通常你会选择使用业绩衡量标准,类似夏普率,来选出最能盈利的规则。调试还可以用来——我将在本书后面展示——找到以给定方式运行的交易规则,比如以给定的频率来交易。然后你可以决定保留哪些变量。一旦你选择了一个交易规则和变量的组合,你需要决定如何在其中分配你的资金。像这样的投资组合配置决策是下一章的主题。目前值得注意的是,一个表现不好的变量很可能弃用,或者在整个交易系统中给它相对较小的分配。如果你想使用数据优先的方法?你需要有足够的专业知识,用你自己喜欢的工具来应用本章的原则,你不应该使用你没有任何深度理解的数据优先的方法。我强烈建议你不要盲目地使用某个方法,仅仅因为它可以自动进行历史回测。在我们继续之前,这里有一个关于想法优先回测的最后注意事项。任何有价值的交易系统设计者都应该了解历史,读过书,知道其他人交易什么。然后你可能只测试你已经知道可行的想法,这就属于隐式过度拟合的一种形式。因此,无论你在随后的拟合过程中多么小心,你的回测的夏普比率仍然会被高估——当心过度自信。

    用时间机器作弊

    让我们来看看第一个常见的错误,那就是假装你有一台时间机器。拟合时需要两段历史数据,首先是用于拟合模型的时间段,其次是用于检验模型的时间段。为了说明这一点,请再次考虑尝试符合英镑兑美元交易规则的例子,并假设你在回撤,想找到最佳的单一变量。假设你有过去10年的历史数据可以回测,那最简单也是最常见的方法是用整个10年历史数据作为你的拟合期,然后找出在这10年里最赚钱的变量。然后你回到过去,测试这个单一的变量在同样的十年里的表现。对于你进行测试的每一年,你都使用基于整个十年数据的同一个模型。图7显示了运行于1990年到2000年之间的示例模型。拟合的每个阶段占一行。第一行表明你会使用所有1990到2000年的数据,在第二行,你使用相同的拟合模型来测试1991年的性能,等等。回测结果非常好,因为回到历史的当下,你并没未来的行情数据,所以这种叫做样本内回测,因为你使用相同的数据来拟合和测试性能。需要避免样本内回测,样本内回测会给出非常好的回测结果,而且倾向于非常复杂的规则,但不会在实际交易中做得很好。相比样本内回测,还有更好的选择。常见的一种方法是将样本分为两块,如图8所示。你取1990年到1994年上半年的所有数据,并拟合出这段时期的最佳变量。然后使用这个单一的变量来测试第二个样本外周期的表现,在本例中是1995年到2000年的每年。但这样做的问题是,你浪费了一半的数据,结果只能看到后半部分6年数据里的表现,同时你也没有考虑到市场结构的任何潜在变化。

7
8

    我的首选解决方案是使用一个扩展窗口期,如图9所示。假设你认为你需要至少一年的时间来适应你的系统。在下一行,你拟合1990年的第一年数据,然后测试第二年,即1991年的结果变量。然后在图9的第三行,你在1992年使用与1990年和1991年数据拟合的变量进行测试。为了测试1993年,你使用1990年、1991年和1992年最佳的变量。这种情况一直持续到2000年,当你使用过去十年的数据来选择最佳的变量时。因为你始终使用的都是过去的数据,所以你没有作弊。你还可以“合法”地使用尽可能多的过去发生的事情,这样就不会浪费历史行情包含的信息。这种方法的唯一问题是,如果世界发生了变化,你仍然会使用到可能不相关的过去数据。为了避免这种情况,一旦你有足够的历史数据,你可以使用最近5年或10年的数据,抛弃更早期的数据,这个叫做滚动窗口期。如图10所示,五年滚动窗口与1996年以前的扩展窗口相同。然后这个时候你可以抛弃1990年的数据,只使用1991年至1995年来拟合最佳变量。窗口的长度必须足够短,以捕捉市场结构短期的变化,但也必须足够长,以得出统计上显著的结果。稍后你将看到,滚动窗口通常需要几十年的数据来适应模型,这使得滚动窗口的使用存在问题。

    

9
10

    当拟合开始走坏

    现在让我们检查一个不恰当拟合的具体例子。我从章节一里讲到那个赢冲亏缩的例子里90个变量里选出表现最好的那个变量,来交易一下芝加哥商品交易所的黄金期货合约。这似乎有点过分,但它已经比Jor在我之前说的事里测试的变量要少。记住,如果我的交易规则包含5个变量,并且我允许每个变量是从10个离散值中选一个,那么我实际上得测试一万种变化。

    一旦我有了至少一年的数据,我就会根据之前12个月的夏普率找到表现最好的变量。然后我再次使用过去12个月的数据来测试接下来一年的表现。这个过程每年重复一次,所以这就是一个为期一年的滚动窗口回测。你认为下面哪个选项能给我最好的表现?

1,挑选最好的变量:每年我都使用前一年表现最好的变量。

2,随机选择一个变量:忽略我的拟合,每年我随机选择一个变量。因为每个选择的随机性都会影响结果,所以我多次运行这个回测,并取最后的平均表现。

3,保留所有变量,再次忽略我的拟合,我保留所有90个变量,并对所有变量给的结果进行等权加权。

    如果你是拟合的忠实粉丝,结果是令人失望的。每年从前一年选择最好的规则会给我一个相当糟糕的SR:0.07。如果我选择第二种,每年1月1日随机选择一条规则,那么我平均得到的SR是0.2。最好的选择是完全忘记选择交易规则变量,并将所有规则进行等权加权。这使得SR升到了0.33,对于在单一标的品种上使用的一种交易规则来说,这是相当不错的。这些结果可能是偶然的,但我在许多不同的品种和交易规则上都得到了类似的结果。为什么拟合如此糟糕?首先,每次只选择一种变量运行有点过于自信。正如你很快就会看到的,我们很少有足够的证据证明一个规则绝对比另一个好。其次,一年的数据完全不足以决定哪种交易规则是最好的。我用黄金期货这一单一工具的历史来分析,使这个问题变得更糟。最后,像Joe一样,我测试了太多的变量。

多重测试问题——虽然一些随机规则看起来也不错

    为什么测试大量的交易规则和变化会如此危险?除了需要付出的努力之外,你很可能最终只是偶然地选择了一个糟糕的规则。

    想知道为什么,就看下面这个研究。让我们假设,我试图实现炼金术,并找到有利可图的规则,但却没有。我有一个包含一定数量坑看着还行的交易规则的池子,所有这些规则的真实预期平均收益都为零,尽管在真实的场景中,我事先并不知道这一点。这些规则都是完全任意的,它们的返回值都是由随机历史数据生成的。

    对于每个测试,我记录每个规则一年的回报数据,就像在上面的黄金期货示例中一样,并筛选出该年夏普比率(SR)高于我设定最小水平的所有规则。如果没有规则的SR高于阈值,那我就一个也不选。保留所有通过测试的规则(即使有50条)。因为底层数据是随机的,所以我需要多次生成新数据,然后重复测试,让结果更具备说服性。然后,在给定一个特定的最小级别和可用池的大小的情况下,我计算通过测试的规则的平均数量。如表3所示,即使我很严格,设置了极高的最小SR: 2.0,如果我测试了的规则数量足够多,我仍然会筛选出一些不太行的规则。

    那么实际上我应该使用多大SR来过滤?因为没有一个虚构的规则是真正有利可图的,所以理想情况下,跟SR无关,这些交易规则一个都不能用。但在真实市场情况下,我们不能把阈值弄得太高,否则即使是好的规则也会被过滤;毕竟,在一个标的品种上测试的真实交易规则的实际SR值,好一点的也就只有0.30左右。假设我有5%的几率选出至少一条无利可图的规则,在真实市场中,我通常会有超过一年的数据,所以让我们看看假设历史数据更多更长,对我的发现有什么影响。表4列出了所有结果。正如你可能怀疑的那样,返回序列的长度在这里非常重要。更多的历史数据,意味着零SR规则侥幸通过阈值的可能性就小了,所以我可以设置更低的阈值。然而,即使有30年的数据,我也不能冒险测试太多的规则。

该表4显示了在测试给定大小的交易规则池(行时所需的夏普比率下限,使用一定数量的历史数据(列),以确保你只有5%的机会挑选出一个或多个真正糟糕的变量。

    你需要多少历史数据来决定一个规则是真的好?现在,你已经看到了一个常见的错误,即是用不充分的历史数据来选择或校准规则。需要多少数据?你需要多长时间来决定一个规则是否有一个正的夏普比率(SR)?规则值得保留吗?为了回答这些问题,我生成了更多随机交易规则的每日收益率,这次假设的是正的夏普比率,这也是我事先不知道的。随着生成了更多的历史交易,我可以估计每年的SR水平和迄今为止的平均水平。与此同时,我研究了这些年度夏普比率的分布。这使得我了解了我测量的平均SR在统计上的重要性:是我运气好还是这真的是个好系统。

    一个经典的统计显著性检验方法是T检验。在这个例子中,通过它的平均值和标准差的估计值,决定一个估计的夏普比率是否可能是正的,均值离零越远(以sigma为单位),未知的SR实际上越有可能是正的。这种检验通常用两个标准差作为临界值。如果估计的平均SR比零高出两个标准差,那么如果真实的SR是负的,发生这种情况的概率只有2.5%。图11显示了任意交易规则的平均测量SR的演化,以及围绕它的上下“置信区间”。每个置信区间离均值都有2个标准差,所以当低置信区间大于0时,我知道只有2.5%的几率,交易系统是一个伪装成亏损的规则。

11

在图中,你可以看到平均SR迅速收敛到0.5 SR的真实值,但它需要超过10年的时间,低置信区间超过了零,T检验最终通过。只有这样,我们才能合理地确定这不是一个亏损的系统。如果我对真实SR为1.0的规则重复此操作,就会得到图12。这个情况下,通过T测试的时间只需要几年。平均而言,越高的SR,用来证明其盈利能力所花的时间越短。图12,真实SR为1.0,我们在几年内通过了T检验

    让我们找出在给定的真实夏普比率下通过测试的平均时间。在进行了必要的实验之后,我得到了表5,除了非常好的规则,你至少需要10年甚至更长的时间来确保一个策略能够赚钱,对于单个标的,平均交易规则的实际SR约为0.3,所以你需要将近40年的历史数据。

5

你需要多少历史来确定一个规则是否比另一个更好?

现在,如果你有一些替代规则,想要找到最好的呢?让我们再次假设我有两条随机规则,一条的真实夏普比率(SR)为0.30,另一条的SR为0.80。一开始,我假设这是完全不同的规则它们的收益之间没有相关性。这次要进行T检验,我需要估计两个夏普比率的差异,并测量差异的平均值和标准差。

13

    在图13中是SR的平均差值和这个差值的相关置信区间。一旦较低的置信区间大于零,我们就可以合理地确定有一个规则更好,因为这种情况下,真实SR为负的偶然发生的概率也只有2.5%。您可以从图13中看到,确定的时间大约是三十年。

这个表6显示了我们需要多少年才能合理地确定一个规则比另一个规则好,考虑到更好的规则(行)的SR优势以及两个规则(列)的交易回报之间的相关性。


    2010年,我工作过的大型系统性对冲基金被重组成不同的资产类别。我的团队管理固定收益投资组合,另一个团队管理股票等。最初,我们运行的交易策略非常相似。然而,随着时间的推移,我们做了更多的市场特定研究,我们都确信我们需要以不同的方式定制我们的系统。在许多情况下,我们走得更远,也开始分别适合我们投资组合的不同部分。例如,我们可以在新兴市场和发达市场的债券期货中加入不同的交易规则变化分开装配很常见,而且有很多系统交易者将这一点发挥到了极致,并将每种工具分开使用。几乎所有的回测方案,比如乔使用的那个,都默认一次只将交易规则适用于单一品种。因此,对于英镑/美元,规则会有一种变量,对于欧元/美元,规则会有另一种变量,以此类推。这是叙述谬误的典型例子,我们之前见过的认知偏差。对于我们人类来说,不同的标的资产有不同的故事和不同的交易规则是有道理的。但这样做正确吗?这取决于每种变量在不同工具上的行为是否有显著不同。如果不是,那么你很可能是过度拟合,为每个标的资产单独搞规则。在实际操作中,不同的标的之间通常没有统计上的差异,特别是如果它们是密切相关的,如一组股票指数期货实际上,将数据集中起来并将多个标的组合在一起是获得更多数据历史的一个极好方法,这让你能够更好地区分盈利和亏损交易规则。作为一个例子,我在自己的投资组合中有两条交易规则,对于一个典型的单一标的,夏普比率(SR)分别为0.05和0.30。尽管完全不相关,表6显示我需要45年的时间来区分它们;几乎不可能,因为最早的金融期货在1972年才开始交易。然而,同样的规则运行在投资组合工具上,SR为0.13和1.13。表格显示,我只需要11年的数据就可以区分这两个夏普比率。为了让标的池化更容易,你应该设计通用的交易规则,并且适用于任何标的资产。我将在第七章“预测”中给出一些通用交易规则的例子。

    一些有效拟合的规则

如果你没有被警告不要试水,而是坚持使用数据来选择和校准交易规则,那么遵循这个建议应该会让你远离严重的拟合危险。那些现在对拟合感到恐惧的人可以跳到下一节,在那里我将向你展示如何避免几乎完全拟合。

保持简单

我不喜欢复杂的拟合方法,我不喜欢使用它们。但如果你确实认为自己是黑暗统计艺术的专家,那么你自然会想要实践它。只是要注意,当你过度拟合时,方法越复杂,就越难意识到。

(越隐式拟合)

更少的选择

如表4所示,除非你有多年的数据,否则减少交易规则和变量的标的池是至关重要的.

禁止时光机

你应该总是使用滚动窗口拟合或展开样本外拟合。如果使用滚动窗口,不要让时间太短;请注意区分规则和随机噪声所需的年数,以及相互之间的年数(表4、5和6)。

不要随意丢掉规则

在选择一个规则或变量并根据过去的表现抛弃其他规则或变化之前,请仔细查看表6。在现实中,很难找到表现截然不同,但相关性非常高的规则。更有可能的情况是,你发现了非常不同的规则,可能夏普比率(SR)差值是为0.5,但他们几乎没有相关性,或者相关性非常高的规则变量,SR表现非常相似。在这两种情况下,你都需要30年的数据来区分识别它们。有30年甚至更长的价格历史的公司是很少见的,因此,仅就表现情况而言,很难选出一条规则而不是另一条规则。

跨标的资产收集数据

你需要所有的数据来做出合适的决定。最简单的解决方案是从多个标的中收集数据。只有当不同标的之间的各种规则在性能上存在统计学上的显著差异时,才应该单独适用它们。实际上,这几乎没有必要。

比较苹果和苹果

在本章中,我假设你使用夏普比率(SR)来比较规则。但将正倾斜规则和负倾斜规则纯粹基于SR进行比较,是非常容易误导人的,因为负倾斜规则往往具有非常高的SR。

当未来不再像过去时

要注意关注整体表现,而不是相对于基准的回报。这是非常危险的,因为许多资产类别,如股票和债券,在过去40年左右的时间里表现非常好。最简单的在历史回测种获得超额收益的方法就是使用与标的资产类别相关度更高的交易规则,但这在未来不太可能奏效,因为这些高回报的主要原因是通胀显著下降;一些不会被重复的事情。(触手OS:仔细自考这句话。通胀显著下降在这被定义为不会被重复的事情,至少在写这本书的时候。了解这个概念的目的在于理解我们所设定的规则具体的利润来源,而在这里,通胀被理解成利润的主要驱动力,当主要驱动消失,规则可能面临失效,因为这件事不会被重复。所以,比如当我们使用多品种配置的趋势跟踪策略,也需要了解系统规则驱动下,利润来源是什么)

我如何选择我的规则

有许多方法可以在拟合的雷区中避免踩雷。我个人倾向于在不考虑实际表现的情况下选择交易规则和变量,从而几乎完全避免这种情况。我使用以下过程:

1,想出一些交易规则来证实我对市场行为的一些想法。

2,为每个规则选择一些变量。在这个阶段,我不关注变量表现,而是关注交易频率、与其他变量的相关性等等的东西。

3,考虑到夏普比率的不确定性,为每个变量分配预测的权重。糟糕的规则给更低的权重,但很少会被完全排除在外。这个过程意味着我不使用系统表现来拟合交易规则和变量。相反,收益率数据保留用于找预测权重。这些权重决定了每种变量在预测每种标的资产的收益时所占的比例。下一章将解释这种投资组合配置如何在不冒过度拟合风险的情况下,减少对明显较差变量的权重。

任何在最终投资组合中权重微不足道的表现差的变量,最终就可以从实盘交易系统中删除,从而降低实现交易系统的复杂性,而且可以得到与排除规则前相同的最终结果,但这意味着合并被排除的规则的任何回测数据更加真实了。

从少量的想法开始

我更喜欢提出相对较少的交易规则的想法。在我自己的投资组合中,我从5个不同的主题中总结了8条规则,但如果我从头开始,我只会从其中的一些规则开始:我会在第七章“预测”中向你们展示的趋势的遵循和包含的规则。

1,你应该有少量的规则,因为更少的规则意味着:

更少的过度拟合风险:更少的想法意味着更少的过度拟合机会,在接受规则之前需要更低的临界夏普比率(表4)。

2,给猫剥皮的方法有很多,一种市场行为可以通过多种方式被发现。例如,我们可以用动量振荡器、离散度分析和突破系统来捕捉趋势。为一种市场行为制定几十条类似的规则没有什么价值。

3,保持简单:在我的过程中,所有的规则都会在选择过程中幸存下来,所以一开始过多的规则会让交易系统变得复杂。复杂的系统更难以被信任和理解。

    业余和专业的交易系统设计师都花费了太多的时间和精力去寻找更多更好的交易规则。但是增加额外规则的边际价值很低,特别是当它们具有相同的交易风格时。交易某一特定标的资产的不同规则之间的平均相关性高于交易同一规则的标的资产之间的平均相关性所以多样化投资比规则多样化要好。添加新标的是一项上传数据和核对数据的烦人任务,这不如提出更多的交易规则有趣,但根据我的经验,它的益处要大得多。

保持适当数量的变化

    尽管我更喜欢使用相对较少的交易规则,我通常不会使用只有一种变量的任何规则。但是没有必要使用90个或更多的组合。例如,如果你试图捕捉价格势头,那么你可能需要一种能够捕捉相对较快趋势的变化,一种能够捕捉非常缓慢的走势的变化,或许还需要两到三种变化。如果你的两个变量有超过95%的相关性,你可以安全地放弃其中一个,因为它几乎没有边际效益。你也可以删除那些交易成本太高的变量,或者那些交易非常缓慢,所以不太可能给你带来显著回报的变量。但也不要纯粹因为性能而放弃变量。

先不要看收益率

    我倾向于保留实际的历史表现数据,以决定给交易规则和它们的变量赋予哪些预测权重。做的好可以让你获得真实的回测表现,但仍然可以是糟糕的交易规则。但是,如果你已经使用真实的数据来预筛选好的规则,那么你的历史回测表现将会过于乐观,你会过度拟合。因此,在这个阶段,你应该关注的只是相关性和可能的交易成本等等的东西,而不是业绩。你必须避免干预回测。

    这里没有太多关于这个过程的细节,但是在书的后面会有例子说明它是如何工作的。不管你是拟合自己的交易规则,还是用我的“手工(handcrafting)”方法,下一个问题就是决定在你的交易系统中使用多少规则X,多少规则Y,多少工具A或工具B。这个投资组合分配的问题将在下一章中讨论。(触手OS:handcrafting在本书里没有做太多具体算法解释,主要是估计的相关性)






(触手译)3/N_exAHL顶级对冲基金经理:系统化交易的评论 (共 条)

分享到微博请遵守国家法律