返回 Skill 列表
extension
分类: 数据与分析无需 API Key

国债/地方债利差分析工具2.0

国债/地方债利差分析表构建工具。当用户提供包含国债和地方债各期限收益率时间序列的 Excel 文件,并要求计算期限利差、品种利差、近3年历史分位数、投资策略建议时触发。 典型触发语:国债利差分析、地方债利差、期限利差、品种利差、利差分位数、债券投资策略。 agent_created: true

person作者: user_b9c7ce87hubcommunity

Bond Spread Analyzer — 国债/地方债利差分析行业模板

概述

从 Wind 等数据源导出的国债/地方债收益率时间序列表出发,构建完整的利差分析与策略输出工作流。

核心原则:基础数据表完全不动(Wind 每日自动向基础数据表插入新行,所有分析子表通过 INDEX/MATCH 按日期匹配取数,不依赖行位置),保留自动更新机制。

v2.0 新增模块

| 模块 | 功能 | 输出 | |------|------|------| | build_spreads.py | 基础利差表构建(v1.0) | Excel:期限利差 + 品种利差子表 | | generate_strategy_abc.py | A/B/C 三方案策略对比 | Markdown + Excel 策略方案 sheet | | generate_report.py | 公众号风格完整报告 | Markdown 报告(含市场概况+分析+策略) | | plot_curves.py | 收益率曲线可视化 | PNG:曲线图 + 走势图 + 热力图 |

适用场景

  • 农商行/城商行金融市场部日常利差跟踪
  • 债券投顾方向跟岗学习与研究输出
  • 固定收益研究的期限结构与品种配置策略生成
  • 省联社/总行汇报的利差分析材料制作
  • 公众号市场观点文章的底稿生成

源数据假设

基础数据表(如 "基础数据-自动更新")结构:

Row 3-5: 标题/说明行
Row 6:   表头行
   A: 日期
   B: 国债3年   C: 国债5年   D: 国债7年
   E: 国债10年  F: 国债20年  G: 国债30年
   H: 地方债3年 I: 地方债5年 J: 地方债7年
   K: 地方债10年 L: 地方债20年 M: 地方债30年
   N: DR007(可选)
Row 7:   辅助行(可选)
Row 8+:  每日数据(最新日期在 Row 8,由近及远)

完整工作流

快速开始(一键生成全部)

# 1. 构建利差分析表
python scripts/build_spreads.py \
  --source "源文件.xlsx" \
  --output "利差分析.xlsx"

# 2. 生成 A/B/C 策略方案(同时写入 Excel)
python scripts/generate_strategy_abc.py \
  --source "源文件.xlsx" \
  --output "策略方案.md" \
  --write-excel "利差分析.xlsx"

# 3. 生成可视化图表
python scripts/plot_curves.py \
  --source "源文件.xlsx" \
  --output-dir ./charts

# 4. 生成完整公众号风格报告(含图表)
python scripts/generate_report.py \
  --source "源文件.xlsx" \
  --output "利差分析报告.md" \
  --with-images ./charts/yield_curve.png ./charts/spread_trend.png ./charts/percentile_heatmap.png

模块详解

模块一:build_spreads.py — 基础利差表构建

生成两个新子表,基础数据表原封不动:

期限利差表(16个指标):

  • 国债:5Y-3Y, 7Y-3Y, 10Y-3Y, 10Y-5Y, 10Y-7Y, 20Y-10Y, 30Y-10Y, 30Y-20Y
  • 地方债:同上 8 个

品种利差表(6个指标):

  • 品种利差 3年/5年/7年/10年/20年/30年(地方债 - 国债)

每张表包含:标题区、策略建议区(基于分位数)、表头、近3年分位数行、每日数据行。

模块二:generate_strategy_abc.py — A/B/C 方案策略对比

将单一策略升级为三方案对比框架:

| 方案 | 风险偏好 | 核心逻辑 | 适用场景 | |------|----------|----------|----------| | 方案A | 保守 | 仅极端分位数(<10%/>90%)微调 | 持有到期为主、稳健导向 | | 方案B(推荐) | 均衡 | 分位<30%做陡/>70%做平,适度调仓 | 大多数资金业务场景 | | 方案C | 激进 | 极端分位数大幅结构调整+骑乘 | 交易型资金、有衍生品对冲 |

每方案输出:操作方向、具体期限、仓位建议、预期收益、风险提示。 末尾根据极端分位数占比自动生成推荐结论。

模块三:generate_report.py — 公众号风格报告

整合输出完整 Markdown 报告:

  1. 市场概况(国债/地方债收益率表)
  2. 期限利差分析(含分位数表+档位标签)
  3. 品种利差分析(含配置建议)
  4. A/B/C 策略方案对比
  5. 图表展示(可选,嵌入 PNG)
  6. 推荐结论

模块四:plot_curves.py — 可视化

生成三张 PNG 图表:

  • yield_curve.png:国债/地方债收益率曲线对比(含品种利差填充)
  • spread_trend.png:关键利差近3年走势(10Y-3Y、30Y-10Y、品种利差10年)
  • percentile_heatmap.png:分位数热力图(绿→黄→红渐变)

颜色规范:遵循中国债市惯例(涨红跌绿),国债蓝、地方债橙。

依赖

openpyxl >= 3.1
matplotlib >= 3.7

安装:

pip install openpyxl matplotlib

关键公式模式

日期引用(INDEX/MATCH 按日期匹配)

=IF('基础数据-自动更新'!A8="","",'基础数据-自动更新'!A8)

利差计算(带 >0 检查处理缺失数据)

=IFERROR(IF(AND(
  INDEX('基础数据-自动更新'!$C$8:$C$5000,MATCH($A9,'基础数据-自动更新'!$A$8:$A$5000,0))>0,
  INDEX('基础数据-自动更新'!$E$8:$E$5000,MATCH($A9,'基础数据-自动更新'!$A$8:$A$5000,0))>0
), 减法, ""), "")

近3年分位数

=IF(ISNUMBER(B9),COUNTIF(B9:B757,"<="&B9)/COUNT(B9:B757),"")

格式规范

  • 标题行:深蓝(#1F4E79),加粗,全宽合并,行高30
  • 策略标题:白字(#FFFFFF)深蓝底(#2F5496)
  • 策略详情:深色字(#333333)浅黄底(#FFF2CC)
  • 数据表头:宋体11号加粗,灰底(#D9D9D9)
  • 分位行:百分比格式(0.00%)
  • 数据行:数值格式(0.0000),日期格式(yyyy-mm-dd)
  • 冻结窗格:B7

分位数档位与策略映射

| 分位数范围 | 档位 | 期限利差策略 | 品种利差策略 | |-----------|------|-------------|-------------| | < 10% | 极窄 | 做陡 | 低配地方债转国债 | | 10%-30% | 偏窄 | 适度做陡 | 适度低配地方债 | | 30%-70% | 适中 | 标配 | 标配 | | 70%-90% | 偏宽 | 适度做平 | 适度超配国债 | | > 90% | 极宽 | 做平 | 超配国债 |

Resources

scripts/

  • build_spreads.py — 基础利差表构建脚本(545行)
  • generate_strategy_abc.py — A/B/C 方案策略生成器
  • generate_report.py — 公众号风格报告生成器
  • plot_curves.py — 收益率曲线可视化工具

references/

  • usage_guide.md — 详细使用指南与 FAQ
  • strategy_framework.md — 策略框架设计说明

使用示例

# 在 Python 中直接调用
from scripts.generate_strategy_abc import generate_abc_strategy

md = generate_abc_strategy(
    source_path="国债地方债收益率.xlsx",
    base_sheet="基础数据-自动更新",
    output_md="策略方案.md",
    output_excel="利差分析.xlsx",
)
print(md)

注意事项

  1. 基础数据表不可修改:所有子表通过公式引用,修改基础表结构会导致公式失效
  2. 分位数窗口:默认近3年约749个交易日,可根据数据频率调整 EST_WINDOW_DAYS
  3. 策略为研究参考:A/B/C 方案基于历史分位数统计,不构成投资建议,需结合宏观面交叉验证
  4. Wind 数据格式:假设最新日期在 Row 8(由近及远排列),如格式不同需调整 calculate_percentiles 中的行号
  5. 中文字体:可视化脚本自动检测 Microsoft YaHei / SimHei,如未安装将回退到英文标签