在2.1节中,我们使用了一个简单的回测,验证了一下小瓦的“低买高卖”策略。总体来看,这个策略虽然没有让小瓦损失太多资产,但是也没有带来期待的回报。因此,小瓦迫不及待地想知道,有没有一个更好的策略能提高交易的回报。
实话说,想设计一个百分之百达到预期收益的策略,目前看来是不现实的。历史上确实有一些比较经典的策略,如本节介绍的单一移动平均(Single Moving Average,SMA)策略。
移动平均策略的核心思想非常简单,且十分容易理解。当股价上升且向上穿过 N 日的均线时,说明股价在向上突破,此时下单买入;当股价下降且向下穿过 N 日的均线时,说明股价整体出现下跌的趋势,此时下单卖出。或者当 M 日均价上升穿过 N 日的均线( M < N )时,说明股票处于上升的趋势,应下单买入;反之,当 M 日均价下降且穿过 N 日均线时,说明股票处于下降的趋势,应下单卖出。
在这个策略中,需要用到的指标便是均线。下面我们使用代码来演示股价均线的绘制,还是使用2.1节中下载的股票数据,选取10个交易日的股票均价作为均线,输入代码如下:
运行代码,可以得到如表2.3所示的结果。
表2.3 在原始数据中添加10日均价
【结果分析】 从表2.3中可以看到,数据表多出一个字段avg_10。该字段存储的是10日内股票的均价。而在前9天中,由于数据不足10天,均价计算的是自有数据以来,截止到当日的股票均价。
为了直观地展示股价与均价的关系,可以使用下面的代码对数据进行可视化:
运行代码,可以得到如图2.2所示的结果。
图2.2 股价与10日均线
【结果分析】 从图2.2中可以看到,实线是从2020年1月1日至2020年3月20日的股票调整后价格;虚线是该股票的10日均价。整体来看,在此期间,该股的整体趋势处于下行,不过不要紧,我们就基于这种“逆境”来尝试创建交易策略。
顾名思义,双移动平均策略就是使用两条均线来判断股价未来的走势。在两条均线中,一条是长期均线(如10日均线),另一条是短期均线(如5日均线)。这种策略基于这样一种假设:股票价格的动量会朝着短期均线的方向移动。当短期均线穿过过长期均线,超过长期移动平均线时,动量将向上,此时股价可能会上涨。然而,如果短期均线的移动方向相反,则股价可能下跌。
根据这个原理,我们来创建一个双移动平均交易策略,输入代码如下:
运行代码,可以得到如表2.4所示的结果。
表2.4 根据5日均价和10日均价创建的交易策略
【结果分析】 从表2.4中可以看到,在3月9日这一天,该股票的5日均价约为80.31元,而10日均价约为79.87元,5日均价大于10日均价,故此程序给出的交易信号是1;同样,在3月10日这一天,5日均价约为80.25元,而10日均价约为79.77元,交易信号不变,仍然是1,所以这一天不进行任何交易;但到了3月12日,5日均价下跌至约78.61元,小于10日均价(约79.29元),交易信号变为0,与前一天相比,交易信号的变化为–1,所以下单卖出一手股票。
可以使用可视化的方法来直观感受这个过程,输入代码如下:
运行代码,可以得到如图2.3所示的结果。
图2.3 移动平均策略给出的买卖点
【结果分析】 从图2.3中可以看到,使用移动平均策略,在选取的时间范围内一共进行了6笔交易,其中3笔买入,3笔卖出。由于在该时间范围内,该股的价格一直处于下跌的趋势,通过肉眼也可以看出,每次卖出的价格都要低于买入的价格,总体应该是亏损的状态。
虽然我们用肉眼也可以看出在股价整体下跌的过程中,双移动平均策略的业绩表现并不好,不过我们还是可以写一点简单的代码来进行回测。输入代码如下:
运行代码,可以得到如表2.5所示的结果。
表2.5 最后10个交易日的投资组合情况
【结果分析】 从表2.5中可以看到,截至2020年3月20日,小瓦持仓的仓位为0,此时的总资产只剩19306元,相比初始的20000元,总资产缩水了694元。小瓦虽然没有赚到钱,但也没有亏损太多。
为了和小瓦自己的策略进行直观对比,这里也用可视化的方法来展示一下双移动平均策略的回测结果。输入代码如下:
运行代码,可以得到图2.4所示的结果。
图2.4 总资产与持仓市值的变化
【结果分析】 从图2.4中可以看到,使用双移动平均策略进行交易,在选定的时间范围内,总资产也轻微减少了。其表现也没有比小瓦自己的“低买高卖”策略更加出色。当然,如果我们仔细思考一下,就会发现使用该策略后,小瓦持仓的时间要比使用“低买高卖”策略短很多;而且在3月12日以后,一直保持着空仓的状态,避免了股价大幅下跌带来的损失。
经过测试,双移动平均策略作为经典交易策略之一,有一定的可取之处;但是在股价下行的趋势中,也没有实现“逆势赚钱”。看来我们还需要和小瓦一起,再了解一下其他的交易策略。