在使用机械系统进行期货外汇交易时,往往会有两种声音。一种是要优化策略的参数,希望取得更好的绩效;相反的一种观点认为,参数优化只是匹配历史数据,会增加过拟合的风险。那么在StrategyQuant 中关于参数优化是如何进行,又有什么作用呢?
优化器 Optimizer
优化器的作用简而言之,就是为策略寻找最合适的参数,如策略中使用的进出场指标的周期参数,入场单(Stop类型)的突破波动率的倍数,止损止盈有关参数等。
最佳参数的选取,取决于我们设定的优化目标。
Simple,为简单优化,是用全部历史数据来寻找最合适的参数;
Walk-forward,字面意思是前行(优化),意即用移动向前的方式去优化参数。其优化步骤大概是这样的,将全部历史数据分成N段,譬如5段;然后每一段里分成样本内(optimization period )和样本外(run period)两部分,譬如每段的前面80%为样本内用来优化参数,每段后面的20%作为样本外来去检验优化出来的参数。
Wark-forward matrix,前行优化矩阵,是在Walk-forward基础上的一种优化方式。在Wark-forward中我们需要人为地设定历史数据分段数和每段的样本内外的比例。而策略经过多久优化一次更合适,显然也是一个问题。所以,Wark-forward matrix的主要作用就在这里。
参数优化的一个潜在风险是,优化出来的参数是匹配历史数据的最佳组合,但正是因为这种优化,在面对未来的实际市场走势时,可能失去适应能力,即过拟合导致健壮性不够。
所以Simple模式,是直接可以放弃,不要使用的。他除了根据历史数据生成一个非常漂亮的利润曲线之外,几乎毫无用处。
Walk-forward的结果会告诉我们什么?
Walk-forward会告诉我们,这个策略是否健壮,以及这个策略是否可以通过优化参数来提升绩效。
如果策略优化后的绩效表现差于原始策略表现,这表明使用该策略要小心过拟合的风险。
相反的,如果策略优化后的绩效表现好于原始策略,则表明:
1、该策略可以从定期优化中获得绩效提升;
2、该策略比较健壮,并可以适应未来市场的变化(使用定期重新优化)。
从这个角度而言,Wark-forward,Wark-forward matrix即可作为优化参数,以及以何等频率去优化的工具,也可以作为检验策略健壮性的工具。
需要注意的问题
尽管在StrategyQuant 中通过推荐设置极其方便地完成了相关测试前的设置,但如果你在策略中使用了较多的指标,则可能会有很多参数,如果同时对所以参数进行测试,会造成测试的数目条数极其庞大,这会计算很长时间,而且如果优化数目小于组合数,则每次优化的结果可能并不一样。
所以这里强烈建议对哪些参数需要优化测试再进一步选择,
这里我只对入场的部分指标的周期数据进行优化,至于波动率ATR指标,在一定范围内相差不大,可以不优化。这样选择后,优化条目数只有15625条。而使用自动设置,将所有有意义的参数一起测试,则有158,203,125条!
替代方案
根据经验,有两个理由,我认为Walk-forward更适合作为测试策略健壮性的工具。
1、策略的内在逻辑,比参数更重要;
2、如果使用遗传进化模式来生成的策略,并通过一系列健壮性测试后,其参数组合已经是比较好的一组。
如果将Walk-forward测试用于策略健壮性的测试,由于其计算时间较长,投入产出比并不合适。其实我们可以选择优化轮廓与参数序列Optimization Profile and System Parameter Permutation。
优化轮廓与参数序列 。 StrategyQuant提供了14天的免费试用,想体验软件强大的策略构建功能,可以到官网自行申请试用下载。 点此下载。在官网中间栏,点击按扭Get free trial NOW,申请试用授权码。