2、经济周期与股市:基钦周期、朱格拉周期、库存周期对大盘走势的驱动机制,以及如何通过数据定位当前周期位置
聊到经济周期,很多人第一反应是「这东西太宏观了,跟我炒股有什么关系?」
其实关系大了去了。我做了十几年量化,见过太多人盯着分时图追涨杀跌,结果被市场反复打脸。说白了,大盘的转向从来不是随机游走,背后是经济周期在推着走。你如果能看懂周期,就像拿到了股市的「天气预报」。
2.1 三个核心周期:谁在驱动大盘?
宏观经济学里周期很多,但跟A股最相关的,我总结下来就三个:基钦周期、朱格拉周期、库存周期。嗯,这里要注意,库存周期其实跟基钦周期高度重合,但分析视角略有不同。
2.1.1 基钦周期(短周期,约40个月)
基钦周期也叫「库存周期」,是约瑟夫·基钦在1923年发现的。他观察英美两国数据,发现企业补库存和去库存的行为,会引发大约3.5年的经济波动。
我个人习惯把基钦周期拆成四个阶段:
- 被动去库存:需求回暖,但企业还没反应过来,库存被动下降。对应股市底部区域。
- 主动补库存:企业确认需求好转,开始扩大生产。对应股市主升浪。
- 被动补库存:需求见顶,但生产惯性还在,库存被动堆积。对应股市顶部区域。
- 主动去库存:需求下滑,企业砍单减产。对应股市主跌浪。
我在2019年做过一个回测,用工业企业的「产成品库存同比」和「营业收入同比」来划分这四个阶段。结果很有意思:主动补库存阶段,沪深300的年化收益超过20%;而主动去库存阶段,年化收益是负的。你想想看,如果你能提前判断当前在哪个阶段,是不是就能避开大坑?
2.1.2 朱格拉周期(中周期,约8-10年)
朱格拉周期关注的是设备更新和资本开支。说白了,就是企业什么时候愿意花钱买新机器、建新厂房。
这个周期对股市的影响更「钝」一些,但一旦启动,力度很大。我记得2016-2017年那波「供给侧改革」行情,本质上就是朱格拉周期叠加了政策驱动。当时工程机械、重卡这些板块涨得让人看不懂,其实就是企业开始大规模更新设备了。
判断朱格拉周期位置,我主要看两个指标:
- 制造业固定资产投资完成额同比:这个数据每月公布,能直接反映企业扩产的意愿。
- 工业机器人产量同比:这个指标更灵敏,企业如果开始大量采购机器人,说明对未来的信心很足。
2.1.3 库存周期(实战视角)
刚才说了,库存周期跟基钦周期基本是一回事。但在实战中,我更喜欢用「工业企业产成品存货同比」和「工业企业主营业务收入同比」这两个数据来定位。
为什么?因为数据频率高(月度),而且统计局公布得比较及时。我一般会在每月中旬蹲守国家统计局网站,拿到数据后第一时间更新模型。
核心结论:三个周期中,基钦周期(库存周期)对A股短期走势的预测能力最强。朱格拉周期更适合做长期资产配置的参考。
2.2 如何通过数据定位当前周期位置?
理论说完了,咱们来点干的。怎么用数据判断现在处于哪个阶段?
我自己的做法是建一个「周期定位仪表盘」。说白了,就是把几个关键指标放在一起看,综合打分。
2.2.1 核心指标清单
| 指标名称 | 数据来源 | 频率 | 滞后性 |
|---|---|---|---|
| 工业企业产成品存货同比 | 国家统计局 | 月度 | 约1个月 |
| 工业企业主营业务收入同比 | 国家统计局 | 月度 | 约1个月 |
| 制造业PMI | 国家统计局 | 月度 | 当月 |
| 工业增加值同比 | 国家统计局 | 月度 | 约1个月 |
| 中长期贷款余额同比 | 中国人民银行 | 月度 | 约1个月 |
这里有个避坑指南:我曾经犯过一个错误,只看「产成品存货同比」一个指标。结果2020年初数据显示库存很高,我以为要进入主动去库存了,赶紧减仓。后来才发现,那是因为疫情导致物流中断,库存被动积压,并不是需求不行。所以,一定要结合收入同比和PMI一起看,交叉验证。
2.2.2 实战判断流程
我一般按以下步骤操作:
- 看方向:先看「产成品存货同比」是向上还是向下。向上说明企业在补库存,向下说明在去库存。
- 看强弱:再看「主营业务收入同比」是向上还是向下。向上说明需求好,向下说明需求差。
- 定阶段:根据两个指标的相对位置,判断当前处于哪个阶段。
举个例子:假设当前产成品存货同比在上升,主营业务收入同比也在上升。那大概率是「主动补库存」阶段。这时候股市通常表现不错,可以适当加仓周期股。
反过来,如果存货同比在上升,但收入同比在下降,那就是「被动补库存」阶段。这时候要小心了,大盘可能随时见顶。
个人小技巧:我习惯把这两个指标做成散点图,横轴是存货同比,纵轴是收入同比。每个月的点落在哪个象限,一目了然。这个图我每周都会更新,已经坚持了五年。
2.3 周期定位的量化模型(代码示例)
光看图表还不够,我更喜欢用量化模型来辅助判断。下面是一个简单的Python示例,用移动平均线来识别周期拐点。
import pandas as pd
import numpy as np
# 假设df包含两列:'inventory'(产成品存货同比),'revenue'(主营业务收入同比)
def identify_cycle_phase(df):
# 计算12个月移动平均,平滑噪音
df['inv_ma'] = df['inventory'].rolling(12).mean()
df['rev_ma'] = df['revenue'].rolling(12).mean()
# 判断方向
df['inv_direction'] = np.where(df['inv_ma'] > df['inv_ma'].shift(1), 'up', 'down')
df['rev_direction'] = np.where(df['rev_ma'] > df['rev_ma'].shift(1), 'up', 'down')
# 定位阶段
conditions = [
(df['inv_direction'] == 'down') & (df['rev_direction'] == 'up'), # 被动去库存
(df['inv_direction'] == 'up') & (df['rev_direction'] == 'up'), # 主动补库存
(df['inv_direction'] == 'up') & (df['rev_direction'] == 'down'), # 被动补库存
(df['inv_direction'] == 'down') & (df['rev_direction'] == 'down') # 主动去库存
]
choices = ['被动去库存', '主动补库存', '被动补库存', '主动去库存']
df['phase'] = np.select(conditions, choices, default='未知')
return df
# 使用示例
# result = identify_cycle_phase(your_data)
# print(result[['date', 'phase']].tail(12))
这个模型很简单,但很实用。我自己的实盘组合里,会根据这个模型输出的阶段,动态调整仓位。比如在「主动补库存」阶段,我会把股票仓位加到80%以上;在「主动去库存」阶段,降到30%以下。
注意:模型只是辅助工具,不能完全依赖。2022年那波行情,模型在3月份就发出了「主动去库存」信号,但4月份因为政策刺激,大盘反而反弹了一波。所以,一定要结合政策面、资金面综合判断。
2.4 知识体系框架图
下面这张图是我自己画的,把三个周期的关系、关键指标、以及如何定位当前阶段,都串在了一起。你可以把它当成一张「作战地图」。
这张图的核心逻辑是:从三个周期中提取关键指标,然后通过「方向-强弱-阶段-仓位」的四步流程,把宏观数据转化为可执行的交易决策。
总结一下:经济周期不是玄学,是可以用数据量化的。基钦周期看库存和收入,朱格拉周期看资本开支,库存周期是实战利器。定位周期位置,就是定位大盘的「温度」。温度高了减仓,温度低了加仓,就这么简单。
嗯,最后说一句。我刚开始研究周期的时候,也觉得这东西太复杂,不如看K线来得直接。但后来发现,K线是「果」,周期是「因」。你如果只盯着果,永远慢人一步。把周期搞懂了,至少能让你在别人恐慌的时候,多一份从容。