主题切换
15.2 美联储政策量化
名词解释:美联储货币政策(Fed Monetary Policy)
美联储通过联邦基金利率(FFR)、公开市场操作、前瞻指引和资产负债表管理等工具调控货币供应和信贷条件。量化分析美联储政策意味着将政策声明、会议纪要、点阵图和利率期货等软硬信息转化为可量化的交易信号。
一、FOMC 声明和会议纪要的 NLP 分析
1.1 政策文本的信息含量
FOMC(联邦公开市场委员会)每年召开 8 次例会,会后发布政策声明,三周后发布详细的会议纪要。这些文本包含丰富的政策信号:
- 鹰派(Hawkish)信号:暗示加息、缩减宽松、关注通胀上行风险
- 鸽派(Dovish)信号:暗示降息、增加宽松、关注就业下行风险
- 中性措辞变化:"patient"、"data-dependent"、"considerable time"等措辞细微变化
1.2 基于词典的情感分析
此处有展示代码展开 ▼
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() ---
dict {'hawkish': {'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 expectatio1.3 基于 BERT 的深度语义分析
此处有展示代码展开 ▼
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)可用于提取市场隐含的加息/降息概率。
2.2 从期货价格提取概率
此处有展示代码展开 ▼
python
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
}点击展开可浏览运行结果
📘 本段代码定义了 1 个函数/类:函数 `implied_rate_probability`(从联邦基金期货价格提取隐含的加息概率)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。
三、泰勒规则(Taylor Rule)与影子利率
3.1 泰勒规则
泰勒规则(Taylor, 1993)描述了美联储应如何根据通胀和产出缺口设定利率:
其中
3.2 影子联邦基金利率
当名义利率接近零下限(ZLB)时,传统泰勒规则失效。影子利率(Shadow Rate)通过期限结构模型估计隐含的政策立场:
此处有展示代码展开 ▼
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点击展开可浏览运行结果
📘 本段代码定义了 2 个函数/类:函数 `taylor_rule_ffr`(原始泰勒规则计算建议的联邦基金利率)、函数 `taylor_rule_residual`(泰勒规则残差 = 实际FFR - 泰勒规则建议FFR)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。
四、美联储资产负债表变化的影响
4.1 资产负债表渠道
美联储资产负债表扩张(QE)通过以下渠道影响金融市场:
- 投资组合再平衡渠道:美联储购买长期国债和MBS,压低长期利率,推动投资者转向风险资产
- 信号渠道:大规模资产购买释放了"长期维持低利率"的信号
- 流动性渠道:增加银行体系准备金,改善市场流动性
4.2 资产负债表变量的量化
此处有展示代码展开 ▼
python
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 '关联不显著或方向异常'
)
}点击展开可浏览运行结果
📘 本段代码定义了 1 个函数/类:函数 `fed_balance_sheet_impact`(量化美联储资产负债表变化对资产价格的影响)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。
美联储政策量化是宏观量化投资的核心输入之一。通过对政策文本、利率期货和宏观经济规则的联合分析,投资者可以构建货币政策冲击因子,将其纳入多因子模型中。下一个关键宏观变量——通胀预期——同样需要多角度、多工具的量化建模。