BITGET交易所官网BITGET交易所官网

理财、金融、保险、贷款、虚拟货币
等知识简单易懂一秒就通!

可转债收益率测算(可转债收益率测算公式)

可转债同时具有债券和期权两种属性。利用这种特点,采用适合的策略可以获得更加稳健的投资回报。可转债作为债券,持有人每年可以得到约定的利息;如果可转债到期赎回,持有人还可以按照到期赎回价赎回可转债。通过计算从当前时间至到期日的利息总和,我们就可以得出可转债的到期价值,并进一步计算出可转债的到期收益率。下面我们来看看如何计算可转债的到期价值和收益率。

首先,我们了解一下计算到期价值及收益率需要用到的几个参数。

发行起始日,到期日期:发行日也就是起息日,每年的付息日跟起息日的日期相同。大部分可转债的存续期限为6年(少量存续期为5年),则对应的发行起始日与到期日期之间的间隔时间为6年。

年利率:可转债每年支付的利息。例如,某只可转债的利率约定为:第一年0.30%、第二年0.50%、第三年0.80%、第四年1.60%、第五年2.50%、第六年3.00%

到期赎回价:在可转债的赎回条款中,会约定债券到期时以面值乘以x%的价格赎回债券(x>100)。例如,在某个可转债的赎回条款中写到:“公司将按债券面值的115%(含最后一期利息)的价格赎回全部未转股的可转债。”,那么该转债的到期赎回价格就是100x115%=115, 注意这个价格包含了当期的利息。

以上参数为不变参数,下面的参数则是随着投资发生变化。

当前价格:当前价格表示以当前价格买入的成本,需要以该成本为基准计算到期收益率。

买入时间:买入时间决定了当时所处的付息周期和未付利息。

好了,接下来我们看一下到期价值的计算。

from datetime import datetime,date#年利率,最后一项rates[-1] 使用(到期赎回价格-100)作为最后一期总的利息。rates = [0.3, 0.5, 0.8, 1.6, 2.5, 3]#到期赎回价格r_price = 115#当前时间today = datetime.now().date()#到期时间expires = date(2028,1,12)#计算剩余年数remained_years = (expires - today).days/365#计算未付息期数unpaid_years = int(0.999+remained_years)#每期的利息税率,按照个人所得税20%计tax = 0.2#最后一期的税率;考虑到部分转债到期赎回时价超过100部分不扣税,所以这里税率设为0tax2= 0#计算到期价值:未付息年利率之和(除最后一年)税后+到期赎回价格(税后)value_til_expire = sum(rates[-unpaid_years:-1])*(1-tax) + (100+(r_price-100)*(1-tax2))print("剩余{:2.2f}年,未付期数{},到期价值:{:2.2f}".format(remained_years,unpaid_years,value_til_expire))

通过上述程序得到的到期价值的意义在于:当我们以低于到期价值买入可转债时,如果债券不违约,不发生回售,那么该投资至少是保本的。

接下来,我们计算到期年化收益率。

方法一:采用简单的算术平均来计算收益率,即总收益率除以剩余年数。

#买入的价格price = 109.3#到期收益率(年化)ytm = (value_til_expire - price)/price/remained_yearsprint("到期年化收益率:{:2.2f}%".format(ytm*100))

上述代码是通过算数平均来计算的收益率。对于普通个人投资者来说,这个收益率已经比较直观体现了转债到期年化收益率。

方法二:该方法为更精确也更复杂,通过净现值(NPV)计算到期收益率。这里,我们使用了scipy.optimize中的neoton函数来计算到期年化收益率。

import scipy.optimize as optimizeimport mathvalues = []rates2 = [r*(1-tax) for r in rates]rates2[-1] = (r_price-100)*(1-tax2)n = int(remained_years+1)#初始猜测值guess = 0.05#数组的每项存放每期的利率及以年为单位的剩余时间for i in range(n):    values.append((rates2[-1-i],remained_years-i))ytm_func = lambda y: \        sum([v[0]/math.pow(1+y,v[1]) for v in values]) + \        100/math.pow(1+y,remained_years) - priceytm2 = optimize.newton(ytm_func, guess)print("到期年化收益率2:{:2.2f}%".format(ytm2*100))

通过实际运行我们可以发现,两种方法计算得出的收益率差别并不是很大, 第一种简单易理解,第二种更精确一些。在实际应用中,可将上述代码改写成函数,以便重复使用。

以上代码在Python 3.7运行通过。

关键词: 计算 可转债 债券
相关推荐
本文地址: http://1mt.cn/568451
文章来源: 康康
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。 未经允许不得转载:
分享到: 更多
可转债收益率测算(可转债收益率测算公式)文档下载: PDF DOC TXT

BITGET交易所官网 | 理财、金融、保险、贷款、虚拟货币 等知识简单易懂一秒就通!

联系站长网站公告