欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件程序化交易实盘俱乐部 → 交易策略的构建——不仅仅是测试和优化

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3187人关注过本帖树形打印复制链接

主题:交易策略的构建——不仅仅是测试和优化

帅哥哟,离线,有人找我吗?
行者无疆0405
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:79 积分:0 威望:0 精华:0 注册:2014/10/28 11:10:46
交易策略的构建——不仅仅是测试和优化  发帖心情 Post By:2014/10/31 14:47:16 [只看该作者]

作者Kevin J. Davey有20多年的交易经验、韦利金融系列丛书中《建立稳赚的算法交易系统》Building Winning Algorithmic Trading Systems的作者。

       编译 恒生量化社区

       交易者都清楚做出一个能应对各种行情的交易系统很难,很多人会通过图表发现他们的交易系统能够契合某一些特定的行情。不幸的是,如果把这些交易系统放在一个很长周期的历史数据中来进行测试的话,他们会发现所做的系统就不起作用了。

       而另一些交易者开发的系统却忽略佣金和滑点亏损的影响。导致这个交易系统虽然看上去很好,交易者的交易热情一直很高,但是这些被忽略的小成本会慢慢积累成为一笔大数目。这样一个“稳赚不亏”的系统最终会变成一个只能保本或更糟的系统。

       即使测试和开发使用方法合理,找到一个合理的交易系统需要验证成百上千个交易思想,这是很常见的。因此成熟的开发程序会去掉很多无用的交易系统。

       一个交易系统在实盘交易之前,除了最初的开发和测试外,还要遵循一些必要的规则,这样可以为交易者节省成千上万的开支,减少很多头疼的问题。

      蒙特卡罗模拟

      交易者常犯的一个错误是根据历史回测资金曲线的好坏来做交易决策。很多交易者看着资金曲线时都会这样想:“历史最大降幅是X美元,我很可能不会遇到这么大的降幅”;或者他们会认为“这个系统每年都挣了很多钱,所以用这个系统交易很安全。”

      不幸的是,这两个假设都很天真,因为历史资金曲线是众多可行路径中交易系统最终采用的一种。如下图“Which way?”所述,重新对一些交易进行排列后,可以发现最大的涨幅没那么大,收益也很容易变成了亏损。当然,表现也可能变得更好。

       黑色句意:你的交易系统的历史路径只是其中一种可能的结果。随着时间的推移,最终系统呈现的结果会大相径庭。能够考虑到这一点才是聪明的做法!

       为什么一个交易系统可采用各种不同的路径呢?有没有方法可以解释这种现象呢?是的,当然有!一种叫蒙特卡罗分析的方法可以解释这种现象。

      蒙特卡罗分析的思想是过去的交易以某种不同且未知的序列仍可能在未来出现。一些交易以不同的顺序拼凑在一起,这样就形成了不同的资金曲线。

      虽然在某些情况下蒙特卡罗测试不可行,但对大部分交易系统来说,蒙特卡罗分析是有效的,可以很好的查验交易系统。你只用记录每一个交易结果,然后把交易抽取出来把它们以不同的顺序排列形成新的资金曲线。很显然,电脑处理的速度比手工快很多,而且可以形成成千上万种模拟资金曲线。

      分析这些蒙特卡罗模拟时,你可以得到最大可能降幅、最大可能年利润和最大失败风险的统计数据。如果你有模拟结果的性能指标,那么你就可以很容易看到你的系统是否满足你的指标。这些信息,单单通过观察历史资金曲线是无法得到的。

      实盘模拟

      大多数交易者做完交易策略测试后,通常会迫不及待地去做实盘交易。对新手来说,这样很可能铸成大错,这种错误很可能是因为交易软件造成的。现在大多数交易软件很容易建立系统、修改规则以及进行各种优化。实际上,大多数软件都鼓励优化,目前软件的设计使优化成为一件很容易的事。

      所以由于软件促进了一些坏习惯的养成,历史资金曲线在每一个测试之后总会看上去更好。但是,多数情况乐观的测试结果和未来市场行情是零相关甚至负相关的。为什么呢?简而言之,增加规则、使用过滤器以及运行更多的优化可以让交易策略更好的符合历史数据。而将它用作实盘交易将会造成过度拟合风险!

      正确的做法是,系统建立好后要对策略进行观察,这个过程叫实盘模拟。简单来讲,就是三到六个月内让策略运行,但并不进行实盘交易。每隔一个月,查看一下结果然后将新的结果添加在历史回测得出来的资金曲线中。如下图“System watch”所示,并将这段时间得出的结果加在移动的历史结果中。如果,模拟的结果和历史走势相近,则表明策略制定正确。

       黑色字体:你会发现你的系统运行的结果在实盘买卖阶段和模拟测试阶段是一致的。

       经过几个月的潜伏期后,你可以看到以下两种情况中的一种:系统运行的结果和回测的一样或截然不同。一个技巧是打印出资金曲线,包括历史的和模拟的,这个曲线越大越好,然后将它们贴在离你3米远的墙上。如果你可以明显看出历史回测结束的那个点和模拟开始的点,则系统存在问题。理想情况下,应该是看不到这些差异。

       一个你可以进一步确定系统运行结果是否有变化,且具有统计导向的测试是日常结果的柱状图。再强调一下,这样做是为了看建立系统以后,你的系统运行结果是否发生变化。

       到底是什么引起实盘的结果和模拟的结果不一样呢?显然,如果在回测时,市场变化的比任何时候都要厉害,最终表现的结果就会发生变化。但是如果你测试了很多年的数据,就不会有明显的变化。出现这种情况的原因很可能是因为在系统建立时出现了一些错误,比如说这个策略被过度优化了。

      系统相关性

      交易者还应该关注系统与其他系统的相关性。如果你只在一个系统里做交易,你就没什么可以担心的。但是,如果你把一个系统添加到你的投资组合里,你就需要确保你的新系统不会影响其他系统正常运行。你肯定不希望你的所有系统都在同一时间进行买卖交易!

      使系统不关联的一种方法是在不同市场,不同时段做交易。如果你想要不关联性的数学证明,你可以对交易系统结果建立线性回归模型。这样做的最好的方式是比较两种策略的结果,看他们的相关系数。如果这个系数在-0.5和+0.5之间,那么这两个系统就是不相关的。下图“Trading twins”展示了相关系统与非相关系统的特点。

 

       黑色句意:散点图是一个确定两个系统是否产生相同结果的好方式。

       系统相关性为什么如此重要呢?是因为交易的一个关键指标就是合理风控。如果两个或两个以上的系统高度相关,你的风险水平就很高。非相关系统得出更加平滑的资金曲线,而且是合理多样投资的关键。

      当你运行了蒙特卡罗模拟,模拟运行了你的系统,并且检验了它与你的其它系统的相关性,你就可以进行小额交易了。为什么是小额投资呢?有几个原因。第一、虽然系统成功地通过前面的几个步骤,但是仍然很有可能失败。第二、小额交易是一个检验你在建立系统时是否考虑到滑点问题的好方法。你可以以此来比较滑点亏损比预期多多少或者少多少,从而改变你持仓情况。

       最后一点,虽然这个系统会给你带来收益,但是你可能并不喜欢它。如果你感觉这个系统让你用起来不舒服,你很可能不会合理地去使用它。小额交易时发现自己是否喜欢这个交易系统就再好不过了!

      抓紧时间

       系统建立好以后,不要忙着去做实盘交易,要慢慢前进,先尽可能多的做一些分析。从蒙特卡罗模拟到模拟运行系统到系统相关性分析到小额实盘交易验证,这样一步一步地验证可以给你省不少钱,同时也会为你省去很多头疼的问题。最后,你就可以做一个更强劲的策略了。

       文章由恒生量化社区编译,转载请注明出处。


 回到顶部