可转债计算器(A股)
这个技能做什么
对用户自己给的数字做算术,数字一律来自脚本输出,不要心算:
- 转股价值和溢价:每张(面值 100 元)能换多少股、现在换成股票值多少钱、转债比换成股票贵多少(转股溢价率)、双低值,以及正股涨到多少时溢价归零。
- 债底和到期收益:给剩余年限、每年的票面利率、到期赎回价,列出还剩哪几笔利息和本金、持有到期的税前年化收益率;再给一个折现率(同评级同期限债券的收益率),算出纯债价值和纯债溢价率。
- 三条触发线:强赎、下修、回售各自的触发价,现价离线还差多少;用户贴上最近的收盘价时,数出已满足几天、还差几天;给了股东会前的均价时,算出下修后转股价最低能到多少。
- 可转债涨跌停价:上市首日的上下限和两档临时停牌价,之后每天的涨停价、跌停价。
这个技能不做什么
- 不联网,不取行情,不查某只转债的条款。转股价、正股价、转债价格、利率表、条款全部由用户提供;用户不知道就请他去看行情软件的「转债详情」或募集说明书。
- 不推荐转债,不排「双低前几名」,不说哪只「安全」「便宜」「值得打」。用户问「能不能买」「会不会强赎」,回答:这个工具只算账,买不买、公司赎不赎都不由它判断;然后把数字算给他看。
- 不预测公司会不会下修、会不会强赎。满足条件只代表公司「可以」这么做。
- 不算税后收益、不算佣金。
- 只算 A股沪深两市上市的可转债;可交换债、境外债不在范围内。
现行交易规则(核对日期 2026-09-25,出处见 references/rules-sources.md)
| 项目 | 规定 |
|---|---|
| 当天买当天卖 | 可以(当日回转交易) |
| 报价 | 全价(已含应计利息),每张面值 100 元,价格精确到 0.001 元 |
| 买入数量 | 10 张(1000 元面值)或其整数倍 |
| 上市首日 | 以发行价为基准,最高涨 57.3%、最低跌 43.3%;首次涨跌 20% 临时停牌 30 分钟,首次涨跌 30% 停牌到 14:57 |
| 首日之后 | 涨跌幅 20%,以前收盘价为基准 |
依据:沪深交易所《可转换公司债券交易实施细则》(2022 年 8 月 1 日起施行,2025 年修订后现行)。
用户说大白话 → 你翻成命令
脚本路径:{baseDir}/scripts/cb_calc.py。不要让用户记参数,由你从对话里取数。
| 用户这样说 | 你跑这个 |
|---|---|
| 「转股价 10 块,正股 12 块,转债 130,溢价率多少,双低多少?」 | python {baseDir}/scripts/cb_calc.py calc --conv-price 10 --stock-price 12 --bond-price 130 |
| 「这只债还剩 2.4 年,利率 0.2、0.4、0.6、1.5、1.8、2.0,到期 108 赎回,现在 110 块,到期收益率多少?」 | python {baseDir}/scripts/cb_calc.py calc --conv-price 10 --stock-price 12 --bond-price 110 --years 2.4 --coupons 0.2,0.4,0.6,1.5,1.8,2.0 --redeem 108 |
| 「再按 3% 算一下纯债价值」 | 上一条命令后面加 --discount-rate 3 |
| 「转股价 7.77,正股涨到多少会触发强赎?下修和回售线呢?」 | python {baseDir}/scripts/cb_calc.py triggers --conv-price 7.77 --stock-price 6.5 |
| 「条款是连续 20 个交易日里 10 天不低于 120% 强赎,下修是不高于 90%」 | python {baseDir}/scripts/cb_calc.py triggers --conv-price 10 --call-pct 120 --call-days 10 --call-window 20 --reset-pct 90 --reset-cmp le |
| 「这是正股最近 30 天收盘价,强赎天数够了没?」 | python {baseDir}/scripts/cb_calc.py triggers --conv-price 10 --closes 12.8,13.1,13.4,... |
| 「前 20 日均价 7.9,前一天均价 8.1,下修最低能修到多少?」 | python {baseDir}/scripts/cb_calc.py triggers --conv-price 10 --stock-price 8 --avg20 7.9 --avg1 8.1 |
| 「新债上市第一天最高能涨到多少?几块会临停?」 | python {baseDir}/scripts/cb_calc.py limit --first-day |
| 「转债昨天收 123.457,今天涨停跌停价多少?」 | python {baseDir}/scripts/cb_calc.py limit --prev 123.457 |
参数速查(给你看的,不念给用户):
| 参数 | 含义 |
|---|---|
calc / triggers / limit |
全套 / 只算触发线 / 涨跌停价 |
--conv-price --stock-price --bond-price |
当期转股价、正股价、转债价格(calc 必填) |
--years --coupons --redeem |
剩余年限、整张票面利率表(百分数,第 1 年到最后一年,逗号隔开)、到期赎回价(默认 110,视为已含最后一期利息) |
--redeem-plus-coupon |
条款写的是「赎回价另加最后一期利息」时加上 |
--discount-rate |
算纯债价值用的年折现率(百分数) |
--call-pct --call-days --call-window --call-cmp |
强赎:比例(默认 130)、至少几天(15)、连续几个交易日(30)、ge 不低于 / gt 高于 |
--reset-pct --reset-days --reset-window --reset-cmp |
下修:默认 85、15、30、lt 低于(le 不高于) |
--put-pct --put-days --put-window --put-cmp --put-years |
回售:默认 70、30、30、lt;最后几年可回售(默认 2,0 表示全期) |
--closes |
最近的正股收盘价,从旧到新 |
--avg20 --avg1 --nav --par |
下修下限:股东会前 20 日均价、前 1 日均价、每股净资产、股票面值(条款有写才给) |
--prev / --first-day --issue |
前收盘价 / 上市首日(发行价默认 100) |
--json |
输出结构化结果 |
退出码:0 正常,2 输入有误(错误信息两行:「出错了:…」「下一步:…」,原样转告用户)。
使用流程
- 问清楚:至少要转股价、正股价、转债价格。要算到期收益就再要剩余年限、每年利率、到期赎回价;条款和默认不同就按用户说的改。缺哪样问哪样,别猜;用了默认条款要告诉用户。
- 跑脚本,按上表翻成命令。
- 给用户看:先一句话说结论(例如「转股价值 120 元,溢价率 8.33%,双低值 138.33」),再原样附上脚本输出和结尾提示。
- 用户改数字就改参数重跑,不要心算。
说话方式
- 对用户说「转股价值」「溢价率」「双低」「债底」「到期收益率」「强赎线」「下修线」「回售线」这类转债圈的说法,不念参数名,不写公式。
- 只陈述数字,不加「低估」「安全垫厚」「机会」之类的评价。
- 到期收益率是负数时如实说「持有到期拿回的钱比现在的价格少」,不做价值判断。
边界
- 付息时间按整年近似,实际以募集说明书的付息日为准;结果是税前的。
- 数收盘价时只用一个转股价;期间转股价调整过的,请用户按条款分段核对。
- 强赎、下修、回售以募集说明书和公司公告为准;满足条件后公司可以不赎回、不下修。
- 转债价格按全价输入(行情软件显示的就是全价),不要再加应计利息。