Skip to content

15.2 美联储政策量化 ​

名词解释:美联储货币政策(Fed Monetary Policy)

美联储通过联邦基金利率(FFR)、公开市场操作、前瞻指引和资产负债表管理等工具调控货币供应和信贷条件。量化分析美联储政策意味着将政策声明、会议纪要、点阵图和利率期货等软硬信息转化为可量化的交易信号。

一、FOMC 声明和会议纪要的 NLP 分析 ​

1.1 政策文本的信息含量 ​

FOMC(联邦公开市场委员会)每年召开 8 次例会,会后发布政策声明,三周后发布详细的会议纪要。这些文本包含丰富的政策信号:

  • 鹰派(Hawkish)信号:暗示加息、缩减宽松、关注通胀上行风险
  • 鸽派(Dovish)信号:暗示降息、增加宽松、关注就业下行风险
  • 中性措辞变化:"patient"、"data-dependent"、"considerable time"等措辞细微变化

1.2 基于词典的情感分析 ​

PYTHON85 行 · 2.8 KB
📄此处有展示代码85 行 · 2.8 KB展开 ▼
python
import re
import numpy as np
import pandas as pd
from collections import Counter

def build_fed_sentiment_lexicon() -> dict:
    """
    构建美联储政策文本情感词典。

    基于学术文献(如 Apel & Blix Grimaldi, 2014)构建的
    鹰派/鸽派措辞词典。
    """
    hawkish_terms = {
        'tighten': 1.5, 'inflationary': 1.5, 'overheating': 2.0,
        'upside risk': 2.0, 'price pressure': 1.5, 'above target': 1.5,
        'wage pressure': 1.0, 'capacity constraints': 1.0,
        'accommodation': -0.5,  # 减少宽松 = 鹰派
        'strong': 0.5, 'robust': 0.5, 'solid': 0.3,
        'tight labor market': 1.0, 'inflation expectations': 0.5
    }

    dovish_terms = {
        'ease': 1.5, 'slack': 1.5, 'below target': 1.5,
        'downside risk': 2.0, 'disinflation': 1.5, 'deflation': 2.5,
        'patient': 1.5, 'considerable time': 2.0, 'gradual': 1.0,
        'accommodative': 1.5, 'headwinds': 1.0, 'uncertainty': 1.0,
        'global slowdown': 1.5, 'financial conditions': 0.5,
        'moderate': 0.5, 'subdued': 1.0
    }

    return {'hawkish': hawkish_terms, 'dovish': dovish_terms}


def score_fomc_statement(text: str,
                          lexicon: dict = None) -> dict:
    """
    对FOMC声明文本进行鹰鸽打分。

    参数:
        text: FOMC 声明全文
        lexicon: 鹰鸽词典
    返回:
        包含 hawkish_score, dovish_score, net_score 的字典
    """
    if lexicon is None:
        lexicon = build_fed_sentiment_lexicon()

    text_lower = text.lower()

    hawkish_score = 0
    dovish_score = 0
    matched_terms = []

    # 搜索鹰派措辞
    for term, weight in lexicon['hawkish'].items():
        count = len(re.findall(re.escape(term), text_lower))
        if count > 0:
            hawkish_score += count * weight
            matched_terms.append({'term': term, 'direction': 'hawkish',
                                   'count': count, 'weight': weight})

    # 搜索鸽派措辞
    for term, weight in lexicon['dovish'].items():
        count = len(re.findall(re.escape(term), text_lower))
        if count > 0:
            dovish_score += count * weight
            matched_terms.append({'term': term, 'direction': 'dovish',
                                   'count': count, 'weight': weight})

    net_score = hawkish_score - dovish_score

    # 归一化(按文本长度)
    n_words = len(text_lower.split())
    normalized_score = net_score / (n_words / 100)  # 每100词的得分

    return {
        'hawkish_score': hawkish_score,
        'dovish_score': dovish_score,
        'net_score': net_score,
        'normalized_score': normalized_score,
        'sentiment': 'hawkish' if net_score > 0.2 else (
            'dovish' if net_score < -0.2 else 'neutral'
        ),
        'matched_terms': matched_terms
    }
▶ 点击展开可浏览运行结果
--- 结果 ---
========================================================
自动调用 build_fed_sentiment_lexicon() — 运行结果:
========================================================
[hawkish] dict
[tighten] float
1.5
[inflationary] float
1.5
[overheating] float
2.0
[upside risk] float
2.0
[price pressure] float
1.5
[above target] float
1.5
[dovish] dict
[ease] float
1.5
[slack] float
1.5
[below target] float
1.5
[downside risk] float
2.0
[disinflation] float
1.5
[deflation] float
2.5

1.3 基于 BERT 的深度语义分析 ​

PYTHON38 行 · 1.4 KB
📄此处有展示代码38 行 · 1.4 KB展开 ▼
python
def finbert_fed_sentiment(texts: list) -> np.ndarray:
    """
    使用 FinBERT 对 FOMC 文本进行深度情感分析。

    注意:需要安装 transformers 库和预训练模型。
    `pip install transformers torch`

    参数:
        texts: 文本列表(每段FOMC声明)
    返回:
        每段文本的情感得分(-1到1,正=鹰派,负=鸽派)
    """
    try:
        from transformers import AutoTokenizer, AutoModelForSequenceClassification
        import torch

        model_name = "ProsusAI/finbert"
        tokenizer = AutoTokenizer.from_pretrained(model_name)
        model = AutoModelForSequenceClassification.from_pretrained(model_name)

        scores = []
        for text in texts:
            inputs = tokenizer(text, return_tensors="pt",
                               truncation=True, max_length=512)
            with torch.no_grad():
                outputs = model(**inputs)
                probs = torch.softmax(outputs.logits, dim=1)[0]

            # FinBERT: [positive, negative, neutral]
            # 映射到鹰鸽:正面市场情绪 ≈ 鸽派(宽松利好市场)
            finbert_score = probs[0].item() - probs[1].item()
            scores.append(finbert_score)

        return np.array(scores)

    except ImportError:
        print("请安装 transformers 库: pip install transformers torch")
        return np.zeros(len(texts))
▶ 点击展开可浏览运行结果
📘 本段代码定义了 1 个函数/类:函数 `finbert_fed_sentiment`(使用 FinBERT 对 FOMC 文本进行深度情感分析)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。

二、利率期货隐含的加息概率 ​

2.1 联邦基金期货的定价原理 ​

联邦基金期货(Federal Funds Futures, FF)可用于提取市场隐含的加息/降息概率。

P(hike)=FFRfutures−FFRcurrentFFRtarget_after_hike−FFRcurrent

2.2 从期货价格提取概率 ​

PYTHON54 行 · 2.0 KB
📄此处有展示代码54 行 · 2.0 KB展开 ▼
python
import numpy as np

def implied_rate_probability(futures_price: float,
                              current_ffr: float,
                              hike_size_bps: int = 25,
                              days_to_meeting: int = None,
                              days_in_month: int = 30) -> dict:
    """
    从联邦基金期货价格提取隐含的加息概率。

    参数:
        futures_price: 期货合约价格(100 - 隐含利率)
        current_ffr: 当前联邦基金有效利率(%)
        hike_size_bps: 预期的加息幅度(基点)
        days_to_meeting: 距离FOMC会议的天数
        days_in_month: 合约月份的总天数
    返回:
        包含隐含利率、加息概率的字典
    """
    # 期货隐含利率
    implied_rate = 100 - futures_price

    # 如果会议在月内某天
    if days_to_meeting is not None and days_in_month > 0:
        # 会后天数
        days_after = days_in_month - days_to_meeting

        # 隐含利率 = (会前天数/总天数) * 当前利率
        #           + (会后天数/总天数) * (当前利率 + 加息幅度 * 概率)
        # 求解概率
        rate_if_hike = current_ffr + hike_size_bps / 100
        rate_if_no_hike = current_ffr

        prob_hike = (implied_rate - rate_if_no_hike) / \
                    (rate_if_hike - rate_if_no_hike + 1e-10)
        prob_hike = np.clip(prob_hike, 0, 1)
    else:
        prob_hike = (implied_rate - current_ffr) / (hike_size_bps / 100)
        prob_hike = np.clip(prob_hike, 0, 1)

    return {
        'futures_price': futures_price,
        'implied_rate_pct': implied_rate,
        'current_ffr_pct': current_ffr,
        'prob_hike': prob_hike,
        'prob_no_change': 1 - prob_hike
    }

# ===== 合成数据最小示例(数据为模拟,机制真实)=====
_p = implied_rate_probability(futures_price=95.6, current_ffr=4.50,
                              hike_size_bps=25, days_to_meeting=18, days_in_month=30)
for _k, _v in _p.items():
    print(f'{_k}: {_v}')
▶ 点击展开可浏览运行结果
futures_price: 95.6
implied_rate_pct: 4.400000000000006
current_ffr_pct: 4.5
prob_hike: 0.0
prob_no_change: 1.0

三、泰勒规则(Taylor Rule)与影子利率 ​

3.1 泰勒规则 ​

泰勒规则(Taylor, 1993)描述了美联储应如何根据通胀和产出缺口设定利率:

it=r∗+πt+0.5(πt−π∗)+0.5(yt−y∗)

其中 r∗ 是自然真实利率(约 2%),πt 是通胀率,π∗ 是通胀目标(2%),yt−y∗ 是产出缺口。

3.2 影子联邦基金利率 ​

当名义利率接近零下限(ZLB)时,传统泰勒规则失效。影子利率(Shadow Rate)通过期限结构模型估计隐含的政策立场:

PYTHON43 行 · 1.5 KB
📄此处有展示代码43 行 · 1.5 KB展开 ▼
python
def taylor_rule_ffr(inflation: float,
                     inflation_target: float,
                     output_gap: float,
                     r_star: float = 2.0) -> float:
    """
    原始泰勒规则计算建议的联邦基金利率。

    参数:
        inflation: 当前通胀率(%)
        inflation_target: 通胀目标(%,通常为2)
        output_gap: 产出缺口(%)
        r_star: 自然真实利率(%)
    返回:
        泰勒规则建议的FFR(%)
    """
    ffr_recommended = r_star + inflation + \
        0.5 * (inflation - inflation_target) + \
        0.5 * output_gap

    return max(0, ffr_recommended)


def taylor_rule_residual(actual_ffr: float,
                          inflation: float,
                          inflation_target: float,
                          output_gap: float,
                          r_star: float = 2.0) -> float:
    """
    泰勒规则残差 = 实际FFR - 泰勒规则建议FFR。

    正值表示政策偏紧,负值表示政策偏松。
    """
    recommended = taylor_rule_ffr(inflation, inflation_target,
                                   output_gap, r_star)
    residual = actual_ffr - recommended
    return residual

# ===== 合成数据最小示例(数据为模拟,机制真实)=====
print('Taylor 合意利率:',
      round(taylor_rule_ffr(inflation=3.2, inflation_target=2.0, output_gap=0.8), 2))
print('规则残差(实际-合意):',
      round(taylor_rule_residual(actual_ffr=4.50, inflation=3.2, inflation_target=2.0, output_gap=0.8), 2))
▶ 点击展开可浏览运行结果
Taylor 合意利率: 6.2
规则残差(实际-合意): -1.7

四、美联储资产负债表变化的影响 ​

4.1 资产负债表渠道 ​

美联储资产负债表扩张(QE)通过以下渠道影响金融市场:

  1. 投资组合再平衡渠道:美联储购买长期国债和MBS,压低长期利率,推动投资者转向风险资产
  2. 信号渠道:大规模资产购买释放了"长期维持低利率"的信号
  3. 流动性渠道:增加银行体系准备金,改善市场流动性

4.2 资产负债表变量的量化 ​

PYTHON57 行 · 2.0 KB
📄此处有展示代码57 行 · 2.0 KB展开 ▼
python
import numpy as np

def fed_balance_sheet_impact(fed_assets_change_pct: float,
                              equity_returns: np.ndarray,
                              bond_yield_change: np.ndarray,
                              window: int = 60) -> dict:
    """
    量化美联储资产负债表变化对资产价格的影响。

    参数:
        fed_assets_change_pct: 美联储总资产的月度变化率
        equity_returns: 同期权益市场收益率
        bond_yield_change: 同期国债收益率变动
        window: 滚动窗口大小
    返回:
        影响分析结果
    """
    # 相关性分析
    eq_corr = np.corrcoef(fed_assets_change_pct[-window:],
                           equity_returns[-window:])[0, 1]
    bond_corr = np.corrcoef(fed_assets_change_pct[-window:],
                              bond_yield_change[-window:])[0, 1]

    # 回归:权益收益 = α + β * ΔFedAssets + ε
    X = np.column_stack([np.ones(len(fed_assets_change_pct)),
                          fed_assets_change_pct])
    y = equity_returns

    beta = np.linalg.lstsq(X, y, rcond=None)[0]
    eq_beta = beta[1]

    # 回归:债券收益变动 = α + β * ΔFedAssets + ε
    beta_bond = np.linalg.lstsq(
        X, bond_yield_change, rcond=None
    )[0]
    bond_beta = beta_bond[1]

    return {
        'equity_correlation': eq_corr,
        'bond_yield_correlation': bond_corr,
        'equity_beta_to_fed_bs': eq_beta,
        'bond_beta_to_fed_bs': bond_beta,
        'interpretation': (
            'QE推升权益、压低债券收益率' if eq_beta > 0 and bond_beta < 0
            else '关联不显著或方向异常'
        )
    }

# ===== 合成数据最小示例(数据为模拟,机制真实)=====
np.random.seed(3)
_eq = np.random.randn(250) * 0.01 + 0.0004
_by = np.random.randn(250) * 0.03
_bs = fed_balance_sheet_impact(fed_assets_change_pct=8.0, equity_returns=_eq,
                               bond_yield_change=_by, window=60)
for _k, _v in _bs.items():
    print(f'{_k}: {_v}')
▶ 点击展开可浏览运行结果
📘 本段为代码片段(依赖上文变量或外部输入,如 df/data/参数等),无法独立运行

美联储政策量化是宏观量化投资的核心输入之一。通过对政策文本、利率期货和宏观经济规则的联合分析,投资者可以构建货币政策冲击因子,将其纳入多因子模型中。下一个关键宏观变量——通胀预期——同样需要多角度、多工具的量化建模。

常见误区 ​

误区1:把 FOMC 声明的措辞变化当噪声。 声明与纪要的措辞调整(如"patience"的出现与消失)是路径引导工具,含真实信息增量。

误区2:利率期货隐含概率=真实概率。 期货隐含的是风险中性概率,含期限溢价与流动性因素,与政策路径的真实分布有偏差。

误区3:泰勒规则只有一种。 原版、Taylor(1999)、平衡法等参数不同,对同一数据给出的"合意利率"可能差 100bp 以上。

误区4:把缩表和加息混为一谈。 加息抬升短端价格,缩表影响的是久期供给,两者对曲线形态的作用不同。

本章要点 ​

  • 纪要NLP 情感可构造事件研究信号,鹰鸽分化度比单一情感分数更有用
  • 联邦基金期货可计算隐含加息概率,需注意风险中性偏差
  • 零利率下限时期应用影子利率(如 Wu-Xia)替代政策利率
  • 资产负债表周频跟踪是判断流动性环境的前置指标

跨模块延伸:时间序列