第四节:利差数据获取——从终端到代码的全链路打通
做信用债利差分析,第一步就是搞到数据。这事儿说起来简单,做起来全是坑。我见过太多人花80%的时间在数据清洗上,真正做分析的时间反而没多少。今天我就把这几条路给你捋清楚。
4.1 Wind终端:固收分析的老大哥
Wind在固收领域,说白了就是行业标准。你出去跟人说你做债,不用Wind都不好意思开口。我个人习惯用Wind做日常的利差监控,因为它数据全、更新快、而且有现成的利差计算函数。
4.1.1 利差数据提取路径
在Wind终端里,提取利差数据主要有这么几条路:
- 债券板块 → 信用债 → 利差分析:这里能看到中债估值利差、中证估值利差,按评级、期限、行业分类都有
- Excel插件 → 函数输入:用
WSD、WSS函数直接拉数据到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 | WSD、WSS、WST |
历史数据、估值数据、财务数据 |
| Qeubee Add-in | QB、QBH |
实时报价、成交数据、做市商数据 |
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 + Excel插件,快速出表
- 批量处理:Python API + 数据库,自动化跑批
- 策略回测:JoinQuant + 本地数据,验证策略有效性
最后说一句:数据获取只是第一步,但这一步走稳了,后面的分析才能站得住脚。我见过太多人拿着错误的数据做了一堆漂亮的图表,结果全是错的。所以,拿到数据后第一件事——交叉验证。