央行货币政策执行报告跨季度对比
适用场景
下载央行《中国货币政策执行报告》并对比不同季度各部分(货币信贷概况/货币政策操作/金融市场运行/宏观经济分析/货币政策趋势)的表述差异。支持三方对比:本季 vs 上一季度 vs 去年同期。除增删标注外,还能检测表述位置调整(内容在不同小节间位移)。输出带富文本标注的 Excel,同时附带各季度财经大事与金融数据。
默认对比范围
- 主对比:本季 vs 上一季度(如 2026Q2 vs 2026Q1)
- 同期对比:本季 vs 去年同期(如 2026Q2 vs 2025Q2)
- 共需下载 3 份报告,做 2 组 pairwise diff
- 如用户指定其他范围(近4季滚动等),按用户指定执行
工作流程
1. 确定对比季度组合
根据当前日期推算本季应发布的报告季度,并锁定上季与去年同期:
- 央行报告通常在季末后约 6-8 周发布(Q1→5月、Q2→8月、Q3→11月、Q4→次年2月)
- 确认三份报告均已发布后再下载;若任一缺失,提示用户并等待
2. 获取报告列表
报告栏目页 https://www.pbc.gov.cn/zhengcehuobisi/125207/125227/125957/index.html(2001Q1 至今每季一份)。curl 需带浏览器 UA。
3. 提取并下载 PDF
每个报告详情页 HTML 中 grep -oE 'href="[^"]*\.pdf[^"]*"',拼上 https://www.pbc.gov.cn 前缀下载。部分 PDF 在 /goutongjiaoliu/attachDir/ 路径下。
4. 文本提取
Python venv + pymupdf(page.get_text("text"))。
5. 结构解析
五大部分标题格式为 第X部分\n<标题>(目录和正文各出现一次,取正文);小节标题 ^[一二三四五六七八九十]+、标题$(标题内无逗号且 ≤20 字,可过滤专栏正文误匹配)。将每份报告解析为 {"部分": {"小节": [句子列表]}} 的嵌套结构。
6. 清洗
剔除表格(从 表\d+ 行到 数据来源 行的状态机)、独立页码行、单位:行。
7. 三方对比算法
对每个小节,做两组 pairwise diff:
- 组A:本季 vs 上季
- 组B:本季 vs 去年同期
每组的对比算法:
- 按句切分((?<=[。!?;])),difflib.SequenceMatcher 对齐句子序列;
- replace 块:quick_ratio < 0.45 时整体「旧文删除线+新文红字」,否则字符级 diff 只标变化的字词;
- 吸收 ≤3 字的过短 equal 片段到相邻 changed 片段,减少碎片。
两组 diff 结果在 Excel 中并排呈现,便于同时观察环比变化与同比变化。
8. 表述位置调整检测
在三份报告的结构解析完成后,执行跨小节位移检测:
- 提取候选位移句:从 diff 结果中提取所有"删除"的句子(旧报告有、新报告无)和"新增"的句子(新报告有、旧报告无)。
- 跨小节匹配:对每条"删除句",在所有小节的"新增句"集合中查找相似度最高的候选。使用 difflib.SequenceMatcher.ratio(),阈值 ≥0.55 判定为位移。
- 位移标注:在 Excel 中用紫色(800080)+ 斜体标注位移句,并注明"从[旧小节标题]移至[新小节标题]"。
- 位移汇总:在总览 sheet 单独列出位移清单(句摘 | 原位置 | 新位置 | 相似度),便于快速浏览结构变化。
注意事项:
- 位移检测在 pairwise diff 之后执行,复用已有的句子对齐结果
- 短句(<10 字)不做位移检测,避免噪声
- 同一小节内的句子移动不算位移(只是顺序变化),仅标注跨小节移动
- 如果一条删除句同时匹配多条新增句,取 ratio 最高的
9. Excel 富文本
openpyxl ≥3.1 CellRichText + TextBlock(InlineFont(...))。标注色规:
| 标注类型 | 颜色 | 样式 |
|---|---|---|
| 新增/修改 | FF0000(红) | 常规 |
| 删除 | 808080(灰) | strike 删除线 |
| 小节定位 | 0000FF(蓝) | 粗体 |
| 位移句 | 800080(紫) | 斜体 |
| 位移标注文本 | 800080(紫) | 常规,含来源→去向说明 |
单元格上限 32767 字符(留 30000 截断)。行高上限 409。
10. 布局
- 主 sheet:按「小节 × 对比组」分行,避免单格过大。每个小节两行(组A 本季vs上季、组B 本季vs去年同期),季度列与大事/数据列纵向合并。
- 位移汇总 sheet:列出所有检测到的位移句,含句摘、原位置、新位置、相似度。
- 总览 sheet:各部分变化幅度统计(增/删/位移条数)、各季度财经大事与金融数据。
11. 财经大事与金融数据
用并行研究 Agent 按季度检索(DR001/DR007 区间与均值、社融增量与存量同比、M2、GDP、CPI、10Y 国债收益率),标注来源与"约"。同时在总览 sheet 中列出该季度主要财经大事(政策利率调整、降准、重要会议表态等)。
踩坑记录
- PBoC 官网 curl 直接访问 OK,无需登录;报告页面无需鉴权。
- 按句子位置配对做 diff 在句子错位时会产生交错碎片,不要用;整块字符级 diff + 相似度保护效果最好。
- 报告每季改写幅度大(尤其"货币政策操作"部分差异可达 2 万字),Excel 单格会接近上限,务必截断保护。
- 位移检测阈值 0.55 是经验值;低于 0.5 会产生大量误匹配,高于 0.6 会漏检部分改写式位移。
- 三方对比时"去年同期"报告的结构可能与本季不完全对应(偶有专栏增减),以小节标题匹配为准,缺失小节标注"无对应"。
- 专栏(专题)部分标题格式不固定,位移检测仅对五大正文章节执行,专栏单独列出但不做位移分析。