宏观环境与因子表现:经济增长周期、利率与流动性、市场情绪与风险偏好、通胀与因子表现
各位同学,今天我们来聊一个很实际的问题——宏观环境怎么影响因子表现。
说实话,我早年做量化的时候,犯过一个挺大的错误。那时候我沉迷于挖掘各种新奇因子,觉得只要因子够多、组合够复杂,就能跑赢市场。结果呢?2018年那波大熊市,我的多因子组合回撤了将近40%。后来复盘才发现,不是因子失效了,而是我完全忽略了宏观环境对因子表现的影响。
嗯,从那以后,我养成了一个习惯:每次构建因子组合之前,先看看当前处于什么宏观周期。今天我就把这个思路分享给大家。
一、经济增长周期与因子轮动
经济增长周期,说白了就是经济在扩张和收缩之间来回摆动。不同的经济阶段,不同因子的表现差异非常大。
我个人习惯把经济周期分成四个阶段:
- 复苏期:经济从底部回升,GDP增速加快,企业盈利改善
- 繁荣期:经济过热,产能利用率高,通胀开始抬头
- 衰退期:经济增速放缓,企业盈利下滑,失业率上升
- 萧条期:经济触底,市场信心低迷,信贷收缩
你想想看,不同阶段哪些因子表现好?
核心规律:
- 复苏期:价值因子、低波动因子表现优异。因为企业盈利改善,估值修复是主线。
- 繁荣期:动量因子、成长因子领跑。市场情绪高涨,资金追逐高增长故事。
- 衰退期:质量因子、红利因子成为避风港。防御属性凸显,现金流稳定的公司受青睐。
- 萧条期:低波动因子、规模因子(小盘股)可能有超额收益。市场触底时,小市值弹性更大。
我在项目中遇到过这样一个案例:2020年疫情爆发后,全球经济进入衰退。当时很多量化团队还在用动量因子做多,结果被反复打脸。而我提前切换到了质量因子和红利因子,组合回撤控制在了10%以内。这就是看宏观的好处。
二、利率与流动性:因子表现的放大器
利率和流动性,是因子表现的重要驱动力。为什么?因为利率决定了资金的成本,流动性决定了资金的可得性。
我一般关注两个指标:
- 无风险利率:通常用10年期国债收益率代表
- 信用利差:企业债收益率与国债收益率的差值
利率上升时,成长因子往往承压。因为成长股的估值对利率敏感,未来现金流折现后价值下降。反过来,价值因子和红利因子相对抗跌。
流动性宽松时,小盘股因子和低质量因子容易跑出超额收益。因为资金泛滥,投资者愿意承担更多风险去博收益。
我的经验:
当信用利差快速走阔时,赶紧减仓高杠杆公司的股票。我曾经在2015年股灾前观察到信用利差异常扩大,果断降低了小盘因子的权重,躲过了一劫。
这里给大家一个简单的判断框架:
| 利率环境 | 流动性环境 | 推荐因子 | 回避因子 |
|---|---|---|---|
| 利率下行 | 宽松 | 成长、动量、小盘 | 价值、红利 |
| 利率上行 | 收紧 | 价值、红利、低波 | 成长、小盘 |
| 利率平稳 | 中性 | 质量、动量 | 极端风格因子 |
三、市场情绪与风险偏好:因子表现的催化剂
市场情绪这东西,听起来很玄,但其实可以量化。我常用的指标包括:
- VIX指数:恐慌指数,越高代表市场越恐惧
- Put/Call比率:看跌期权与看涨期权的成交量比值
- 融资余额变化:杠杆资金的进出情况
- 换手率:市场活跃度
情绪高涨时,高风险偏好的因子(如小盘、低质量、高Beta)表现好。情绪低迷时,防御性因子(如低波动、质量、红利)更受追捧。
我记得2021年初,市场情绪极度亢奋,散户疯狂涌入。那时候动量因子和成长因子涨得飞起,但低波动因子反而跑输。很多做低波策略的朋友那段时间很痛苦。但到了2022年,市场情绪急转直下,低波因子又成了香饽饽。
避坑指南:
我曾经在市场情绪极度恐慌时抄底小盘因子,结果被埋了。后来我总结了一个教训:情绪指标要结合估值水平一起看。如果情绪恐慌但估值已经很低,可以左侧布局;如果情绪恐慌但估值还在高位,千万别接飞刀。
四、通胀与因子表现
通胀,是这两年大家感受最深的一个宏观变量。通胀对因子的影响,其实有很清晰的传导路径。
通胀上升时:
- 上游资源品公司受益,大宗商品相关因子走强
- 高毛利率的公司(如消费、医药)受冲击,因为成本上升但提价能力有限
- 价值因子通常跑赢成长因子,因为成长股的远期现金流被通胀侵蚀得更厉害
通胀下降时:
- 成长因子重新获得青睐,因为利率预期下降
- 消费、科技等板块表现较好
- 红利因子的吸引力相对下降
我个人习惯用盈亏平衡通胀率(TIPS收益率与国债收益率的差值)来观察市场对通胀的预期。这个指标比实际CPI更灵敏,因为它包含了市场对未来通胀的定价。
下面这张图是我自己总结的宏观因子轮动框架,大家可以参考:
五、实战中的宏观因子择时框架
讲了这么多理论,最后给大家一个可落地的框架。我个人在实战中是这样做的:
- 建立宏观指标数据库:收集GDP增速、PMI、CPI、PPI、10年期国债收益率、信用利差、VIX、融资余额等数据
- 划分宏观状态:用聚类或阈值法,把历史数据分成不同的宏观状态
- 回测因子表现:统计每个宏观状态下,各个因子的平均收益、胜率、最大回撤
- 动态调整权重:根据当前宏观状态,调整因子组合的权重
这里给一段简单的Python代码,展示如何根据宏观状态调整因子权重:
import pandas as pd
import numpy as np
# 假设我们有因子收益数据和宏观状态标签
# factor_returns: DataFrame, 列名为因子名称
# macro_state: Series, 当前宏观状态
def adjust_factor_weights(factor_returns, macro_state, lookback=252):
"""
根据宏观状态调整因子权重
"""
# 计算每个宏观状态下因子的夏普比率
states = factor_returns.groupby(macro_state)
sharpe = states.apply(lambda x: x.mean() / x.std() * np.sqrt(252))
# 获取当前状态
current_state = macro_state.iloc[-1]
# 选择当前状态下夏普比率最高的3个因子
top_factors = sharpe.loc[current_state].nlargest(3).index.tolist()
# 等权配置
weights = pd.Series(0, index=factor_returns.columns)
weights[top_factors] = 1.0 / len(top_factors)
return weights
# 使用示例
weights = adjust_factor_weights(factor_returns, macro_state)
print("当前因子权重:")
print(weights)
一个小建议:
不要频繁切换宏观状态。我一般用月度数据做判断,季度调整一次权重。太频繁的切换会产生大量交易成本,反而得不偿失。
好了,关于宏观环境与因子表现的关系,今天就讲到这里。记住一句话:因子不是万能的,但结合宏观环境看因子,能让你少踩很多坑。
公众号:蓝海资料掘金营,微信deep3321