第四节:利差数据获取——从终端到代码的全链路打通

做信用债利差分析,第一步就是搞到数据。这事儿说起来简单,做起来全是坑。我见过太多人花80%的时间在数据清洗上,真正做分析的时间反而没多少。今天我就把这几条路给你捋清楚。

4.1 Wind终端:固收分析的老大哥

Wind在固收领域,说白了就是行业标准。你出去跟人说你做债,不用Wind都不好意思开口。我个人习惯用Wind做日常的利差监控,因为它数据全、更新快、而且有现成的利差计算函数。

4.1.1 利差数据提取路径

在Wind终端里,提取利差数据主要有这么几条路:

  • 债券板块 → 信用债 → 利差分析:这里能看到中债估值利差、中证估值利差,按评级、期限、行业分类都有
  • Excel插件 → 函数输入:用WSDWSS函数直接拉数据到Excel里
  • Python接口 → WindPy:通过from WindPy import w调用,适合批量处理

核心函数示例:

# Wind Python接口提取信用利差
from WindPy import w
w.start()

# 提取某只信用债的利差数据
data = w.wsd("102000001.IB", "spread_ccs", "2024-01-01", "2024-12-31")
# spread_ccs 代表中债信用利差(中债估值-国债收益率)

# 批量提取同评级债券的利差
codes = ["102000001.IB", "102000002.IB", "102000003.IB"]
data = w.wsd(codes, "spread_ccs", "2024-01-01", "2024-12-31")

避坑指南:我曾经在提取城投债利差时,发现Wind默认的利差基准是国债。但城投债其实更适合用同期限国开债做基准。记得在函数里加上"benchType=1"参数切换基准。

4.2 Qeubee:债券交易员的利器

Qeubee在银行间市场用得特别多。它跟Wind最大的区别是什么?Qeubee更侧重交易层面的数据,比如做市商报价、成交明细这些。如果你做高频利差分析,Qeubee的数据颗粒度更细。

4.2.1 Qeubee的特色数据

  • 实时报价利差:能看到各做市商对同一只债的买卖报价利差
  • 成交利差:实际成交价格对应的利差,这个比估值利差更真实
  • 利差曲线:按评级、期限生成的实时利差曲线

嗯,这里要注意一点:Qeubee的Excel插件叫Qeubee Add-in,安装后会在Excel里多一个Qeubee选项卡。我个人习惯把Wind和Qeubee的数据交叉验证——如果两者利差差异超过5bp,我就要去查查是不是数据源出问题了。

4.3 Excel插件:分析师的基本功

说实话,很多固收分析师还是习惯用Excel。毕竟领导要看的报表、PPT,最后都得落到Excel里。我建议你至少掌握两个插件的用法:

插件名称 常用函数 适用场景
Wind Add-in WSDWSSWST 历史数据、估值数据、财务数据
Qeubee Add-in QBQBH 实时报价、成交数据、做市商数据

Excel实战技巧:

// Wind Excel函数示例
=WSD("102000001.IB", "spread_ccs", "2024-01-01", "2024-12-31")

// Qeubee Excel函数示例
=QB("102000001.IB", "spread", "2024-12-20")

注意:Excel插件有个通病——数据量大了容易卡死。我曾经拉300只债3年的日频利差数据,Excel直接崩溃了。后来我学乖了,超过100只债就用Python批量处理。

4.4 Python API:量化分析的灵魂

如果你要做系统化的利差挖掘,Python是绕不开的。这里我重点讲两个常用的数据接口:Tushare和JoinQuant。

4.4.1 Tushare:开源数据的好选择

Tushare的债券数据这几年越来越全了。它最大的优势是免费(当然高频数据要积分),适合个人研究用。

# Tushare获取信用债利差数据
import tushare as ts

# 设置token
ts.set_token('your_token_here')
pro = ts.pro_api()

# 获取中债信用债估值数据
df = pro.cb_valuation(
    ts_code="102000001.IB",
    start_date="20240101",
    end_date="20241231",
    fields="trade_date, yield, spread"
)

# 获取国债收益率作为基准
benchmark = pro.yc_cb(
    curve_type="0",  # 0代表国债收益率曲线
    start_date="20240101",
    end_date="20241231"
)

个人经验:Tushare的spread字段默认是相对于国债的利差。如果你需要国开债利差,得自己算——用信用债收益率减去同期限国开债收益率。我一般会写个函数自动匹配期限。

4.4.2 JoinQuant:回测利器

JoinQuant(聚宽)的优势在于它把数据和回测框架整合在一起了。如果你要做利差策略的回测,用JoinQuant会省很多事。

# JoinQuant获取利差数据
from jqdata import *

# 获取某只信用债的行情和利差
def get_spread_data(bond_code, start_date, end_date):
    # 获取债券行情
    prices = get_price(bond_code, start_date=start_date, 
                       end_date=end_date, frequency='daily')
    
    # 获取国债收益率
    bench = get_yield_curve('国债', start_date=start_date, 
                            end_date=end_date)
    
    # 计算利差
    spread = prices['yield'] - bench['yield']
    return spread

# 示例:获取21国债10的利差
spread_data = get_spread_data("102000001.IB", "2024-01-01", "2024-12-31")

4.5 数据获取的完整流程

说了这么多工具,到底怎么选?我画了张图,帮你理清思路:

信用债利差数据获取流程 数据源层 Wind终端 Qeubee终端 Python API 工具层 Excel插件 Python脚本 回测框架 输出层 利差数据表 | 利差曲线 | 策略信号 | 风险预警

你看这张图,从上到下分三层:数据源层、工具层、输出层。我个人建议的搭配是:

  • 日常监控:Wind/Qeubee + Excel插件,快速出表
  • 批量处理:Python API + 数据库,自动化跑批
  • 策略回测:JoinQuant + 本地数据,验证策略有效性

最后说一句:数据获取只是第一步,但这一步走稳了,后面的分析才能站得住脚。我见过太多人拿着错误的数据做了一堆漂亮的图表,结果全是错的。所以,拿到数据后第一件事——交叉验证。

专注资料整理