附录D 关于曲线拟合的更多示例
大多数情况下,曲线拟合都是因为开发样本中缺乏足够多的数据。这会导致交易样本偏少,从而无法有效的代表其无限样本。但有些时候,曲线拟合也会悄无声息的存在于你的工作中。本附录将提供一些示例。这些示例中的关键点是,曲线拟合是成本很高的。如果你没有意识到你的策略是曲线拟合的,那你可能会在交易中亏掉数以千计的美元之后,才发现该问题,或者不得不退出交易,并对你的系统失效而感到莫名其妙。
示例1: 股票配对交易
我们来看一下配对交易的情况。我想开发一个股票策略,来交易一对关联的股票。当这对正常情况下会关联的股票开始在价格上出现分化时,我会卖出其中上涨的股票,卖出其中下跌的股票,然后等价格恢复正常后再盈利出场。该策略的优势在于,风险应该相对较小,因为你总是既持有一个多头,又持有一个空头,因此大盘的涨跌对你不会有什么影响。
我对一个由高流动性股票构成的篮子,计算其中每只股票与其他股票的相关系数,平均相关系数大于0.4 的股票对会被放入我的开发篮子中。这个由高流动性股票构成的篮子中,共有1300 只股票,我从中挑选出了300 对股票,来放入我的开发篮子。
接下来,围绕这300 对股票,我开发了一个策略,看上去表现还不错。但当我开始交易该策略时,结果却不尽如人意。我不清楚,究竟是因为市场条件还是该策略处于不利期,才造成这样的结果。结果我发现,我在策略的开发过程中引入了大量的曲线拟合。
当我在计算相关系数时,我使用了所有的数据,来确定这些股票是否是相关的。这个做法是错误的。许多股票会在满足该相关系数条件一定点数后,就开始止步了,或者会止步一段时间再重新满足该条件。我应该选择那些在其相关时的平均相关系数大于0.4 的股票对,而不是在整个数据样本的最后才满足的股票对,这样会降低该交易策略的效果。因为它们可能后来就不存在相关性而独立变化了,而我却以为它们会问归正常而交易它们。这些交易很可能会亏钱。
当我回过头来重新开发该策略,选择那些一直以来都满足相关性条件的股票对时,该策略变得不值得交易了。
这个故事告诉我们,如果你所使用的信息是基于那些不再存在的数据时,你就会引入一定程度的曲线拟合。如果该曲线拟合程度很小,则一切都行。比如本书所介绍的K 线评分技术,就是一个这样的例子。但如果你这样做了,你就需要进行构建、再构建和修复(BRAC) 检验,以确定你的方法中的曲线拟合程度有多大。
示例2: 在日频K 线股票或据上使用限价指令
我开发过一个只做多的股票系统,它会在市场开盘前放置限价指令。我会放置50 到200 个指令但我只希望成交20 个。我的软件会在20 个指令成交时,撤销其他的指令。因此,如果开盘时有多于20 个指令被触及了,就会出现问题。当这种情况发生时,我会手工的平掉那些在头5 分钟的交易中有最大盈利或最小亏损的交易。在我的回测中,我会让开盘时的成交指令数不超过限额,如果交易指令数不足,我会从那些未成交的交易中随机的选择所需的交易数量,在开盘后再交易。该策略的模拟表现非常惊人。
但当我开始实际交易后,在交易时间内,实际结果与我的模拟结果差异非常大。我从中发现了以下问题:
● 假设中应该能在开盘时成交的交易,在真实交易并不能完全成交,即使市场价格明确的在该限价指令的入场价格之下。10 笔中大概有8 笔会成交。如果我在该日的开盘后再成交这些未成交指令,结果会比在开盘时成交要差一些。因此错过这些成交,会让交易结果变差。此外,我在真实交易中会需要支付滑价,而我在测试中并没有考虑到这一点。如果该限价指令为100,股票开盘价为99,我假设我会在99 成交。但在现实中,有些交易会在99 成交,大多数的成交价都介于99 和100 之间。
● 随机挑选那些回在开盘后成交的交易,实在是太乐观了。在真实交易中,我所选到的差的交易,要比好的交易多得多。股票价格常在达到限价指令后就掉头向下。那些穿过限价指令而继续上涨的情形,你不太容易见到。
这些情况让该策略表现平平。这是一个典型的关于限价指令系统的例子,你永远也不会知道,实际结果会比你预期的差多少。
示例3: 使用单笔盈利来给K 线评分
本书之前介绍过,你可以使用任何自定义的标准来给K 线评分。我曾想过用过去n 笔交易的盈利能力来作为K 线评分标准。假设n 为过去10笔交易。对于每根K 线,我都看一下在该股票中的过去10 笔交易,并用这些交易的平均收益能力来给该K 线评分。当我把该标准添加到我已经使用的四种或五种标准之中时,评分最高的交易的平均收益能力会有很大提升。我对此结果表示怀疑,因为我开始寻找,是否哪里存在曲线拟合。结果表明,如果你使用了一笔交易的所有K 线,并且你的交易持续了两天甚至更多天,那你最近的10 笔交易中则会有一些还没有平仓。在评分矩阵中,我获得了那些还没有平仓的交易所每天带来的盈利。这会给整个矩阵带来偏差,影响对该笔交易未来结果的预测。但由于该笔交易已经在里面了,因此引入了不该引入的收益或亏损信息。我通过只选择平仓的交易,来解决该问题,结果发现,单笔盈利标准的表现,很一般。
结论
有很多种方式会产生曲线拟合。大多数情况下都是因为你的开发样本中缺乏足够的交易笔数。BRAC 检验可以发现该问题。有些时候,曲线拟合可能隐藏得较深。一般的规律是,如果测试结果表现得非常好,你就应该仔细的检查每一步。