策略要避免过度最佳化 [MC]
- 咨询内容:
原文来自FuturesNote
程序交易策略的设计有个大难题,不论是新手或老手都会一直感到困扰的问题是: 我的程序是否过度最佳化了?
以我们现在开发程序策略的方式,是将历史资料作为数据,套用各种不同的逻辑来测试,希望能找到一种通则可以适用在对未来的预测。这样的方式是利用归纳法找出通则,而通则是表示有一定的概率,也可以当作是我们回测的胜率。
但若将前述各种不同的逻辑条件增加的越来越多,就会越来越像是对数据作细节的描述,可以得到很漂亮的测试,但对未来的预测能力必然不如对过去的好,这很像是考试前把所有的考古题答案背下来,而不是真的了解怎么解答,那当考试时题目稍有改变就不会写了。
有指标就一定有参数,有参数就一定要作选择,选择参数的个数及个别的范围。还有更大的考量是,要怎么判断是否也用了太多指标以致于最佳化了? 或许它真的就是这么准,也没什么不可能。
那怎么办?
目前并没有主动正向的建议或准则说明该使用多少参数或指标个数,只有被动的再去测试,常用的方法是forward backtesting,就是把历史数据切两部份,一部份用你觉得这历史区间最好的参数测试,另一部份作为未知数据再测试这参数。假设同一组参数在这两部份的运作情形差异不大,那很可能表示这组参数是够稳健的,若在两部份的差异很大,那你就要小心了.....
以上,是针对单一策略作forward backtesting来判断是否过度最佳化,但作了也评估过了,能表示未来绩效会和测试时一样好吗? 当然,还是不一定的,唯一可以确定的是对这支策略的信心和了解更加提升了,这也是很重要的。
除了forward backtesting之外,避免过度最佳化是从策略组合的角度来设计,简单的说,就是让各策略专注。专注在目标上,目标是长波段10%行情、中波段3%行情、当冲策略、极短线策略、震荡盘策略或是针对只作多空单方向的特殊策略等等。
在设计这些策略时,单一的目标要够明确,例如想设计一个大行情必吃的策略,那小行情就不予理会,或许能作到避开损失就够好了,千万不要想连震荡小行情也吃的到,因为这样很可能又会陷入多重逻辑的陷阱。
举个故事来说,动物界举办了铁人三项比赛,项目是飞行、短跑和游泳,老鹰在飞行项目得了第一名,但是短跑和游泳都不行,猎豹在短跑得了第一名,但是另两项不行,海豚则是游泳第一名,但另外两项也不行。这项比赛最差的是一只鸭子,三项都会一点,但都不怎样。
这故事和程序交易策略有什么关系? 假如我们希望设计一个任何状况都适用的策略,什么行情大小都要吃到,那么就可能会设计出一个什么都吃不好的鸭子,而好的作法应该是建立一个团队,由老鹰、猎豹和海豚组合的超级战队。
这和避免过度最佳化又有什么关系? 当我们专注在特定目标设计策略可以有较简化的逻辑,同时在组合时又可以有效的截长补短,这个有不有效,主要是指降低整体drawdown,也就是看老鹰、猎豹和海豚彼此合不合,这个战队能否发挥综合效果。
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容