halo 的技术博客

返回

做宏观的人喜欢说「不确定性上升」。但做量化的要问一句:不确定性能不能被编成一个数字,再喂进组合的权重? 经济政策不确定性指数 EPU(Baker、Bloom、Davis 三人构建)就是少数真正做到了这一点的宏观变量——它从主流报纸里数「经济 / 政策 / 不确定性」三类词同框的频率,再用税收、央行、贸易等政策事件做加权,得到一条可回测的时间序列。

一个朴素的直觉:政策越不确定,企业越不敢投资、股民越想落袋,股票承压;与此同时避险资金涌向国债,债券上涨(flight-to-quality)。如果这件事成立,EPU 就应该是一个股债配置的择时开关。 本文用一组自洽合成数据,把「EPU 能不能指导股债切换」做成可检验的实验,并得到一个反直觉但诚实的结论:它确实是信号,但主要是一个风险信号,不是收益信号。

一、先把 EPU 造出来#

真实的 EPU 是日频指数,但配置决策是月频的,所以我们合成一条月度 EPU:基线 100 附近均值回复,叠加多起政策事件尖峰(大选、债务上限、加息周期),尖峰按指数衰减:

import numpy as np

T = 360                               # 360 月 ≈ 30 年
epu = np.zeros(T)
events = {24: 180, 70: 140, 130: 210, 200: 120, 260: 170, 320: 150}
event_shock = np.zeros(T)
for m, s in events.items():          # 政策事件: 尖峰 + 指数衰减
    for k in range(8):
        if m + k < T:
            event_shock[m + k] += s * np.exp(-k / 3.0)
epu[0] = 100
for t in range(1, T):
    epu[t] = epu[t-1] + 0.30 * (100 - epu[t-1]) + np.random.normal(0, 6) + event_shock[t]
epu = np.maximum(epu, 20)
dep = np.diff(epu)                    # 月度 EPU 变化 Δ EPU
python

这条路径(图 1)长得像真实 EPU 的历史:平时在 100 上下晃,遇到 2008、2011、2016、2020 那种节点会窜到 200 甚至更高,然后缓缓回落。红虚线是 75 分位阈值——后面策略用它来定义「高不确定性月」。

合成经济政策不确定性 EPU 指数(政策事件尖峰 + 均值回复)

二、两类资产对 EPU 的暴露#

核心假设:股票对 Δ EPU 负向加载(政策不确定 → 股票跌),债券正向加载(避险 → 债券涨)。我们用一个共享市场因子 MKT 加各自的 EPU 暴露来造两类资产收益:

MKT = np.random.normal(0.006, 0.035, T-1)
r_e = 0.008 + MKT + (-0.0009) * dep + np.random.normal(0, 0.040, T-1)   # 股票: EPU↑ 跌
r_b = 0.003 - 0.10 * MKT + (0.00075) * dep + np.random.normal(0, 0.018, T-1)  # 债券: EPU↑ 涨
r_c = 0.0020 * np.ones(T-1)           # 现金无风险月息
python

图 2 把两者净值叠在一起:股票长期 upward 但回撤深,债券平稳上行、在 EPU 尖峰那几段明显充当了「避险垫」。注意这不是事后看图说话——下面用回归把暴露的斜率算出来。

股票 vs 长债净值:EPU 尖峰期债券充当避险垫

三、朴素策略:高 EPU 切债券#

最直接的策略:月末已知 EPU[t-1](无前瞻,只用过去信息),若它高于 75 分位,下个月把股票清零、全切债券;否则维持 60/40。对比基准是永远 60/40 和永远满仓股票:

th = np.percentile(epu, 75)
epu_lag = epu[:-1]                      # 用 t-1 月末 EPU 决定 t 月暴露
w_eq = np.where(epu_lag <= th, 0.6, 0.0)
w_bd = np.where(epu_lag <= th, 0.4, 1.0)
strat = w_eq * r_e + w_bd * r_b
bench = 0.6 * r_e + 0.4 * r_b
python

图 3 是三条净值。结果要让「朴素轮动党」失望:

  • 满仓股票:年化 18.2%,Sharpe 0.96,但最大回撤 −45.3%
  • 60/40:年化 13.2%,Sharpe 1.19,回撤 −23.9%
  • EPU 切换:年化 6.9%,Sharpe 0.66,回撤 −38.8%

EPU 切换在收益和 Sharpe 上都跑输了 60/40。 这正是一个值得写进文章的诚实结果——它说明「高不确定性就躲进债券」这个动作本身在牺牲太多股票敞口。债券的 4.2% 年化根本填不上股票空窗期的机会成本。

EPU 股债配置切换:高 EPU 切债券能否跑赢 60/40?

四、把暴露量化:回归#

与其看图,不如直接回归。把股票、债券月收益对 Δ EPU 和市场因子做横截面回归,斜率就是各自的 EPU 风险暴露:

X = np.column_stack([np.ones(T-1), dep, MKT])
coef_e, *_ = np.linalg.lstsq(X, r_e, rcond=None)   # 股票暴露 = coef_e[1]
coef_b, *_ = np.linalg.lstsq(X, r_b, rcond=None)   # 债券暴露 = coef_b[1]
python

图 4 给出两个散点 + 拟合线:

  • 股票暴露 = −0.000886(Δ EPU 每升 1 点,股票月收益平均掉 0.09%)
  • 债券暴露 = +0.000722(Δ EPU 每升 1 点,债券月收益平均涨 0.07%)

两者符号相反、量级相近——这正是「股债此消彼长」的量化证据,也是 EPU 能用来做对冲而非择时的根本原因。

股票/债券月收益 ~ Δ EPU:暴露符号相反

五、机制是真的吗:高 vs 低 EPU 月#

最后把样本按 Δ EPU 高低切开,看平均收益差(图 5):

  • 股票:高 EPU 月平均 −0.56%,低 EPU 月 +3.43%,差 −4.0%
  • 债券:高 EPU 月平均 +1.96%,低 EPU 月 −1.09%,差 +3.05%

机制完全成立:政策不确定期股票吃亏、债券占优。但注意——这是风险维度的差异(波动和回撤),不是收益维度的免费午餐。把它当成「高 EPU 就空股票」会吃回撤和机会成本的亏。

高 EPU 月 vs 低 EPU 月:平均月收益差

六、诚实陷阱:为什么朴素策略跑输#

  1. 它是风险信号,不是收益信号:EPU 解释的是「这段会不会更颠」,不是「这段股票会不会涨」。用风险信号去做方向择时,天然错位。本文实验里 EPU 切换输给 60/40,恰恰印证了这一点。
  2. 债券收益太低填不上空窗:把股票清零换来的债券只有 4.2% 年化,空窗期越长,机会成本越大。真实里美债长端有时连这都未必有。
  3. 阈值与频率敏感:75 分位、月度调仓都是拍的。换成 66/90 分位、双月调仓,结果会大幅漂移——这是参数脆弱性的直接证据,不是稳健 alpha。
  4. 前瞻污染:真实 EPU 月内才发布,用「当月 EPU 决定当月调仓」是偷看。本文特意用 epu[t-1] 决定 t 月,已经是合规写法;但用日频 EPU 做日内切换仍要小心发布滞后。
  5. 幸存者偏差与样本:30 年合成里「事件」是我们塞进去的。真实 EPU 的历史大尖峰(金融危机、疫情)样本极少,统计意义有限,外推要保守。
  6. 国别差异:美国 EPU 和 A 股相关性弱,且中国政策不确定性更多体现在其他维度(如行业整顿、汇率)。直接搬美国 EPU 做 A 股择时,暴露错位。

七、正确用法:缩放而非清零#

既然机制在「风险」上,正确姿势是把 EPU 当成敞口缩放器,而不是开关:

  • 部分缩放:高 EPU 时把股票从 60% 降到 40%(而非清零),保留 beta 同时压回撤;
  • 叠加对冲:高 EPU 月用黄金 / 长债 / 波动率多头对冲股票,而不是完全退出;
  • 风险预算:让股票的目标波动随 EPU 反向调整(EPU 高 → 降杠杆),把「不确定性」直接写进风险预算。

这样 EPU 的价值才真正落地——它帮你少亏在颠簸段,而不是指望它帮你多赚

结语#

EPU 是一个被低估的「可量化宏观状态变量」:本文用合成数据证明,股票对它负向暴露(−0.00089)、债券正向(+0.00072),高 EPU 月股票平均比低 EPU 月少赚 4.0%、债券多赚 3.05%。但朴素的「高 EPU 切债券」策略年化只有 6.9%、Sharpe 0.66,反而输给永远 60/40 的 13.2% / 1.19——因为它牺牲了太多股票敞口。结论很克制:EPU 是风险信号,不是收益信号;用它缩放敞口、叠加对冲,而不是用它做方向开关。 把不确定性写进风险预算,才是这个指数真正值钱的地方。

经济政策不确定性 EPU 与股债配置切换
https://blog.halo26812.eu.org/blog/epu-asset-allocation
Author halo
Published at 2026年7月20日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨