【量化】验证《股市操盘宝典》对周期论

起源

【量化】验证《股市操盘宝典》对周期论_第1张图片

今年7月26日暴跌的时候,葫芦群里有大佬祭出了一张图,通读下来非常震惊,因为这位作者预测了这一次的下跌:

【量化】验证《股市操盘宝典》对周期论_第2张图片

虽然不是每次都对的上,但群里大佬们都说是神书,好奇之下打开阅读,发现作者提出“A股存在10年周期”的结论,尽管对作者的论证方式不懂,但粗看之下似乎有几分道理,就来验证一下!

作者观点与验证

作者观点

作者提出的观点:中国股市以10年为一个周期,从农历丙年开始一轮牛市,丁年经调整后持续到辛年,壬癸年为熊市,到乙年孕育牛市。

由于作者的计算方法为天干纪年,而天干有10个,因此每一年可以公元纪年的尾数对应,可以整理为该表格:

流年天干 公元尾数 市场状况
0 结构熊
1 熊市
2 熊市
3 熊市
4 熊牛转换
5 熊牛转换
6
7 大牛+熊转换
8 大熊
9

验证

初步验证的内容就是作者提出的这个十年周期,并不是前面精确到月份和日的内容,主要是那些东西给人的第一印象就不能是百分百正确的,而这个周期如果有一定大体规律可循的话,对于我们策略的择时还是有很大帮助的。

我的验证思路是:

  1. 下载上证指数和沪深300指数的数据(课程讲了,懒得爬可以去网站下)并将其转换为干支纪年;
  2. 计算每年(以干支纪年分类,下同)的涨跌幅、振幅、上涨天数、下跌天数等指标,结合作者结论进行初步判断;
  3. 画出每年的图表,进行主观上的判断(不是说好了我们是搞量化的吗);
准备工作
  • 爬取指数数据

目前我们可以获取的上证指数最早是1990年12月份的数据(from 新浪财经),沪深300指数最早是2005年4月份的数据。

  • 下载可以转换为农历时间的库

我用的是这个库

转换后的沪深300指数是这样的:

【量化】验证《股市操盘宝典》对周期论_第3张图片

过程

首先咱们按干支纪年对其来个描述性的统计:

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()

得到一张这样的图:

【量化】验证《股市操盘宝典》对周期论_第4张图片

这是沪深300的:

【量化】验证《股市操盘宝典》对周期论_第5张图片

到这里我发现,如果想要肯定作者的结论,明显有的年份不支持,如壬申年即92年一飞冲天,而作者提出的壬年为熊市;如果要否定作者的结论,也是证据不足,作者提出的丙丁年都是大牛市、戊年是熊市、己年是牛市的结论也确实都是这样,无非是近几年所谓的牛市涨跌幅比较小,那么也有解释说不同的地支带来的组合强弱不一样,比如作者谈到26年为丙午年,午火为最纯正的火、天干地支都是财,所以是一场很强烈的牛市。

结论

至于对我们的策略有什么用?个人并没有找到特别好的辅助方法,唯一有点用的就是避开丁年大涨后的大跌,即戊年,但作者说的辛壬癸三年的熊市,我看很多策略都是可以赚到钱的,而丙丁年的大牛市也不是各个策略表现最好的时候,作者说的熊牛转换的甲乙年是很多策略赚钱最多的年份。

另外也不是每年的丙丁年都是大牛市,比如最近的就不是,而是14、15的甲乙年构成的牛市,16、17只是从2600走到了3500的小牛。

总之,目前样本数据太少,也就三个周期,而且作者对周期的描述没有非常定量,我们的验证也不能百分百肯定或否定他的结论,完全用他这套做方针也是存在不确定性的,大家仁者见仁智者见智吧。

你可能感兴趣的:(量化交易,投资,股票,周期,量化,天干地支)