第四章:因子择时模型——基于宏观因子状态的商品配置策略

说实话,很多做量化的人一上来就搞统计套利、高频策略,却忽略了最根本的东西——宏观因子

我个人习惯把宏观因子比作「天气」,而商品就是「庄稼」。你种地不看天气,光研究种子好不好、肥料够不够,那大概率是要翻车的。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}")  # 输出:复苏
小技巧:实际项目中,growth_score 和 inflation_score 建议用滚动Z-score标准化,窗口选24个月。这样能避免数据漂移带来的误判。

4.4 配置策略的权重分配

识别出状态之后,下一步就是分配权重。我见过有人直接写死权重——比如扩张期铜配30%、原油配20%... 这种做法太死板了。

我个人习惯用风险预算的思路:每个状态下,我们设定一个「目标风险暴露」,然后通过优化器反推权重。

举个例子:

# 假设我们确定了当前是扩张期
# 目标:工业品风险暴露 70%,能源 20%,贵金属 10%
target_exposure = {
    '工业品': 0.7,
    '能源': 0.2,
    '贵金属': 0.1
}

# 然后通过历史协方差矩阵,求解各品种的最优权重
# 这里省略优化器代码,核心是让组合的实际因子暴露接近目标
避坑指南:我曾经在2021年做过一个回测,扩张期配了太多铜,结果中国房地产暴雷,铜价暴跌。后来我加了一个「政策干预因子」——当某个品种的持仓集中度超过阈值时,自动减仓。这个逻辑虽然简单,但救了我好几次。

4.5 知识体系总览

下面这张图,是我自己整理的这个策略的核心流程。你可以把它当作一个「作战地图」:

宏观因子择时模型:核心流程 宏观数据输入 经济增长因子 + 通胀因子 状态分类(HMM/阈值) 扩张期 衰退期 滞胀期 复苏期 商品配置权重(风险预算优化)

4.6 回测中的常见陷阱

最后说几个实战中容易踩的坑:

  1. 滞后性:宏观数据发布有滞后,你看到的「扩张」可能已经是过去式了。我一般用高频替代指标(比如用电量、货运量)来做实时判断。
  2. 状态切换的摩擦成本:频繁切换状态会导致交易成本飙升。建议加一个「确认期」——连续两个月处于同一状态才切换。
  3. 极端行情下的失效:2020年3月那种流动性危机,所有宏观因子都失效了。这时候需要加入「市场压力指数」作为风控开关。
核心总结:宏观因子择时不是万能药,但它能帮你抓住商品市场最大的几波趋势。我个人经验是——80%的收益来自20%的大行情,而这20%的大行情,几乎都对应着宏观状态的切换

好了,这一章就到这里。记住:看天气种地,比闭着眼睛种地强得多

专注资料整理