reskfa
cb_with_any_api
Python

A 股可转债统一接口,适应各种常见 api,用户直接操作 DataFrame,免去查字典、配置、统一化麻烦。

Last updated Jun 30, 2026
22
Stars
1
Forks
0
Issues
0
Stars/day
Attention Score
47
Language breakdown
Python 100.0%
Files click to expand
README

CB with Any API

A股可转债统一数据接口。对接多种数据源,输出统一的 Pandas DataFrame 格式,用于可转债的统计分析、量化研究和策略开发。 我们也提供了开源数据的历史实例,用户更新即可。

Unified data interface for A-share convertible bonds (可转债). Supports Wind, Tushare, akshare, JQData and iFind — 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 | ✅ 完成 | 聚宽数据 | | ifind | ✅ 完成| 同花顺 iFind |

data文件夹

里面有经验证的历史数据,可以做示例,也可以直接用

核心数据结构

from cbwithanyapi import cbdata

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 akshare

可选: WindPy (需 Wind 终端), jqdatasdk, ifind, tushare

2. 配置 API 凭证

编辑 const.py:

wind_available = False            # 没有 Wind 设为 False
tstoken = 'yourtushare_token'
jqdata_username = ''
jqdata_password = ''
ifindrefreshtoken = '' # 去超级命令工具找(https://quantapi.10jqka.com.cn/gwstatic/static/ds_web/super-command-web/index.html)

3. 使用

from cbwithanyapi import cbdata

obj = cbdata(filetype="pkl") obj.loadData("data/") obj.update("2026-03-04", method="tushare")

codes = obj.codes_active date = obj.date

当日活跃券的转股溢价率

prem = obj.ConvPrem.loc[date, codes] print(prem.describe())

项目结构

cbwithanyapi.py   # 核心类 cbdata,统一接口层
*_reader.py        # 各类数据源的适配器
greeks.py             # 希腊字母计算(Delta/Gamma/Theta/Vega,考虑退市风险)
const.py              # API 凭证配置(不要提交到 git)
参数.xlsx              # 字段映射表(Wind/Tushare/同花顺 字段对照)

关于需要算的指标

  • YTM — Tushare 版从 cbrate (票息) + cbbasic (赎回价) 构建现金流日历,Newton 法求解,结果缓存至 cbcashflowcalendar.pkl
  • Ptm — Tushare从 cbbasic.maturitydate 计算,全量缓存至内存
  • ImpliedVol — 除 Wind 以外都是自己算,BS 定价模型 + 二分法反推,跨日期x跨券全矢量化

关于支持数据源的说明

wind 量化 API(就因为它太贵我才开发的这个...) jqdata 未尝试免费版 tushare 用 500 积分版进行的测试 ifind 使用的是 http 版,主要考虑兼容 macOS 用户,以及免去安装,但你需要用命令工具,找到你的 refresh token,复制进 const.py

Roadmap

  • [x] Wind 全字段对接
  • [x] Tushare 全字段对接 + 自计算引擎
  • [x] 静态面板数据 (panel) Tushare 支持
  • [x] jqdata 适配器
  • [x] akshare 适配器
  • [x] ifind 适配器
  • [ ] Agent-readable 版本 — 将转债数据库封装为 AI Agent 可调用的 Skill

License

MIT

Stars

如果有用,求个 Star 呗~
🔗 More in this category

© 2026 GitRepoTrend · reskfa/cb_with_any_api · Updated daily from GitHub