A股可转债统一数据接口。对接多种数据源,输出统一的 Pandas DataFrame 格式,用于可转债的统计分析、量化研究和策略开发。 我们也提供了开源数据的历史实例,用户更新即可。
Unified data interface for A-share convertible bonds (可转债). Supports Wind, Tushare, akshare — outputs consistent Pandas DataFrames with auto-computed YTM, implied volatility, Greeks.We also have history data from opensource, users can just get start from update.
A股可转债研究者面临一个现实问题:数据源要么贵,要么乱的满地都是,互相还不通用。各家 API 的字段名、单位、返回格式都不一样,还没开始做研究,配个数据库半条命就搭进去了。那么万一你有幸换一个数据源,重写的感觉跟好容易碰巧过了 boss 却没保存一样令人心旷神怡...
本项目将各数据源的差异封装在 reader 层,上层分析代码只需要面对统一的 cb_data 对象。
你,用户,本项目的大爷(二声,表尊敬的那种),直接得到 DataFrame,直接开始你的研究。
| 数据源 | 状态 | 说明 |
|---|---|---|
| Wind | ✅ 完成 | 全字段支持,需要 Wind 终端 |
| Tushare | ✅ 完成 | 需要 pro api,自行申请,性价比高,本项目将自行计算ts没有的字段,如 ytm、隐波 |
| akshare | ✅ 完成 | 免费开源数据源 |
| jqdata | ✅ 完成 | 聚宽数据 |
里面有经验证的历史数据,可以做示例,也可以直接用。
from cb_with_any_api import cb_data
obj = cb_data()
obj.loadData("data/newt") # 加载历史数据,data 是放数据的文件夹,newt 是我自己随便加的一个前缀
obj.update("2026-02-13", method="tushare") # 增量更新,wind|tushare|akshare 均可
# obj.DB — 字典,每个 key 是一个 DataFrame (index=日期, columns=券代码)
# 但你也可以直接引用下面字段,效果一样
obj.DB['Close'] # 收盘价,或者直接 obj.Close,效果相同
obj.DB['Amt'] # 成交额
obj.DB['ConvV'] # 转股价值
obj.DB['ConvPrem'] # 转股溢价率
obj.DB['Strb'] # 纯债价值
obj.DB['StrbPrem'] # 纯债溢价率
obj.DB['Outstanding'] # 剩余规模
obj.DB['YTM'] # 到期收益率
obj.DB['Ptm'] # 剩余期限(年)
obj.DB['ImpliedVol'] # 隐含波动率
# obj.panel — 静态信息 DataFrame (index=券代码)
obj.panel # 券名、正股代码、行业、赎回价、条款参数等
# 常用属性
obj.date # 数据最新日期
obj.codes # 全部券代码
obj.codes_active # 当日有交易的券
obj.matNormal # 过滤异常券后的有效矩阵1. 安装依赖
pip install pandas numpy scipy tushare akshare
# 可选: WindPy (需 Wind 终端), jqdatasdk2. 配置 API 凭证
编辑 const.py:
wind_available = False # 没有 Wind 设为 False
ts_token = 'your_tushare_token'
jqdata_username = ''
jqdata_password = ''3. 使用
from cb_with_any_api import cb_data
obj = cb_data(file_type="csv")
obj.loadData("data/newt")
obj.update("2026-02-13", method="tushare")
# 当日活跃券的转股溢价率
prem = obj.ConvPrem.loc[obj.date, obj.codes_active]
print(prem.describe())cb_with_any_api.py # 核心类 cb_data,统一接口层
wind_reader.py # Wind 数据适配器
tushare_reader.py # Tushare 数据适配器(含 YTM/Ptm/ImpliedVol 计算引擎)
greeks.py # 希腊字母计算(Delta/Gamma/Theta/Vega,考虑退市风险)
const.py # API 凭证配置(不要提交到 git)
参数.xlsx # 字段映射表(Wind/Tushare/同花顺 字段对照)
直接从 cb_daily 获取的:Amt, Close, ConvV, ConvPrem, Strb, StrbPrem
自行计算的:
- YTM — 从
cb_rate(票息) +cb_basic(赎回价) 构建现金流日历,Newton 法求解,结果缓存至cb_cashflow_calendar.pkl - Ptm — 从
cb_basic.maturity_date计算,全量缓存至内存 - ImpliedVol — BS 定价模型 + 二分法反推,跨日期x跨券全矢量化
- Outstanding — 从
cb_share.remain_size获取变动记录,ffill 到交易日
已知的数据源差异(详见 test_0224.md):
- Tushare
close为全价,Wind 为净价,差异 = 应计利息 Ptm对已公告强赎的券使用原始到期日(Wind 用强赎日)
- Wind 全字段对接
- Tushare 全字段对接 + 自计算引擎
- 静态面板数据 (panel) Tushare 支持
- jqdata 适配器
- akshare 适配器
- Agent-readable 版本 — 将转债数据库封装为 AI Agent 可调用的 Skill
MIT
如果有用,求个 Star 呗~