第四章:因子择时模型——基于宏观因子状态的商品配置策略
说实话,很多做量化的人一上来就搞统计套利、高频策略,却忽略了最根本的东西——宏观因子。
我个人习惯把宏观因子比作「天气」,而商品就是「庄稼」。你种地不看天气,光研究种子好不好、肥料够不够,那大概率是要翻车的。2018年我做国内黑色系的时候,就吃过这个亏——模型跑得挺漂亮,结果贸易战一打,所有相关性全变了。
所以这一章,我们来聊聊怎么根据宏观因子的状态,动态调整商品配置。说白了就是:经济处在什么阶段,我们就配什么商品。
4.1 宏观因子的四大状态
经典的宏观周期划分,大家应该都听过——美林时钟。但实际做量化的时候,我们不能直接拿「美林时钟」四个字去编程。我们需要把它量化为可计算的因子状态。
我一般用两个核心维度来划分:
- 经济增长因子:用工业增加值、PMI、GDP增速等合成
- 通货膨胀因子:用CPI、PPI、核心通胀等合成
两个维度交叉,就得到四个象限:
| 经济\通胀 | 通胀上行 | 通胀下行 |
|---|---|---|
| 经济上行 | 扩张 | 复苏 |
| 经济下行 | 滞胀 | 衰退 |
嗯,这里要注意:实际数据中很少出现完美的「扩张」或「衰退」。更多时候是模糊的、过渡的状态。所以我们需要用概率模型来判断当前处于哪个象限,而不是硬分类。
4.2 各状态下的商品配置逻辑
我们先从逻辑上推演一下,每个状态应该配什么:
扩张期(经济↑ + 通胀↑)
经济好,需求旺,通胀也在涨。这时候工业品、能源表现最好。我记得2017年那波供给侧改革叠加全球经济复苏,铜和原油涨得让人怀疑人生。
- 推荐配置:铜、原油、螺纹钢
- 逻辑:需求拉动 + 成本推动
衰退期(经济↓ + 通胀↓)
经济不行,物价也跌。这时候避险属性强的贵金属反而有机会。但要注意,黄金在衰退初期往往也会跌,因为流动性危机。我2020年3月就踩过这个坑——以为衰退了赶紧买黄金,结果被流动性杀了一波。
- 推荐配置:黄金、国债(非商品但可对冲)
- 逻辑:避险 + 利率下行
滞胀期(经济↓ + 通胀↑)
这是最难受的阶段。经济在跌,物价在涨。股票不行,债券也不行。但商品里有个例外——农产品和能源。因为通胀本身就是成本推动,原油和粮食是通胀的源头。
- 推荐配置:原油、大豆、玉米
- 逻辑:成本驱动 + 供给约束
复苏期(经济↑ + 通胀↓)
经济开始好转,但物价还没起来。这时候工业品和有色会率先启动。因为需求回暖,但供给还没跟上。
- 推荐配置:铜、铝、锌
- 逻辑:需求复苏 + 低库存
4.3 量化实现:因子状态识别
逻辑讲完了,怎么用代码实现?我一般用隐马尔可夫模型(HMM)或者阈值法。这里给一个简单但实用的阈值法示例:
import pandas as pd
import numpy as np
def classify_macro_state(growth_score, inflation_score):
"""
根据经济增长和通胀得分,判断宏观状态
growth_score: 标准化后的经济增长因子(>0 表示扩张,<0 表示收缩)
inflation_score: 标准化后的通胀因子(>0 表示通胀,<0 表示通缩)
"""
if growth_score > 0 and inflation_score > 0:
return '扩张'
elif growth_score > 0 and inflation_score <= 0:
return '复苏'
elif growth_score <= 0 and inflation_score > 0:
return '滞胀'
else:
return '衰退'
# 示例:假设我们计算出了两个因子
growth = 0.8
inflation = -0.3
state = classify_macro_state(growth, inflation)
print(f"当前宏观状态:{state}") # 输出:复苏
4.4 配置策略的权重分配
识别出状态之后,下一步就是分配权重。我见过有人直接写死权重——比如扩张期铜配30%、原油配20%... 这种做法太死板了。
我个人习惯用风险预算的思路:每个状态下,我们设定一个「目标风险暴露」,然后通过优化器反推权重。
举个例子:
# 假设我们确定了当前是扩张期
# 目标:工业品风险暴露 70%,能源 20%,贵金属 10%
target_exposure = {
'工业品': 0.7,
'能源': 0.2,
'贵金属': 0.1
}
# 然后通过历史协方差矩阵,求解各品种的最优权重
# 这里省略优化器代码,核心是让组合的实际因子暴露接近目标
4.5 知识体系总览
下面这张图,是我自己整理的这个策略的核心流程。你可以把它当作一个「作战地图」:
4.6 回测中的常见陷阱
最后说几个实战中容易踩的坑:
- 滞后性:宏观数据发布有滞后,你看到的「扩张」可能已经是过去式了。我一般用高频替代指标(比如用电量、货运量)来做实时判断。
- 状态切换的摩擦成本:频繁切换状态会导致交易成本飙升。建议加一个「确认期」——连续两个月处于同一状态才切换。
- 极端行情下的失效:2020年3月那种流动性危机,所有宏观因子都失效了。这时候需要加入「市场压力指数」作为风控开关。
好了,这一章就到这里。记住:看天气种地,比闭着眼睛种地强得多。