果仁网的用户最常使用两个功能,一个是回测,一个是每日选股。而细心的用户经常会使用回测中的持仓详情与每日选股结果进行比对。
但是,最终的持仓股票和每日选股结果有时却存在较大的偏差,这往往会给用户带来困惑。
今天,刚好一位用户向我们咨询他在对照持仓详情和每日选股结果时遇到的困惑,其中几个问题非常具有代表性。
我们就以他的这个策略为例,来讲解下如何看待每日选股的结果和股票持仓详情出现的偏差。
一、没有排除新股
我们使用该用户提供的策略进行每日选股结果如下:
17号的选股,将在4月18日买入,所以持仓详情如下:
明显可以看到每日选股中,仅有7只股票和最后的持仓股票结果一致,而排名最靠前的4只股票并没有成为持仓股票。这是为什么呢?
第一个原因就是大部分不一致的股票是刚上市的新股。
我们如果增加“上市天数”这一栏数据,可以看到前四股票虽然综合排名分最高,但是因为是上市新股(如上图所示),所以无法买入,那么系统自然会从排名第五的股票开始买入。
所以说,在制作策略时,为了使得策略的真实表现情况和实际买卖时更加一致,一般我们会增加类似 “上市天数>60天”这样的筛选条件。
二、持仓含有停牌股票
增加该条件后使用每日选股,结果如下:
持仓详情如下:
可以看到前面14只股票结果都是一致的,只有第15只股票,持仓里面有而选股中没有。
这里的原因就是:持仓有该股票时,该股票停牌了。所以导致即使在每日选股该股票排名靠后了,但是仍然无法卖出,而该策略持有股票的上限就是15只,所以仍然占用一个持仓名额。
这里还需要注意的一点是,虽然在选股时,可以勾选“过滤停牌股票”这一选项,使得停牌的股票不进入后面的排名,但是如果该股票在买入后停牌,就仍然还会在持仓股票中。
当股票复牌后,该股票排名大于最大持仓股票数量时,才会被卖出。
三、使用模型Ⅱ中的卖出条件
如果我们将该模型从模型Ⅰ切换为模型Ⅱ并设置如下卖出条件:
我们来看17年6月13日的每日选股结果:
该交易模型最多买入15只股票,而持仓中的第13和14只股票,在前一日的选股排名中排列在22和23位,为什么排名靠后的股票还是成为为持仓呢?
这就是因为模型Ⅱ的买卖条件不对称造成的。我们在本例中设定了卖出条件:“排名名次>27”也就是说当股票排名超过27名后才会被卖出,而持仓中的“奥翔药业”和“华峰股份”虽然排名跌落至15名以外,但还没超过排名条件的27名,所以仍然会是持有状态。
最后需要注意的是:如果卖出条件中有多个条件,那么每个条件之间是“或”的关系。
总结
所以说,如果希望每日选股的结果和最终持仓尽可能的一致,就需要注意停牌股票、涨跌停和新股的影响。
另外,买入卖出条件的不对称、买入后的停牌也可能造成最终的选股结果和持仓的股票不一致,需要具体问题具体分析。而策略的持仓和选股结果的一致程度,则可以使用回测结果中的“调仓指令可执行比例”这一统计指标进行总体的判断。