当前位置:首页>python>用Python算可转债溢价率,三步搞定还能自动排序

用Python算可转债溢价率,三步搞定还能自动排序

  • 2026-10-11 07:32:56
用Python算可转债溢价率,三步搞定还能自动排序

做可转债这么多年,我发现很多人买债只看价格,不看溢价率。这就好比买东西只看标价,不看实际价值,很容易买贵了还不知道。今天用Python代码把溢价率算清楚,顺手再做个归一化处理,方便多只债放在一起比较。

先搞懂转股溢价率是什么意思

转股溢价率说白了就是,这只转债的市场价格,比它理论上能转换成的股票价值,贵了多少。

计算公式是这样的:

转股溢价率 = (现价 - 理论转股价值)/ 理论转股价值

理论转股价值的算法也很简单:

理论转股价值 = 100 / 转股价 × 正股价

举个例子。某只转债现价110元,转股价1.1元,正股价10元。理论转股价值就是100除以1.1再乘以10,等于100元。溢价率就是(110-100)/100=10%。

溢价率越高,说明这只债相对于正股越贵。溢价率越低,说明定价越接近正股价值,转债跟涨正股的弹性就越大。

第一步,准备数据,写代码计算溢价率

先把需要的数据准备好,三列就够了,现价、转股价、正股价。

import pandas as pddata = {    '现价': [110, 120, 130, 140, 150],    '转股价': [100, 110, 120, 130, 140],    '正股价': [10, 11, 12, 13, 14]}df = pd.DataFrame(data)# 计算转股溢价率df['转股溢价率'] = (df['现价'] - 100/df['转股价']*df['正股价']) / (100/df['转股价']*df['正股价'])print(df)
跑出来的结果大概长这样:
现价  转股价  转股溢价率0  110  100   0.101  120  110   0.092  130  120   0.083  140  130   0.074  150  140   0.07

溢价率从0.10到0.07,一眼就能看出哪只债更贵,哪只更有弹性。

第二步,归一化处理,让不同的债放在一起好比较

算出来的溢价率数值,直接拿来比较其实没问题。但如果你想把溢价率和其他指标放在一起做综合评分,就需要归一化处理,把所有数据统一换算到0到1之间。

这个操作叫Min-Max缩放,原理很简单,就是把最小值变成0,最大值变成1,中间的按比例换算。

def scale(df, column_name):    min_val = df[column_name].min()    max_val = df[column_name].max()    df[column_name + '_scaled'] = (df[column_name] - min_val) / (max_val - min_val)    print(df)    return dfdf = scale(df, '转股溢价率')
跑完之后多了一列"转股溢价率_scaled",数值全在0到1之间:
现价  转股价  转股溢价率  转股溢价率_scaled0  110  100   0.10      1.0000001  120  110   0.09      0.6666672  130  120   0.08      0.3333333  140  130   0.07      0.0000004  150  140   0.07      0.000000

第三步,按溢价率排序,低溢价的排在前面

最后一步,按归一化后的溢价率从低到高排序,溢价率低的排在最前面,方便找弹性最大的债。

df = df.sort_values(by='转股溢价率_scaled', ascending=True)print(df)

排完序之后,溢价率最低的债自动跑到最上面,一目了然。

这段代码能用来做什么

这三步代码组合在一起,可以批量处理几百只转债的数据,几秒钟算出所有债的溢价率并排好序。不用一只一只手动去查,效率高很多。

我自己在做可转债轮动策略的时候,溢价率是最常用的筛选指标之一。低溢价的债跟正股联动更紧,正股一涨转债跟得快。高溢价的债跟得慢,买进去等半天可能涨幅还不如直接买正股。

量化的核心不是代码有多复杂,而是把判断逻辑变成可以重复执行的规则。这段代码就是把"挑低溢价债"这个动作,变成了一个可以每天自动跑的筛选器。

最后,可能有些新手朋友会问,这个溢价率排序有什么用,这个就可以关注我看其他的相关文章了,这里就不再多少。

风险提示:本文内容仅供学习交流,不构成任何投资建议,市场有风险,操作需谨慎。

最新文章

随机文章