- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
导读
本文围绕 ai_quant_trade 仓库中 Tushare Skill 包所收录的「可转债转股价变动」接口文档,系统讲解cb_price_chg的接口定位、输入输出参数、限量权限、调用示例与返回数据解读,并联动仓库内cb_basic(基础信息)、cb_share(转股结果)、cb_call(赎回信息)等配套接口,说明如何用转股价变动数据构建可转债事件驱动研究。读者读完本文后,将能够独立完成转股价变动的数据提取、字段理解与策略落地。
一、转股价变动:可转债研究的核心变量
可转债兼具债性与股性,其股性强弱直接由转股价决定。转股价是每张面值 100 元的可转债可转换正股的价格基准,由此可推导出两个最关键的投资指标:
- 转股价值(转换价值)= 债券面值 ÷ 转股价 × 正股市价;
- 转股溢价率 =(转债市价 ÷ 转股价值 − 1)× 100%。
当上市公司发生分红送股、配股、增发等股本变动,或触发募集说明书中的特别向下修正条款(即"下修")时,转股价会发生调整。每一次调整都会改变转债的转股价值与溢价率,进而影响转债价格中枢与套利空间。因此,转股价的历史变动记录是可转债研究中最基础也最容易被忽略的底层数据之一。
在 ai_quant_trade 仓库的 Tushare Skill 包 中,债券专题收录了完整的可转债数据接口族,其中 可转债转股价变动 正是专门用于追踪这一变量的接口文档。
二、cb_price_chg 接口总览
根据仓库内 可转债转股价变动.md 的记载,接口核心信息如下:
| 项目 | 说明 |
|---|---|
| 接口名称 | cb_price_chg |
| 功能描述 | 获取可转债转股价变动 |
| 数据限量 | 单次最大 2000 条,总量不限制 |
| 权限要求 | 需单独开通本接口权限(与积分无关) |
在 SKILL.md 的接口列表中,cb_price_chg对应 ID 246,归属"债券专题"分类。需要特别注意的是,该接口权限是独立开通的,并不随积分体系自动解锁,文档中明确注明"本接口需单独开权限(跟积分没关系)"。
三、输入参数详解
cb_price_chg的输入参数仅有一个,调用非常简单:
| 名称 | 类型 | 必选 | 描述 |
|---|---|---|---|
| ts_code | str | Y | 转债代码,支持多值输入 |
- 必选参数:
ts_code为必传项,不传将无法取数; - 多值输入:支持一次性传入多只转债代码,多个代码之间使用英文逗号分隔;
- 代码格式:遵循 Tushare 统一的
ts_code格式,即"6 位数字 + 交易所后缀",如113556.SH(沪市转债)、128114.SZ(深市转债)。可对照 可转债基础信息 中cb_basic返回的ts_code字段确认代码格式。
四、输出参数详解
接口返回 6 个字段,覆盖了从初始定价到历次修正的完整信息:
| 名称 | 类型 | 默认显示 | 描述 |
|---|---|---|---|
| ts_code | str | Y | 转债代码 |
| bond_short_name | str | Y | 转债简称 |
| publish_date | str | Y | 公告日期 |
| change_date | str | Y | 变动日期 |
| convert_price_initial | float | Y | 初始转股价格 |
| convertprice_bef | float | Y | 修正前转股价格 |
| convertprice_aft | float | Y | 修正后转股价格 |
对字段的深度理解:
- publish_date(公告日期)与 change_date(变动日期)是两条时间线:公告日期是上市公司披露转股价调整公告的日期,变动日期是转股价实际生效的日期。实际应用中,公告日往往早于变动日,分析事件驱动策略时应以
publish_date作为信号触发点、以change_date作为价格基准切换点; - convert_price_initial(初始转股价格)是转债发行时确定的转股价,在整个转债存续期内保持不变,可作为对照基准;
- convertprice_bef(修正前)/ convertprice_aft(修正后)记录每一次转股价调整的"前值→后值"。
五、接口示例与返回数据解读
文档给出的标准调用方式如下:
pro = ts.pro_api(your token) # 获取可转债转股价变动 df = pro.cb_price_chg( ts_code="113556.SH,128114.SZ,128110.SZ", fields="ts_code,bond_short_name,change_date,convert_price_initial,convertprice_bef,convertprice_aft" )要点说明:
pro实例通过ts.pro_api(token)初始化,token 可参考 SKILL.md 快速上手 中的方式,从环境变量TUSHARE_TOKEN或本地ts.get_token()读取;fields参数用于按需选择输出列,减少返回体量,文档示例选取了 6 个字段中最核心的 5 个(省略publish_date);- 返回结果为 pandas DataFrame,这是 Tushare 全系接口的统一返回格式。
文档附带的数据示例如下:
ts_code bond_short_name change_date convert_price_initial convertprice_bef convertprice_aft 0 113556.SH 至纯转债 20191220 29.4700 None None 1 113556.SH 至纯转债 20200629 29.4700 29.4700 29.3800 2 128110.SZ 永兴转债 20200609 17.1600 None None 3 128114.SZ 正邦转债 20200617 16.0900 None None从这份示例数据可以清晰看出两类记录形态:
- 初始定价记录:当
convertprice_bef与convertprice_aft均为None时,表示该条记录是转债发行时的初始转股价确立(如至纯转债 20191220 确立初始转股价 29.47 元,永兴转债 17.16 元、正邦转债 16.09 元); - 转股价修正记录:当两者均有数值时,表示发生了一次实际的转股价调整(如至纯转债 20200629 由 29.47 元修正至 29.38 元)。
因此在清洗数据时,可以依据"修正前后是否为空"来区分初始定价与后续调整事件,这一点是使用该接口构建事件列表的关键。
六、联动仓库配套接口,构建可转债研究数据体系
单看cb_price_chg只是获取一条变动流水,要发挥其价值,需要与仓库内其他可转债接口配合。债券专题目录(a_全网优秀资源/10_大模型/07_skill包/vibe_trading_skills/tushare/references/债券专题)中可用的接口包括:
| 接口 | 用途 | 与本接口的关联 |
|---|---|---|
| cb_basic 可转债基础信息 | 转债基础信息,含first_conv_price(初始转股价)、conv_price(最新转股价)、reset_clause(特别向下修正条款) | 可交叉校验cb_price_chg的初始价格与最新价格是否与基础信息一致;reset_clause文本可用于判定该转债是否具备下修条款 |
| cb_share 可转债转股结果 | 每次转股的金额、数量、比例及累计数据,输出convert_price_initial(初始转换价格)、convert_price(本次转换价格) | 转股价格与转股进度(acc_convert_ratio累计转股比例)相互印证,判断转股价调整后的转股推进速度 |
| cb_call 可转债赎回信息 | 到期赎回、强制赎回信息,is_call区分公告强赎/不强赎等状态 | 强赎往往伴随"转股价 vs 正股价"条件(如 130% 触发线),需结合转股价判断强赎是否临近 |
| 可转债行情(cb_daily) | 转债日行情 | 计算转股价值、转股溢价率需要行情 × 转股价联动 |
上述组合可形成一条完整的可转债事件研究链路:用cb_basic锁定标的池 → 用cb_price_chg定位转股价调整事件 → 用cb_daily计算事件前后溢价率变化 → 用cb_share/cb_call验证转股与强赎进展。
七、实战应用场景
1. 下修博弈(事件驱动)
拥有向下修正条款的转债,在正股持续低迷、触发下修条件时,上市公司可能公告下调转股价以促进转股。cb_price_chg提供的正是"修正前→修正后"的精确记录。结合 cb_basic 的reset_clause字段筛选具备下修条款的标的,再过滤convertprice_bef非空的记录,即可得到历史上全部下修事件样本,用于研究下修公告后的价格反应。
2. 动态转股溢价率因子
计算任意时点的转股溢价率,必须使用当时生效的转股价而非最新价或初始价。利用cb_price_chg的change_date与修正后价格,可以构建"日期 → 生效转股价"的映射表,再与cb_daily行情对齐,从而生成无未来函数的转股溢价率因子序列——这正是仓库 ai_notes/10_坑点汇总/01_数据处理 中所强调的"避免引入未来信息"在转债场景下的具体体现。
3. 强赎与转股进度监控
转股价向下修正会同步拉低强赎触发阈值(如正股价达到转股价的 130%),同时放大转股价值。将cb_price_chg的变动时间线与 cb_call 的强赎公告、cb_share 的累计转股比例合并,可以判断一只转债"下修 → 转股 → 触发强赎"的完整生命周期所处阶段,为持仓管理与止盈提供依据。
八、可复用的完整调用脚本
参照仓库 scripts/stock_data_example.py 中"环境变量读取 token + 封装函数 + 异常处理"的写法,可将cb_price_chg封装为如下可直接运行的脚本:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 可转债转股价变动数据获取示例(基于 tushare cb_price_chg 接口) """ import os import tushare as ts # 读取环境变量中的token, 或者读取本地记录的token token = os.getenv('TUSHARE_TOKEN') or ts.get_token() # 初始化pro接口 pro = ts.pro_api(token) def get_cb_price_chg(ts_code): """ 获取可转债转股价变动 :param ts_code: 转债代码,支持多值输入,如 "113556.SH,128114.SZ,128110.SZ" """ try: data = pro.cb_price_chg( ts_code=ts_code, fields="ts_code,bond_short_name,publish_date,change_date," "convert_price_initial,convertprice_bef,convertprice_aft" ) print(f"{ts_code} 转股价变动数据获取成功,共 {len(data)} 条:") print(data.head()) return data except Exception as e: print(f"获取转股价变动数据失败:{e}") return None def extract_change_events(df): """ 从转股价变动数据中提取实际修正事件(排除初始定价记录) 推断依据:初始定价记录中 convertprice_bef / convertprice_aft 均为 None """ if df is None or df.empty: return None events = df.dropna(subset=["convertprice_bef", "convertprice_aft"]).copy() events["change_pct"] = (events["convertprice_aft"] / events["convertprice_bef"] - 1) * 100 return events if __name__ == "__main__": # 获取多只转债的转股价变动 raw = get_cb_price_chg("113556.SH,128114.SZ,128110.SZ") # 过滤出真实发生的修正事件,并计算修正幅度 change_events = extract_change_events(raw) if change_events is not None: print("\n实际转股价修正事件:") print(change_events[["ts_code", "bond_short_name", "change_date", "convertprice_bef", "convertprice_aft", "change_pct"]])脚本中的extract_change_events依据数据示例中"初始定价记录修正前/后为 None"的形态规律,自动剔除初始定价流水、只保留真实的转股价修正事件,并额外计算修正幅度百分比,可直接用于下修事件样本库的构建。
九、使用注意事项
- 权限需单独开通:
cb_price_chg不随积分自动解锁,文档明确标注"本接口需单独开权限(跟积分没关系)",调用前需先完成权限申请,否则会返回权限不足类错误; - 限量与取数策略:单次最大返回 2000 条,总量不限制。对于全市场转债的批量取数,可按照转债代码逐个(或分批多值)循环调用,并按
change_date排序后增量存储,规避单次上限; - 必选参数:
ts_code为必填项,无法像部分接口那样按日期区间全量拉取,取数前需先通过cb_basic拿到转债代码列表作为入参来源; - 多值输入上限:支持多值输入,但一次性传入过多代码可能触发单次限量,建议按 2000 条返回量倒推每批代码数量,分批次请求;
- 字段命名注意:
convertprice_bef/convertprice_aft与convert_price_initial的命名风格不一致(前者无下划线分隔),在编写字段引用时需按文档原样书写,避免拼写错误导致取不到列。
十、小结
cb_price_chg是 Tushare 债券专题中定位精准、结构简洁的转股价变动流水接口:单参数入参、6 字段输出,却串联起可转债定价、下修博弈、强赎监控等多项核心研究。结合 ai_quant_trade 仓库中 Tushare Skill 包 的完整接口列表与 债券专题 的配套文档,读者可以将该接口无缝嵌入自有可转债数据管线,构建从"转股价变动事件提取"到"溢价率因子与事件策略"的完整研究链路。
- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
相关推荐
Vibe-Trading 可转债数据接入指南:使用 Tushare cb_issue 接口获取可转债发行数据
Vibe Trading 可转债数据接入指南:使用 Tushare cb_issue 接口获取可转债发行数据 本文是一份面向 Vibe Trading 仓库内
人工智能AI Agent金融科技MCP 服务YouTube.js 专辑解析类 Album 深度指南:从 InnerTube 响应到可用的专辑数据
YouTube.js 专辑解析类 Album 深度指南:从 InnerTube 响应到可用的专辑数据 本篇技术指南聚焦 YouTube.js 中面向 YouTu
金融科技示例工程为 Rustlings 创建社区练习:从 `rustlings dev` 模板生成到发布分享的完整实战指南
为 Rustlings 创建社区练习:从 rustlings dev 模板生成到发布分享的完整实战指南 Rustlings 官方在仓库中提供了一套完整的社区练习
金融科技示例工程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考