程序化交易模型按照行情来分的话,一般分为两类,一类是趋势模型,一类是震荡模型。程序化交易策略赚钱的前提是有好的模型+坚持的执行。 一、好模型的辨别 1.测试时间: 好的模型必须经得起时间周期的测试,如果一个程序化模型测试收益很好,周期却只有一两个月,那么这个模型是不可信的,这个观点笔者上篇文章也提到过。
2.使用资金: 很多人贴出来的漂亮测试结果,使用资金常常是80%甚至更高,但这些都不是很合理的选择,资本市场资金管理很重要,在行情好时候,资金使用越高,收益越大;行情不好时,资金使用越高亏损越大,资金使用时建议选择固定的手数进行测试。对于加减仓的问题,建议由人工来控制,除非你的模型足够优秀,能自行判断行情好坏,可以自动加减仓。
3.测试方式: 开盘价和收盘价测试均有其不合理性,因为会存在偷价的问题,实盘上是很难成交到的,趋势模型一般以趋势逆转点为开仓信号,故测试价格方式建议改为出现指令的价位。 二、测试结果的分析 a.信号数: 信号数过高,说明震荡行情过滤不好;过低,说明风险大。如何判断信号数是否合理呢?那就只有不同的模型在同样的周期下的一个对比了。还有一个最简单的方式就是将指令总数/有效交易天数,以日内短线为例,一般一个有效交易日的平均信号数在2-5之间(此数据仅供参考)。
b.利润率: 测试周期越长利润率应该越大。很多模型,测近期不错,测远期就不行,所以测试时应该尽量去测能测到的最长周期。
c.胜率: 胜率越高自然越好,但也不绝对,也不用因为模型的胜率低而担心。一般的胜率能在45%左右就不错了,因为程序化的本来意义就是赚大亏小。例如,趋势模型在震荡的时候胜率自然会低。
d.最大回撤率: 如果你是选择的固定手数,比如10手进行测试,你的最大回撤率应该不能超过10%。
e.空仓时间: 以日短线为例,空仓时间不能太高。太高,必然会错过大行情,当然,这一项不是最重要的。如果你空仓时间长,利润也高,错过就错过吧,错过不是过错,没赚到也不存在亏损的风险。 三、总结 测试结果分析不能只看某一个数据,需要结合起来一起分析:信号数不能多也不能少,周期越长利润率应该越高,盈利比率45%以上就可以接受,最大亏损不能过大,空仓时间可以自行把握。
如果一个程序化交易模型做到了以上几点是不是就算一个好的模型了呢?基本上可以算了,但最重要的是我们还需要结合信号图形(此点需要一定的程序化经验,并不一定看上去好的模型就是好,当然看上去好是前提,如果看上去都觉得一般了,那肯定是不行)来分析。 此外,还要看到模型里是否有未来函数。如果是日内短线,信号就一定不能消失,每天的跳空缺口需要技术性的回补等等其它问题都是分析一个模型好坏的理由,一个好的模型是不怕任何测试与分析的。 |