你的位置:首页 > 期货高手

程序化交易的经验之谈(三)

2014/5/11 12:11:55      点击:
网名“我是传奇”,CCTV证券资讯频道《期货时间》期货兵器谱实盘展示账户“倚天剑”打造者。
2003年开始接触股票投资,2009年底参与期货交易,2010年实现了期货程序化自动交易。2010年收益率85%,2011年收益率54.8%,2012年收益67%左右,期间最大回撤13.8%。

我们在做程序化最大的一个敌人,我认为很多人都会知道就是“滑点”。滑点”这一块,那我在找什么,我在找如何改良“滑点”,那可能是说谁的速度快,谁就占优势。这是一个因素,那么就把我们的交易放到张江去,还有一个是什么呢?其实我总结了这么长时间,今年可以说没有什么收获,唯一的收获就是“滑点”收获。“滑点”现在我们的实盘是按什么来测试的,各位做股指的可能应该都知道,通常如果说测试的话,大家认为多少比较合理?万分之一手续费,可能有的人都挡不住,对不对,那我现在实盘的话是按照万分之零点零五。而且其中一个帐户每天都有正滑点,就相当于万分之零点五的手续费来测,我每天还比测试报告上的赢亏还要多赚一点。我觉得这个是今年最大的收获,其他的没啥收获,当然也有失败的经验总结。所以市场冲击成败我觉得是有可能实现的。

这个阶段是什么呢?回撤达到了15%,就是我的这个主要帐户回撤达到15%,那我只能干吗?只能将这个帐户最高的仓位就是48手股指减到原来的20手,这个阶段的20手,那没办法,因为在我的资金管理里面是如果资金回撤了15%,我一定要采取保守的方法来做。第二个我总结一个回撤的原因,那回撤的主要的一个原因就是增加了一个逆势交易,而且仓位是逐步增加的。盈利的时候,加仓是没错,但是失效过快。趋势策略它应对这个行情的特性会比较的持久一点。而逆势的策略的话它应对的这种东西会比较容易失效,还有一个是在市时间会偏长,那么这种就是导致了一个最大的回撤。第三个,采用了一个大道至简的策略,那主策略是什么呢?就是只有两句话,我现在在做的只有两句话来做主策略。

我很遵循一句话,叫做利润是被动的,是靠行情给的,但亏损我们是可以主动的,我们可以控制的。所以在这里必须得做这个动作,减仓。第二个将原来十个商品减到六个,并且在200元的变动单位减至100元。这个是什么概念,大家可能不是很清楚,相当于减了多少仓位呢?10个品种我现在只做6个,就减掉4个,还有把两百块钱的变动价位,因为我做仓位我不是按照说多少保证金,因为保证金是不算数的,我是按照变动价位,什么意思呢?比如说铜,它一跳是50块钱,那200块呢?那我们应该配4手铜。如果说焦炭200块,那我们这边只配两手焦炭,是按变动价位的,那如果说我们在加波动性特征的话,可能会更均匀一点,目的是让这个比重,让它们平均化,这样有一个更好的对冲效果。
增加过滤机制,为什么增加过滤机制呢?因为目前的帐户是亏损了22.5%,所以必须要减少在市的时间,这是我现在在采取的一个动作。资金回撤我的最大容忍范围是30%,如果亏掉了30%我这个主帐户必须停半年不交易,这是我的原则

程序交易者的必备条件:我认为自己必须编写程序。为什么这样讲呢?因为很多不会的人,经常有QQ的网友我说,你会编程吗?会程序化?你那套程序能不能卖给我?他希望什么?他希望一个程序为它赚钱。这种容易出现一个问题是什么?容易出现就是你根本不知道原理,你怎么可能让它在你的账户上做呢?在我观念里面,我亏钱也要亏的明明白白,在什么样的情况下我亏钱,在什么样的情况下我赚钱,那程序它只不过是什么,只是替我执行我的思想而已。那为什么要自己精通呢?因为比如说你旁边有一个朋友,他能精通,你把你的思路交给他来写,那有的人觉得你自己是圣杯,我的逻辑那是不可泄密的,这是一个原因之一。第二个原因是什么?在你编写的过程中,它没有办法百分百的去理解你的逻辑,理解你的程序,而且你的程序是有,我写程序都是这样的,A程序1.0,A程序2.0,A程序3.0,是分代数的,就相当对那个金字塔软件一样的。那是有几点零系统的,是什么版本什么版本,因为我们需要去在这个阶段完善它去更新它,那我们得自己去根据行情变化,得自己去加以改良。所以这是我觉得做程序交易员的一个必须要做的事情。
那我写程度是前期是怎么写的,我是全都用复制,复制粘贴复制粘贴,你让我现在把电脑关掉,在黑板上写一行代码,我真不会写,可以说平常的语句我都不会写。关键是什么,关键就是逻辑,逻辑通了,其实语句就是计算机代码的函数,很简单的,我现在是觉得蛮简单的,关键就是你通了就行。
还有编写程序最重要的一个就是要有兴趣。没有兴趣的话,你觉得面对那个枯燥的代码是受不了的,你要感觉到跟它谈恋爱,半夜三更还在想它,做梦的时候还能够在想它,我觉得这个很重要,这个就像我在前期一样的,经常半夜三更陪我老婆睡觉的时候,我就爬起来,干嘛?电脑打开,写程序。一个想法想到了,早上5点钟衣服也不穿就跑到电脑面前去写一下,一写,这个方法,测试一下,不行,睡觉,就这样的一个过程。
所以这个是必须要自己精通的,不然的话,让别人永远写不出你自己想要的,或者说找不到你自己的灵魂。


编程的这几个要领,第一个我认为是逻辑性就是你的逻辑性,这点很重要,就是我为什么要开,我在什么样的情况下平,我是怎么做的,先要有你这个想法,才能产生所谓的信号,如果说你乱扭一通,你说就出现一个圣杯,那这个圣杯一定是中看不中用的,所以有的朋友给我打电话说,我现在研究有一个很好的策略,你要不要试一下,一年大概有80万的赢利,要不要试一下?我说,算了,不试了。为什么?因为我不知道你的思路,我不知道我自己是怎么死的,或者是怎么活的,我亏钱我要亏的有原因,因为我知道原因了就懂得怎么去改良它,如果我不知道原因,那我只能愣亏。第二个,沟通语句是否对称之前我也参加过一些模型对换、模型交换,模型交换就是把别人的模型,比如说20个人,一人出一个模型,我也出一个模型,这20个模型就共享了,那这种情况,我其实就看到有一个曲线非常漂亮,有未来吗?没未来。信号散吗?也不散。那为什么它那么漂亮呢?源码打开一看,它是做空条件,很松,很容易达到;做多条件很紧,过滤很多,不容易达到。那有人问,为什么曲线好呢?是因为从2010年到2012年的时候它一路下跌,对不对?一路下跌所以它做空条件多的话,松的话它肯定曲线要少一点,那万一2013年开始就走牛市呢?那肯定是亏的。所以我验证模型一定是要用金字塔里的K线反转,转一下,它就原来开多的条件,就变成开空的了,原来开空的条件变开多的了。我这样对换一看,反转了也有收益,正的也有收益,曲线相关不大,那代表它是多空对称编写的,它不是那种不对称的,或者说是根据历史的数据去研发的,那容易出现问题。
 还有一个是参数的适应性,参数适应性我个人认为是尽量的少写参数,在我的程序里面我尽量是把参数镶在里面,是什么意思呢?我不写在那个参数表里面,为什么任何一个程序化里面的它都有一个参数表,这个参数表是干嘛的呢。它是做优化用的,我最终定完型的模型我都不给它写在参数表里面,因为我认为这个东西我尽量的让它保持它的适应性。

第四个我认为在写程序的过程中一定是化繁为简,就是尽量的简化,能够用一句话表达的,那我们就用一句话,能少用一个条件就少用一个条件。尽量的简化,能够用同一种指标去做一些过滤或优化那就用一种指标,不要用第二种指标。因为你条件用的越多,那你的语句就越复杂,越复杂就代表未来行情的适应性就会越差一点,相对来说会差一点。

第五个精细化控制,细节化、精细化那前面讲的就是化繁为简,要简单应用要精细,这是不是有矛盾呢?在我的理解里就是没有矛盾的。就是你的逻辑是简单的,是精简的,但是你控制的语句一定是精细的,在什么点位进去,或者要怎么进去,或者考虑到当前市场的一个反映状态。这些我觉得就很重要,我之所以能做到刚才说的万分之零点五的滑点,还有就是其中有一个帐户还是算下来它基本上不用手续费,可以赚手续费,那之所以原因就在这里,精细化控制,要考虑当前的市场。


  我们先看一下程序化优势:
第一:它的客观优势,它跟手工不一样,就相对来说,它比较客观,它能够在执行的过程中可以避开人性的贪婪和恐惧我觉得这两点真的是做手工的也好,程序的也好,都很重要。不能说亏钱就怕,赚钱就喜或者赚钱觉得这个期货市场真好,这辈子我一定要赚多少多少钱,亏钱的时候不敢做,停掉,容易出现这种情况。

第二个就是交易速度的优势,什么叫做交易速度的优势?我们从信号到成交回报,都是在一百毫秒以内完成的,也就是说我要到一千点买进去,价格真的到一千点了,这个时候人的肉眼是看到一千点,手去找鼠标去找账号去挂单在这个执行过程中,最快的也要以秒计算,在程序里面它就“咯哒”成交搞定。

第三个就是交易组合的优势,交易组合的优势是什么呢?就是策略可以针对不同品种、不同周期、不同市场同时运行,也就是说我一个策略可以在全市场运行。或者说不仅在期货市场运行,我可以在股票市场运行,人工就容易出现一个问题,你最多只能做两个品种,三个品种,五个品种,如果你做日内高频,你只能做一个品种,而且做完以后是两眼花花。如果程序就不是了,它可以同时操作N个品种,进行毫秒级的运算、监控、成交。这个就是我认为程序化交易的好处。那为什么要组合呢?因为组合是我们现在程序化里面公认的就是做到最后必须要组合,到后面就是多品种、多周期、多策略进行组合。为什么这样子?因为我们最终得出到一个是什么呢?投资组合的一个最大优势是赢利是相加的,亏损是相互抵消的。就相当于比如我做一百个的组合,我每个组合赚一块钱,那我肯定是赚100块,但是如果我100个组合每个组合亏1块钱,那我绝对不是最大回撤绝对不是100块。我可能就60块,为什么,因为A赚钱的过程中,B可能在亏钱,所以它会相互抵消,那你的回撤就会控制下来,这就是我们组合就是现在公认的一个逻辑,所以我们一直在用组合。

第四个就是交易连续性的优势,如果说用程序来做,那它始终就这样监控着,不管是一分钟也好,还是要日线级别也好,一天交易十次也好,还是一年交易十次也好,它都是始终能完美的运行,可持续的关注,这我认为这人工跟这个就是不一样的。当然人工也有人工的优势。

第五个是交易策略的回测性,可分析策略在历史行情中的表现,这我认为做程序的一个重要的一大原因。人工在做的就是我感觉这思路好,那我就开始用实盘,因为你不知道这个东西到底好不好?但是做程序它是这样的,我感觉这个东西好,我先能写出来,写出来以后,我再用历史的N年的数据来测试一下。在测试的过程中,它确实是赚钱的,那我觉得就推算未来赚钱的可能性就会比较高一点,如果说你这个策略感觉比较好,写出来曲线是曲直向下的,那代表什么?代表就是你赚钱的可能性也会比较低。所以我觉得测试报告也比较重要。