如何辨别优秀程序化交易模型?
01 程序化的理解
程序化一般分为两类模型,一类是趋势模型,一类是震荡模型,如果你想两者结合起来就要看自己的本事了,我的建议是程序化需要不停的去完美,但千万不能追求完美,以下所说模型都是趋势模型。
程序化一种工具,帮助你积累财富的工具,却不是一种暴利的赚钱方式,程序化模型有好坏之分,程序化赚钱的前提是一个好的模型,程序赚钱的关键是坚持的执行,程序赚钱的精髓就是在确定最终使用模型之后,彻底的放弃你对金融市场的一切理解和交易技能。
02 程序化模型的选择与辨别
如果有人告诉你他的程序化能在不长的时间内,让你的资金翻几番,那你要为他的言语或者他的程序打个折扣,但是如果对方又能拿出不错的图形或者非常漂亮的测试结果放在你的面前,你又当如何说服自己是相信还是不相信?以下内容就是帮助你如何辨别好坏模型。
a.测试时间:
一个好的程序化必须经得起时间周期的测试,如果一个程序化,结果很漂亮,周期却只有一两个月,不可信。
b.使用资金:
很多人贴出来的漂亮测试结果,使用资金常常是80%或者其它百分比,但这些都是不合理的选择,因为金融市场资金管理很重要,在行情好时候,资金使用越高,收益越大,行情不好时,资金使用越高亏损越大,但我们无法去判断接下来的行情会如何,所以,历史测试的结果使用百分比的开仓方式是不合理。
这也就是为什么,有时候会出现,资金使用率为80%时,测试结果是亏损的,而且使用率为40%时又是赢利的。
c.测试方式:
开盘价和收盘价测试均有其不合理性,趋势模型一般以趋势逆转点为开仓信号,故较为准确的是:出现指令价位。
03 测试结果的分析:
a. 指令总数:也就是信号数,过高,说明震荡行情过滤不好;过低,说明风险大。如何判断信号数合理呢?那就只有不同的模型在同样的周期下的一个对比了。还有一个最简单的方式就是将指令总数/有效交易天数以日内短线为例,一般一个有效交易日的平均信号数在2-5之间(此数据仅供参考);
b. 利润率:总利润不用看,只看扣出最大利润的结果,必须为正,而且测试周期越长利润率应该越大,很多模型,测近期不错,测远期就不行,所以测试时应该尽量的去测能测到的最长周期。(当然因为行情关系也可能出现,长期比短期利润率低,但总体而言,周期越长利润率越高,才是好的模型的测试结果)
c. 正确率:其它条件都完全一样的情况下,正确率越高自然越好,但也不用为了看到一个高正确率的模型而心动,也不用因为你自己模型的正确率低而担心,一般的正确率能在45%左右,就不错了,因为程序化的本来意义就是赚大亏小,在震荡的时候正确率自然会低;
d. 最大回撤:如果你是选择的固定手数,比如10手进行测试,你的最大回撤应该不能超过10%,当然,如果你选择的测试手数多,最大回撤可能有所提高。如果你选择的80%的资金使用率,可能亏损会更大,当然也会有亏损的不大的测试结果,这往往和你的测试周期中的行情的一定关系,所以不值得过于依赖;
e. 空仓时间:以日短线为例,空仓时间不能太高,太高,必然会错过大行情,当然,这一项不是最重要的,如果你空仓时间长,利润也高,错过就错过吧,错过不是过错,没赚到也不存在亏损的风险;
04 程序化交易的执行
这一点没什么好讲却又不得不讲,很多有多年经验的操盘手,甚至一些国内的金融公司,常常会对程序化交易提出一定的质疑。我就遇到一个期货公司的老总,因为觉得程序化好,准备了资金,准备进行程序化交易。首先我不知道他选择模型的依据是什么,号称只是因为人家是大公司,测试结果不错;结果这个老总使用该模型交易时,正好遇到一段时间的震荡行情,可能是亏了不少吧,然后决定放弃程序化交易。
这就是一个典型的程序化执行的例子,程序没有人性,我们在使用时就更不应该加入人性,如果你决定使用程序化就给自己一个时间期限(不管是真钱也好,模拟也好),时间不能太短;如果短也可以,但必须在这段时间中,你要自己能分析出,是不是都能遇上基本上所有的行情。比如,测试三十天,遇到过十天的震荡,也遇到了好几天的大行情,以此来分析程序的好坏。
绝不能因为几次的使用结果不好而去否认程序化,也不能因为几次的使用成功而完全信任,必须要有一定时间的观察与模拟,然后再到实盘的尝试。时间长短是小事,关键是是否经历过大部分的行情,从而选择一个最适合而不是最完美的模型进行自己的程序化交易。
一旦执行,你就应该忘记所有的金融市场的条条框框,你就是一个傻瓜执行者,聪明人在金融市场上不一定能生存,普通人在金融市场也不一定被淘汰。