【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)

【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)

手册定位:「数据底座手册」第 8 篇(模块一收尾)。可转债是「债底+股性」的混合品种,双低策略的核心数据都在这一篇。本篇讲可转债一览、比价表、实时行情 三个端点,并用比价字段算转股溢价率、估算纯债价值。

接口路径取自官网文档页已验证路径,未虚构;纯债价值为公式估算,非接口直出,已注明。

1. 你将得到什么

  • 全市场可转债一览 、比价表 (含转股价、溢价率、双低值)、实时行情三个端点的字段;
  • 转股溢价率、纯债溢价率、双低值(价格+溢价率)的算法;
  • 用纯债价值公式(票息+到期收益率折现)估算债底;
  • 可转债数据的 4 个坑(溢价率口径、赎回/下修条款、流动性、转股期)。

2. 取数约定

项 值
基础域名 https://api.zhituapi.com
鉴权 ?token=你的token
可转债标识 债券代码(如 113050),比价表/一览用列表返回

3. 端点分组地图

分组 端点(GET) 说明
可转债一览 /kzz/list 全市场可转债基础信息
可转债比价表 /kzz/comparison 转股价/溢价率/双低等核心字段
可转债实时行情 /kzz/spot 实时价格与涨跌

注:官网债券类数据以可转债为主,本篇聚焦可转债三端点;纯债估值用公式估算(见第 4 节),不虚构独立债券端点。

4. 核心模板函数(自包含可跑)

python 复制代码
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  # 5年、票息2%、ytm3% 时债底应低于面值
    assert spot[0]["最新价"] == 120.5
    print("校验通过 | 比价表=%d条 债底估算=%.2f" % (len(dfc), pb))
    _MOCK = False


if __name__ == "__main__":
    run_check()

5. 跑通示例

python 复制代码
# 双低策略初筛:价格+溢价率 最小的 20 只
df = to_frame(fetch_kzz_comparison()).sort_values("双低")
print(df.head(20)[["代码", "名称", "价格", "转股溢价率", "双低"]])

6. 坑与注意事项

  1. 溢价率口径:转股溢价率 = (转债价格/转股价值 − 1),有的端点是正值有的含负,做排序前统一符号。
  2. 条款风险:强赎/下修/回售条款会改变转债价值,比价表不含这些,需另查公告,别只看双低值就买。
  3. 流动性:小盘转债成交稀疏,双低策略回测要剔除外观流动性差的标的,否则实盘无法建仓。
  4. 转股期:未进入转股期的转债溢价率含「期权时间价值」,和已转股期不可比,筛选要分状态。

7. 小结与下一篇预告

模块一(数据底座 8 篇)收官------行情/历史K线/指数板块/财务/资金流/特色市场/基金/可转债全部就位。下一篇进入模块二(选股因子):估值因子 PE/PB/PS 怎么取怎么用。

下一篇预告:《【Python量化实战宝典 #09】估值因子手册:PE、PB、PS 怎么取、怎么用(Python 可跑)》

8. 免责声明

本文接口路径来自官方文档,纯债价值为公式估算非接口直出,示例数据为演示用途,不构成投资建议。

相关推荐
砚底藏山河1 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年1 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Jlzn88881 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
Williamtym1 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
香吧香1 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
CS创新实验室2 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
CCblandy2 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
我是人✓2 小时前
SpringBoot项目的五种创建方式
java·spring boot·后端
quantdash_cc2 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash