【Python量化实战全攻略 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(附代码)
摘要:【Python量化实战全攻略 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(附代码) 手册定位:「数据底座手册」第 8 篇(模块一收尾)。可转债是「债底+股性」的混合品种,双低策略的核心数据都在这一篇。
手册定位:「数据底座手册」第 8 篇(模块一收尾)。可转债是「债底+股性」的混合品种,双低策略的核心数据都在这一篇。本篇讲可转债一览、比价表、实时行情三个端点,并用比价字段算转股溢价率、估算纯债价值。
接口路径取自智兔数服官网文档页已验证路径,未虚构;纯债价值为公式估算,非接口直出,已注明。
1. 你将得到什么
- 全市场可转债一览、比价表(含转股价、溢价率、双低值)、实时行情三个端点的字段;
- 转股溢价率、纯债溢价率、双低值(价格+溢价率)的算法;
- 用纯债价值公式(票息+到期收益率折现)估算债底;
- 可转债数据的 4 个坑(溢价率口径、赎回/下修条款、流动性、转股期)。
2. 取数约定
| 项 | 值 |
|---|---|
| 基础域名 | https://api.zhituapi.com |
| 鉴权 | ?token=你的token |
| 可转债标识 | 债券代码(如 113050),比价表/一览用列表返回 |
3. 端点分组地图
| 分组 | 端点(GET) | 说明 |
|---|---|---|
| 可转债一览 | /kzz/list |
全市场可转债基础信息 |
| 可转债比价表 | /kzz/comparison |
转股价/溢价率/双低等核心字段 |
| 可转债实时行情 | /kzz/spot |
实时价格与涨跌 |
注:官网债券类数据以可转债为主,本篇聚焦可转债三端点;纯债估值用公式估算(见第 4 节),不虚构独立债券端点。
4. 核心模板函数(自包含可跑)
import time, requests, pandas as pd
BASE = "https://api.zhituapi.com"
TOKEN = "你的token"
_MOCK = False
def _hit_key(path):
return "%s%s?token=%s" % (BASE, path, TOKEN)
def _get(path, default=None, tries=3):
url = _hit_key(path)
for i in range(tries):
try:
if _MOCK:
return default
r = requests.get(url, timeout=8)
r.raise_for_status()
return r.json()
except Exception:
if i == tries - 1:
return default
time.sleep(0.5 * (i + 1))
def fetch_kzz_list():
return _get("/kzz/list", default=[])
def fetch_kzz_comparison():
return _get("/kzz/comparison", default=[])
def fetch_kzz_spot():
return _get("/kzz/spot", default=[])
def to_frame(raw):
if isinstance(raw, dict):
return pd.DataFrame([raw])
return pd.DataFrame(list(raw or []))
def pure_bond_value(face=100.0, coupon=0.02, ytm=0.03, years=5):
pv = 0.0
for t in range(1, years + 1):
cf = face * coupon if t < years else face * (1 + coupon)
pv += cf / ((1 + ytm) ** t)
return pv
def run_check():
global _MOCK
_MOCK = True
comp = [{"代码": "113050", "名称": "某转债", "价格": 120.0, "转股价": 10.0,
"正股价格": 12.0, "转股溢价率": 0.10, "双低": 130.0},
{"代码": "113051", "名称": "另转债", "价格": 105.0, "转股价": 9.0,
"正股价格": 8.5, "转股溢价率": 0.25, "双低": 130.5}]
spot = [{"代码": "113050", "最新价": 120.5, "涨跌幅": 0.4}]
dfc = to_frame(comp)
assert len(dfc) == 2 and "转股溢价率" in dfc.columns
pb = pure_bond_value()
assert 80 < pb < 100
assert spot[0]["最新价"] == 120.5
print("校验通过 | 比价表=%d条 债底估算=%.2f" % (len(dfc), pb))
_MOCK = False
if __name__ == "__main__":
run_check()
5. 跑通示例
df = to_frame(fetch_kzz_comparison()).sort_values("双低")
print(df.head(20)[["代码", "名称", "价格", "转股溢价率", "双低"]])
6. 坑与注意事项
- 溢价率口径:转股溢价率 = (转债价格/转股价值 − 1),有的端点是正值有的含负,做排序前统一符号。
- 条款风险:强赎/下修/回售条款会改变转债价值,比价表不含这些,需另查公告,别只看双低值就买。
- 流动性:小盘转债成交稀疏,双低策略回测要剔除外观流动性差的标的,否则实盘无法建仓。
- 转股期:未进入转股期的转债溢价率含「期权时间价值」,和已转股期不可比,筛选要分状态。
7. 小结与下一篇预告
模块一(数据底座 8 篇)收官——行情/历史K线/指数板块/财务/资金流/特色市场/基金/可转债全部就位。下一篇进入模块二(选股因子):估值因子 PE/PB/PS 怎么取怎么用。
下一篇预告:《【Python量化实战全攻略 #09】估值因子手册:PE、PB、PS 怎么取、怎么用(附代码)》
8. 免责声明
本文接口路径来自官方文档,纯债价值为公式估算非接口直出,示例数据为演示用途,不构成投资建议。
关于数据来源:本文接口来自智兔数服(www.zhituapi.com)官方文档,覆盖沪深A股、指数、基金、可转债等 200+ 已验证接口路径,注册可领免费 token 做研究测试。
更多实战手册见技术博客:zhituapi.com/blog.html。
本系列《Python量化实战全攻略》共 32 篇,下一篇进入选股因子模块。
想亲自试一下?免费获取证书