今年7月26日暴跌的时候,葫芦群里有大佬祭出了一张图,通读下来非常震惊,因为这位作者预测了这一次的下跌:
虽然不是每次都对的上,但群里大佬们都说是神书,好奇之下打开阅读,发现作者提出“A股存在10年周期”的结论,尽管对作者的论证方式不懂,但粗看之下似乎有几分道理,就来验证一下!
作者提出的观点:中国股市以10年为一个周期,从农历丙年开始一轮牛市,丁年经调整后持续到辛年,壬癸年为熊市,到乙年孕育牛市。
由于作者的计算方法为天干纪年,而天干有10个,因此每一年可以公元纪年的尾数对应,可以整理为该表格:
流年天干 | 公元尾数 | 市场状况 |
---|---|---|
庚 | 0 | 结构熊 |
辛 | 1 | 熊市 |
壬 | 2 | 熊市 |
癸 | 3 | 熊市 |
甲 | 4 | 熊牛转换 |
乙 | 5 | 熊牛转换 |
丙 | 6 | 牛 |
丁 | 7 | 大牛+熊转换 |
戊 | 8 | 大熊 |
己 | 9 | 牛 |
初步验证的内容就是作者提出的这个十年周期,并不是前面精确到月份和日的内容,主要是那些东西给人的第一印象就不能是百分百正确的,而这个周期如果有一定大体规律可循的话,对于我们策略的择时还是有很大帮助的。
我的验证思路是:
目前我们可以获取的上证指数最早是1990年12月份的数据(from 新浪财经),沪深300指数最早是2005年4月份的数据。
我用的是这个库
转换后的沪深300指数是这样的:
首先咱们按干支纪年对其来个描述性的统计:
df_all = pd.DataFrame()
df_all['year'] = list(set(df001['year']))
for i in list(set(df001['year'])):
df_all.loc[df_all['year'] == i, 'candle_begin_time'] = df001.loc[df001['year'] == i, 'candle_end_time'].iloc[0]
df_all.loc[df_all['year'] == i, 'candle_end_time'] = df001.loc[df001['year'] == i, 'candle_end_time'].iloc[-1]
df_all.loc[df_all['year'] == i, '涨跌幅'] = round(df001.loc[df001['year'] == i, 'close'].iloc[-1] / df001.loc[df001['year'] == i, 'close'].iloc[0] - 1, 2)
df_all.loc[df_all['year'] == i, '振幅'] = round(df001.loc[df001['year'] == i, 'close'].max() / df001.loc[df001['year'] == i, 'close'].min(), 2)
df_all.loc[df_all['year'] == i, '上涨天数'] = len(df001.loc[(df001['year'] == i) & (df001['close_change'] >= 0), 'close_change'] )
df_all.loc[df_all['year'] == i, '下跌天数'] = len(df001.loc[(df001['year'] == i) & (df001['close_change'] < 0), 'close_change'] )
df_all['上涨天数-下跌天数'] = df_all['上涨天数'] - df_all['下跌天数']
df_all.sort_values(['candle_begin_time'])
得到结果如下:
year | candle_begin_time | candle_end_time | 涨跌幅 | 振幅 | 上涨天数 | 下跌天数 | 上涨天数-下跌天数 |
---|---|---|---|---|---|---|---|
庚午 | 1990/12/19 | 1991/2/14 | 0.07 | 1.07 | 39 | 1 | 38 |
辛未 | 1991/2/19 | 1992/1/31 | 0.12 | 1.12 | 180 | 57 | 123 |
壬申 | 1992/2/7 | 1993/1/22 | 7.09 | 10.43 | 69 | 14 | 55 |
癸酉 | 1993/1/27 | 1994/2/4 | -0.31 | 2.04 | 129 | 138 | -9 |
甲戌 | 1994/2/14 | 1995/1/27 | -0.28 | 3.09 | 100 | 146 | -46 |
乙亥 | 1995/2/6 | 1996/2/16 | 0.04 | 1.74 | 128 | 138 | -10 |
丙子 | 1996/3/4 | 1997/1/31 | 0.6 | 2.25 | 129 | 106 | 23 |
丁丑 | 1997/2/17 | 1998/1/23 | 0.24 | 1.68 | 137 | 99 | 38 |
戊寅 | 1998/2/9 | 1999/2/9 | -0.13 | 1.33 | 118 | 140 | -22 |
己卯 | 1999/3/1 | 2000/1/28 | 0.4 | 1.64 | 120 | 111 | 9 |
庚辰 | 2000/2/14 | 2001/1/19 | 0.23 | 1.33 | 136 | 98 | 38 |
辛巳 | 2001/2/5 | 2002/2/8 | -0.25 | 1.65 | 123 | 129 | -6 |
壬午 | 2002/2/25 | 2003/1/29 | -0.02 | 1.31 | 116 | 115 | 1 |
癸未 | 2003/2/10 | 2004/1/16 | 0.08 | 1.24 | 114 | 118 | -4 |
甲申 | 2004/1/29 | 2005/2/4 | -0.22 | 1.5 | 113 | 143 | -30 |
乙酉 | 2005/2/16 | 2006/1/25 | -0.02 | 1.3 | 118 | 116 | 2 |
丙戌 | 2006/2/6 | 2007/2/16 | 1.33 | 2.41 | 166 | 91 | 75 |
丁亥 | 2007/2/26 | 2008/2/5 | 0.51 | 2.2 | 150 | 85 | 65 |
戊子 | 2008/2/13 | 2009/1/23 | -0.56 | 2.73 | 101 | 135 | -34 |
己丑 | 2009/2/2 | 2010/2/12 | 0.5 | 1.73 | 157 | 102 | 55 |
庚寅 | 2010/2/22 | 2011/2/1 | -0.07 | 1.34 | 119 | 114 | 5 |
辛卯 | 2011/2/9 | 2012/1/20 | -0.16 | 1.42 | 112 | 124 | -12 |
壬辰 | 2012/1/30 | 2013/2/8 | 0.06 | 1.26 | 133 | 123 | 10 |
癸巳 | 2013/2/18 | 2014/1/30 | -0.16 | 1.24 | 110 | 123 | -13 |
甲午 | 2014/2/7 | 2015/2/17 | 0.59 | 1.7 | 148 | 108 | 40 |
乙未 | 2015/2/25 | 2016/2/5 | -0.14 | 1.95 | 133 | 104 | 29 |
丙申 | 2016/2/15 | 2017/1/26 | 0.15 | 1.22 | 130 | 107 | 23 |
丁酉 | 2017/2/3 | 2018/2/14 | 0.02 | 1.17 | 154 | 104 | 50 |
戊戌 | 2018/2/22 | 2019/2/1 | -0.2 | 1.35 | 105 | 129 | -24 |
己亥 | 2019/2/11 | 2020/1/23 | 0.12 | 1.23 | 125 | 112 | 13 |
庚子 | 2020/2/3 | 2021/2/10 | 0.33 | 1.37 | 140 | 115 | 25 |
辛丑 | 2021/2/18 | 2021/7/30 | -0.08 | 1.1 | 54 | 58 | -4 |
以下是沪深300的情况:
year | candle_begin_time | candle_end_time | 沪深300涨跌幅 | 沪深300振幅 | 沪深300上涨天数 | 沪深300下跌天数 | 沪深300上涨天数-下跌天数 |
---|---|---|---|---|---|---|---|
乙酉 | 2005/2/16 | 2006/1/25 | 0.01 | 1.23 | 103 | 93 | 10 |
丙戌 | 2006/2/6 | 2007/2/16 | 1.59 | 2.67 | 166 | 91 | 75 |
丁亥 | 2007/2/26 | 2008/2/5 | 0.82 | 2.39 | 151 | 84 | 67 |
戊子 | 2008/2/13 | 2009/1/23 | -0.58 | 3.08 | 104 | 132 | -28 |
己丑 | 2009/2/2 | 2010/2/12 | 0.58 | 1.84 | 164 | 95 | 69 |
庚寅 | 2010/2/22 | 2011/2/1 | -0.05 | 1.41 | 119 | 114 | 5 |
辛卯 | 2011/2/9 | 2012/1/20 | -0.18 | 1.48 | 109 | 127 | -18 |
壬辰 | 2012/1/30 | 2013/2/8 | 0.13 | 1.32 | 130 | 126 | 4 |
癸巳 | 2013/2/18 | 2014/1/30 | -0.2 | 1.27 | 105 | 128 | -23 |
甲午 | 2014/2/7 | 2015/2/17 | 0.59 | 1.75 | 140 | 116 | 24 |
乙未 | 2015/2/25 | 2016/2/5 | -0.15 | 1.88 | 132 | 105 | 27 |
丙申 | 2016/2/15 | 2017/1/26 | 0.15 | 1.24 | 126 | 111 | 15 |
丁酉 | 2017/2/3 | 2018/2/14 | 0.18 | 1.32 | 148 | 110 | 38 |
戊戌 | 2018/2/22 | 2019/2/1 | -0.2 | 1.39 | 105 | 129 | -24 |
己亥 | 2019/2/11 | 2020/1/23 | 0.21 | 1.27 | 121 | 116 | 5 |
庚子 | 2020/2/3 | 2021/2/10 | 0.57 | 1.65 | 147 | 108 | 39 |
辛丑 | 2021/2/18 | 2021/7/30 | -0.17 | 1.22 | 59 | 53 | 6 |
然后我们根据上文那个表格大致看下,我浏览了一遍,基本上大差不差。
比如作者着重强调的,丙丁年是一轮牛市的起点,96年与06年都是50%以上的涨幅,97与07年上指也是20%以上的涨幅,只有16与17年涨幅较小,但也都为正;然后看戊年作为牛市后的回调涨幅都是负的;而己年作为作者指明的牛市,也都是较大的涨幅,但相对来说近年的19年幅度较小;然后看庚年,说是有行情,四次只有一次为负;只有92年的壬申年,本来说是熊市,但市场表现很好,最终的涨幅为7倍(但比较特殊这个年份,具体什么原因也不知道)。
ok,经过第一轮的判断,我们姑且认为作者的结论存在一定的合理性,接下来我们通过图表的形式来进一步认识。
plt.figure(figsize=(15, 38))
var1 = ['丙', '丁', '戊', '己', '庚', '辛', '壬', '癸', '甲', '乙']
var_temp = 0
for o in var1:
ax = plt.subplot(10, 1, var_temp+1)
for i in list(filter(lambda x: x.startswith(o), set(df001['year']))):
temp = df001.loc[df001['year']==i, 'close'].reset_index(drop=True)
temp['curve'] = (1+temp.pct_change()).cumprod()
ax.plot(temp['curve'], label=i)
plt.legend()
var_temp += 1
plt.savefig('picture.png')
plt.show()
得到一张这样的图:
这是沪深300的:
到这里我发现,如果想要肯定作者的结论,明显有的年份不支持,如壬申年即92年一飞冲天,而作者提出的壬年为熊市;如果要否定作者的结论,也是证据不足,作者提出的丙丁年都是大牛市、戊年是熊市、己年是牛市的结论也确实都是这样,无非是近几年所谓的牛市涨跌幅比较小,那么也有解释说不同的地支带来的组合强弱不一样,比如作者谈到26年为丙午年,午火为最纯正的火、天干地支都是财,所以是一场很强烈的牛市。
至于对我们的策略有什么用?个人并没有找到特别好的辅助方法,唯一有点用的就是避开丁年大涨后的大跌,即戊年,但作者说的辛壬癸三年的熊市,我看很多策略都是可以赚到钱的,而丙丁年的大牛市也不是各个策略表现最好的时候,作者说的熊牛转换的甲乙年是很多策略赚钱最多的年份。
另外也不是每年的丙丁年都是大牛市,比如最近的就不是,而是14、15的甲乙年构成的牛市,16、17只是从2600走到了3500的小牛。
总之,目前样本数据太少,也就三个周期,而且作者对周期的描述没有非常定量,我们的验证也不能百分百肯定或否定他的结论,完全用他这套做方针也是存在不确定性的,大家仁者见仁智者见智吧。