程序化交易思路
时间:2023-03-17 08:52:02 | 来源:电子商务
时间:2023-03-17 08:52:02 来源:电子商务
大家好,我是股票届的小学生,汉口叶荣添。之前零零碎碎的在本站发了一些文章,提到了一些我在真实交易中采取的策略。这些策略有些跑了1年多,小赚一点。有些跑了半年左右,还有些亏损。总体来说,这些策略的收益是在以沪深300为基准的收益之上的,这个过程没有巨量的超额收益,也没有大幅度的回撤,总体上还算平稳,但缺点是超额收益也不算太高。所以想暴富的同志们可以不用往下看了,下面我将系统性的介绍我的交易思想以及如何通过技术来打造交易系统,交易系统的具体实现逻辑和代码我都会一一公布到本站,交易系统的一部分我会发布到网络上供感兴趣的朋友使用,希望能为他们带来帮助。所以,如果你对技术分析以及程序化交易感兴趣,可以关注下我哈。
交易思想交易的基础是框架,也就是说我们需要基于一定的规则来做交易。这个道理很简单,讲的通俗一点,如果我今天按K线形态来买、明天按ROE指标来买、后天又跟着北向资金来抄底,那我的交易系统就是一个混乱的、无法度量的系统,如果这套系统赚钱了,我不清楚它是靠什么赚的钱,是均线起了作用呢还是ROE起了作用呢?谁起到的作用更大呢?谁起的正向作用,谁又起的负作用呢?如果这套系统亏钱了,以上的几个问题我们仍然无法解答。所以,如果没有一个框架做支撑,那么无论盈亏,都是认知以外的钱。相反,如果是基于一定的规则来做交易,是不是以上这些问题就很容易解答了。比如以5日均线上穿15日均线为信号点买入,股票池定在沪深300指数成分股,然后以正负10%的收益为界进行止盈止损。这就是一个具体的策略了,这条策略能否盈利,我们可以通过在历史上不同阶段做回测来有一个大致的了解,同时也可以通过跑模拟来看它目前的表现。一条具体的策略是由若干条规则定义的,这若干条规则是基于整体框架来设定的。所以如果把策略比作一条鱼,那么框架就是鱼骨,规则就是鱼肉。策略=框架+规则。
交易框架交易分为几个部分:
1、资金,没有钱做不了交易。
2、股票池,股票池的引入是为了限制满足设定规则的股票个数,A股目前有近5000支股票,如果制定了一条策略,可能某一个交易日有近3000支股票满足策略的规则,那么我们有足够的资金一起买入这3000支股票么?显然是不可能的,所以引入了股票池,股票池可以是自己熟悉的股票组成的,也可以是指数成分股,或者是满足某一条件的股票,比如最近一次财报公布的利润率大于40%的股票。
3、买入频率,买入频率也是由于资金限制引入的。举个例子,比如我手上有1万的资金,如果我每次交易使用5000块,那么我只能连续进行2次交易就没钱了,如果第三个交易日又出现了买入信号,那么就无法交易,执行不了策略。那么为了能一直执行策略,我必须在买入之后第二个交易日就卖掉,这样资金才周转的过来。
4、买入信号,什么时候买。
5、卖出信号,什么时候卖。
这五个部分组成了交易整体,设计框架的目的就是为了能很好的处理这五个部分的相互制约关系,使得交易能按策略顺利的执行下去。
上图是在交易框架的管理下,交易策略的执行过程。菱形的地方就是策略执行需要满足的规则,买入/卖出信号里的规则设定需要想象力、灵感以及耐心。卖出信号的规则与交易频率的规则、资金的规则相互制约。股票池的规则根据自定义的方式确认。资金的规则设定相对容易,理论上每次交易使用相同的资金,这样可以量化出策略的稳定性及盈利能力。交易频率的规则定义为一个交易日的买入次数,举个例子,如果交易频率定位一个交易日买入小于或等于1次,那么当某个交易日有10只股票发出了买入信号,那么久只能选其中1只股票买入,如何选也是交易频率的规则之一。所以交易频率规则里面有两条子规则需要设定,一是1个交易日的买入次数,二是排序。下表给出了不同模块下规则的制约关系,可以看出,卖出信号、资金和交易频率三者是相互制约的。这里举一个较为完备的例子来阐述为什么它们三者有相互制约关系。
是否有制约关系 | 买入信号 | 卖出信号 | 资金 | 交易频率 |
买入信号 | 无 | 无 | 无 | 无 |
卖出信号 | 无 | 无 | 有 | 有 |
资金 | 无 | 有 | 无 | 有 |
交易频率 | 无 | 有 | 有 | 无 |
卖出信号、资金和交易频率三者的制约关系假定我现在的资金有1万块,我对资金设定了一个规则,那就是每次拿2000块来买入,可能有时1500,有时2500(由于不同股票股价导致的偏差),保证平均下来每次2000块的投入即可。我的交易频率设定为一个交易日最多交易5次。我的卖出信号制定的规则是买入后的第2个交易日卖出。
当前的场景是这样的:在第1个交易日里,有6只股票发出了买入信号,在第2个交易日里,有10只股票发出了买入信号,在第3个交易日里,有7只股票发出了买入信号。那么在第1个交易日里,我在6只股票里选了5只股票买入,消耗了1万块。在第2个交易日里,我就没钱了,因为我的卖出规则是第三个交易日卖出,因此第2个交易日里这10只股票,我一只也买不了,违背了策略的可执行性原则。在第3个交易日里,我卖出了第1个交易日买入的所有股票,回款8千到1万2左右的资金,因此可以继续买入第三个交易日里的其中5只股票。可以想下,如果我改变了交易频率,1个交易日最多交易1次,那么我就可以顺利完成整个策略了,或者改变卖出规则,当日买,次日卖,也可以顺利完成整个策略。又或者我的资金由1万增加到2万,也可以顺利完成整个策略。由此就证明了卖出信号、资金和交易频率三者是相互制约的关系。
所以,其实我们可以很好的去制定资金规则,交易频率规则和卖出规则,当然卖出规则不仅仅是硬性的指定多少个交易日后卖出,这只是一个边界规则。下面让我们抽象一点,假如我们有S资金,我们每次使用O资金做交易,那么我们的极限交易次数就是int(S/0)次,S是实力,无需假设,O是基础参数,需要手动设置。交易频率假设为N,卖出规则为M,那么必须要保证int(int(S/0)/N) >= M才行。
框架的局限性分散交易一方面规避了巨幅亏损的风险,另一方面也限制了收益。一个很简单的道理,比如一只股票在10个交易日内上涨了30%,如果我在这只股票上投入了10万,那么我的收益就是3万。如果我总共就10万块,可能我只能在这只股票上投入1万,那么收益就只有3千而已,这也就是我开头说的不能暴富的原因。如果想获取5倍,10倍以上的收益,请把你的所有资金全部赌在1到2只股票上,这样是最切实际的做法。