龙听期货论坛's Archiver

龙听 发表于 2019-6-10 06:16

交易策略的构建

那些拥有丰富经验的交易员们都知道,想要开发一个持续有效的系统是有多么困难。但是,很多市场的参与者常常凭借某一图形就轻易地确定他们的交易规则。诚然,这种方式能够完美地契合他们所观察到的某一特殊现象,然而,一旦这一规则被投入较长的历史数据中验证时,他们就会发现这套系统其实并不有效。

还有一些交易员在开发系统时选择性地忽视佣金和滑点。这类系统看起来非常完美,交易员也十分狂热。但当实际操作中的摩擦成本出现时,一个理论上赚钱的系统马上就会下降到盈亏平衡点,甚至有可能更糟。

即使是在一个合理的检验与开发原则之下,一个有效的系统通常也需要交易员测试几十、几百甚至几千种方法。好的开发程序可以帮助交易员过滤掉大量无效的交易系统。不过,就算一个系统通过了初始的开发和检验,在投入实际操作前还需经过很多必要的步骤。遵循这些“开发后”原则能够为交易员省下成千上万美元的资金,并能有效预防心脏病的发生。

蒙特卡洛模拟

交易员常犯的错误之一就是基于回测的历史净值曲线来做出交易决策。很多人看着净值曲线就会想,“由于历史上的最大回撤是X美元,因此不可能遭遇比这更大的损失”。或者,他们会得出这样的结论,“这个系统每年都能盈利,所以用它来交易相当安全”。

不幸的是,这两个假设都有些天真。因为历史净值曲线只是这个交易系统可能产生的众多路径之一(如下图所示)。只要重新调整某一些交易的位置,最大回撤就会变得非常糟糕,盈利的时段也很容易变成亏损。当然,从掷硬币的角度来说,交易系统的表现也有可能变得更好。

那么问题来了,有没有一种方法可以分析这种现象,即有没有可能观察到一个交易系统可能遵循的各种不同路径?我们的回答是“YES”,这种方法就是蒙特卡洛模拟。

该方法的基础是过去的交易结果会在未来出现,只是以某种不同的、未知的顺序。因此,通过以不同的顺序排列这些结果,就能生成完全不同的净值曲线。

虽然也可能存在蒙特卡洛检验并不适用的场合,但对绝大多数的交易系统,该方式是合理的,并且能够提供对系统的深入分析。你可以简单地记录下每一次交易的结果,然后从中随机挑选和排序形成一条净值曲线。显然,计算机能够更为快速地完成这一抽样过程,并产生成千上万条模拟的净值曲线。

分析这些模拟结果,你可以得到出现过的最大回撤、可能的年化收益以及破产的风险。如果你对模拟结果有评价的标准和目标,你也能很容易地考察系统是否满足要求。而仅观察历史净值曲线是无法得到这些信息的。

孵化(Icubation)

大部分交易员在完成了一个策略的开发后,都会感到十分兴奋并迫不及待想将策略投入实际的交易。这可是一个大忌,尤其是对那些菜鸟交易员。很多策略都依赖于交易软件,这些先进的工具使得策略的构建、交易规则的修改以及多元优化问题变得异常简便。事实上,绝大多数的软件开发的初衷就是方便和鼓励采用优化手段。

然而,伴随着软件的大量使用,一些坏习惯也在不知不觉中养成。交易员在开发过程中往往会选择历史净值曲线更好的模型和参数。但是大部分情况下,看起来很出色的回测结果却与策略在未来的表现毫不相关(有时甚至是负相关)。为什么会这样?简单来说,增加限制、引入滤波器以及运行更多的优化,虽然对交易策略更好地拟合历史数据很有效,但实际上却蕴藏着巨大的风险。

很多情况下,开发之后的持续跟踪能提供很多线索。这一过程被称为“孵化”(incubation)。最简单的方式是,让策略实时运行3-6个月,但并不真正用于实盘交易。每个月观察一次最新的运行结果,并将其加入历史回测净值曲线。下图是一个简单的示例。其中,孵化结果被作为向前的历史数据。在这个例子中,“孵化”结果看起来和历史形态十分相似,这被认为是策略的开发过程较为合理的一个重要标志。

在几个月的“孵化”后,你很可能观察到以下两种情况之一:系统的表现看起来和历史回测一致;或者大不相同。一个辨别这两类结果的诀窍是,将净值曲线(历史的和“孵化”的)打印在白纸上,并尽可能地放大,并将它钉在10英尺开外的墙上。如果你能清晰地分辨出哪里是历史回测的终点,哪里又是“孵化”的起点,那这个系统就是有问题的。因为在理想状态下,两者的表现应该没有很大变化。

当然,除了上述直观的判断,另一种确定交易系统的表现是否发生变化的检验方法是日收益率的直方图。其关键点同样是考察系统的表现是否在完成开发后发生了改变。

哪些原因可能引起系统表现的变化?可以确定的是,如果当前的市场行为和检验期的任何时段都完全不同,那么表现发生改变也是自然的。但倘若你在构建策略时使用了很多年的数据,这种变化应当不会太剧烈。因此,更有可能的是开发过程中存在错误。例如,策略被过度优化了。

系统相关性

另一个交易员需要关注的方面是交易系统之间的相关性。如果你只应用一个系统交易,那就没什么可担心的。但如果你把一个新的系统加入组合,那你不得不确保新加入者是对其他系统的一个补充。因为你肯定不希望所有的系统在同一时刻买入或卖出。

使得系统间不相关的一个办法是在不同的市场和时段上交易。如果你对不相关的数学证明感兴趣,可以对交易系统的结果进行线性回归。最好的方法是比较两个策略的结果,计算它们之间的相关系数。如果在-0.5和0.5之间,就表明这一对系统之间并不相关。下图分别展示了相关系统和不相关系统可能的收益率形态。

研究系统间的相关性是相当重要的,因为交易过程中一个重要的因素就是合理的风险控制。而一旦两个或两个以上的系统高度相关,那么整个组合的风险等级就会剧烈地上升。不相关的系统所形成的组合能够产生更平滑的净值曲线,同时也是合理分散化的关键。

在进行了蒙特卡洛模拟,系统的孵化以及相关性的检验后,是时候投入一小部分资金在这个系统上了。那为什么只是一小部分?有以下几个理由。第一,即使通过所有的检验步骤,系统还是有可能会失败。第二,小额交易是检验事前的滑点设置是否合理的一条有效途径。这一过程可以让你发现滑点的假设是过高还是过低,从而可以帮助你更合理地选择头寸的大小。

最后,在交易过程中,因为种种原因,你很有可能发现自己其实并不中意这个系统,即便它确实能产生利润。而一旦你对一个系统感到不适,就会倾向于不遵循系统进行交易。因此,小额交易有助于你判断是否喜好使用某一系统。即使不喜欢,产生的后果也相对较小。

切忌操之过急

在一个系统开发完成之后,实盘资金的交易并不是紧随其后的一个步骤。相反,谨慎对待、深入分析才是最佳选择。从蒙特卡洛模拟到“孵化”,再到相关性分析和小额资金的测试,看似多余的步骤恰恰能避免大量的损失,甚至挽救投资者的生命。只有在完成以上这些工作后,你才会获得一个更加稳健的策略。

参考文献:Building a Trading Strategy: After Testingand Optimization
转载原文: [url]http://www.19lh.com/News_265.html[/url]

页: [1]