股市交易的策略和方法当然有很多种,但通常用的绝大多数不外乎是以下这两种:
1) 回归交易(Mean Reversion)
2) 趋势交易(trend following, or momentum trading)
回归交易讲究的是买低卖高,而趋势交易的策略是买高卖更高。回归交易的人热衷去抄底,而趋势交易是买涨不买跌。
比如说现在,股市近高点,回归交易的思维是,现在股市到顶,该回撤了,所以该卖了。而趋势交易的人则认为,股市大涨,说明趋势已经确立,正是上车的好时机。
可见,这两种策略需要完全不同的思维方式,当然也适用于不同的市场,比如股市上下波动时适合于回归交易,而趋势明显的时候用趋势交易更加有利。
近来我自己是热衷于趋势交易的算法,主要是长期趋势交易,这里就简要说说趋势交易。
任何忽悠趋势交易的都会拿牛顿的惯性定律说事,说一个物体一旦处在一个状态,它继续保持这种状态的可能性更大,除非有大的外在因素改变它。股市也一样,一个趋势一旦已经形成,它继续这种趋势的可能性更大,除非有大的因素改变它。
所以要顺势而为,不是有句话说,牛市不做短,熊市不做长,就是这个道理。
当然,要顺势交易,必须要先确认趋势已经存在。而确认趋势,大多是马后炮,股市的顶部和底部,都是过后才能确认,存在着严重的滞后性,这是用均线趋势交易常见的例子:
可以看出,用趋势交易, 既抄不到底, 也抓不到顶。有人讽刺也可以用来做为趋势交易的Dow Theory,说它既抓不到底部的三分之一,也逃不掉顶部的三份之一,剩下还不知是否存在的三分之一,这是趋势交易的通病。
话虽这么说,但趋势交易的有效性, 是毋庸置疑的。
这里主要说说算法趋势交易,侧重于长期趋势交易,这是我自己感兴趣和正在做的。
用算法做趋势交易,主要有以下几种方法:
1)均线或均线交叉法(以下简称均线法):比如,可以200天均线以上就买,200天均线以下就卖。或者用两个均线交叉,一旦短均线高于长均线就买,短均线低于长均线就卖,简单明了。
2) 突破交易法(Channel Breakout): 原始的突破交易法称为Donchian Channels Strategy,是算法交易先驱Richard Donchian最先开始使用的,刚开始是用的20天的区间(Channel ),具体就是当前的价格高于过去20天的任何一天的就买,低于过去20天的任何一天的就卖(或short)。也可以用55天的区间做长期趋势交易,高于过去55天任何一天的就买,低于过去55天任何一天的就卖。后来,在原始的Donchian Channels基础上出现了很多改进的突破交易法, 包括非常有名的Turtle Trading Strategy,这些改进的突破交易法大多保留了买入的规则(比如高于20天就买),但大多对退出机制做了改进,比如, 有的仍然用20天做为进的标准,而改用10天做为退出的标准,或者用ATR(average true range),或者Bollinger bands等五花八门的方法做为退出机制。
3)线性回归的坡度法:对过去一段时间,比如过去90天的价格做一个线性回归,会得到一条直线,根据直线的坡度来判断趋势。
其它还有很多别的趋势交易法,比如用是否突破trendline,或者Dow Theory等,但是这些方法从算法上相对难以实现。
目前绝大多数趋势交易系统用的是前两种方法。
一般来说,无论用哪种方法,最终的结果差别不大。用算法交易界前辈Perry Kaufman的话来说,只要趋势存在,三种方法都会有不错的回报,而如果趋势不存在的话, 无论用哪种方法都会有损失。
这三种方法尽管最终结果差不多,但它们的risk profile还是有差别的。相对于突破交易法,均线法的whipsaws较多,交易次数要多一点,赢率低(尽管最终总回报差别不大),但它的Max Drawdown相对要低一些,而突破交易法恰恰相反,坡度法的risk profile是介入两者之间。
突破交易法是大佬Perry Kaufman的最爱。当初,我自己设计系统的均线法因为whipsaws太多,造成的损耗太大,我费了一两个月的功夫,尝试了各种方法, 包括ADX,Aroon Oscillator等仍然无果后,测试了突破交易法,结果whipsaws大幅降低,我大喜过望。但在实际应用中,才发现突破法的Max Drawdown太大, 我无法承受,现在又改回用最简单的均线法,突破法只做为参考。
另外,对冲基金经理Andreas Clenow的第二本书Stocks On the Move,整本书实际上是详细介绍了一种Momentum交易方法:把标普500指数的所有股票按过去90天的回报排序(包括风险因素),只买最高的前20个,每个周rebalance一次, 其中加了个200天均线趋势过滤器,只允许在SP 500高于200天均线才买,另外如果90天回报为负,也要退出,这样可以避开熊市。
Gary Antonacci在他的Dual Momentum Investing,也提到了一种Momentum交易方法,取一个美国的指数基金比如SPY,再取一个非美国的发达国家股市基金比如VEU,再加一个美国短期国债基金,取过去12个月的回报,三者中哪个高买哪个,每月rebalance一次。 不过, 我做的回测好像结果并不好,还不如长持SPY, 这其实也可以理解,美国的股市在过去几十年都牛气哄哄, 别的国家哪个能比得了!
基于看到的前两本书,我问AI, SP有没有类似的基金?结果AI给出的答案是SPMO,我一看, 这不就是越王兄曾经推荐的东东吗?原来如此!不过SPMO好像是半年rebalance一次,而我前面提到的两个一个是一周rebalance一次,一个是一月一次,以后我也会长持一部分SPMO。
趋势交易(包括Momentum trading)做为一种工具,用好会有不错的回报。但是,实际执行并不容易,它的缺点包括赢率低(大多交易是输, 赢就赢大的),要成功需要承受很大Drawdown,有时与大市不同步, 尤其是股市翻转的初期,这些都考验执行者的意志。
股票市场并不是最适合趋势交易的场所,因为股票市场上下波动太频繁,而趋势交易最适合commodity, 期货,利率,国债等,这些存在着更明显的长期趋势。
如果你用趋势法交易SPY,尽管在有的年份会超越SPY, 但大多年份回报是低于长持SPY的,那这是否就毫无用处呢?也不完全是,因为用趋势法尽管绝对回报不见得高于不用,但大多情况下它可以把Max Drawdown降低50%左右,也就是说尽管它的绝对回报不见的高,但加上风险因素后的回报(sharpe ratio)是提高了。
基于这种思维,如果我们问,能否找到一种能打败SPY,同时风险并没有提高的策略?我想可以找一种回报比SPY高, 波动大的投资, 然后用趋势法给过滤一下,比如用QQQ。有的同学会说,直接长持QQQ不就得了吗?长持QQQ的回报可能是会比SPY高,但它风险也比SPY高,我的前提条件是风险也不提高。
如果继续问,能否找到一种回报比QQQ高, 但风险并不提高的方法呢?显然可以用倍数基金,让趋势法给过滤一下。
折腾了半年的算法和回测,其中走了很多弯路,包括刚开始的两个月浪费在FA身上,后来折腾均线法的whipsaws,费了一个多月的时间调整各种参数,看了书后才意识到属于过度优化,是无用功。
现在正在尝试系统,看看以后的实际效果如何。
建宁 2025/6/27