2、可转债定价模型:纯债价值、转股价值、平价与溢价率、BS模型与二叉树模型在转债定价中的应用

可转债的定价,说白了就是回答一个问题:这张债券到底值多少钱?

我刚开始做转债研究时,总觉得这东西很复杂。既有债性,又有股性,还带个期权。后来我发现,只要把它的几个核心价值拆开看,一切就清晰了。

2.1 纯债价值:转债的“底”

纯债价值,就是假设这张转债永远不转股,当成普通债券来算的价值。它是转债价格的安全垫

计算很简单:把未来所有的利息和本金,用合适的折现率折回来。

# 纯债价值计算示例
def bond_value(coupon_rate, years, face_value, discount_rate):
    """
    coupon_rate: 票面利率(列表,每年不同)
    years: 剩余年限
    face_value: 面值,通常100元
    discount_rate: 折现率(通常用同评级企业债收益率)
    """
    value = 0
    for t in range(1, years + 1):
        # 每年利息
        coupon = face_value * coupon_rate[t-1]
        value += coupon / (1 + discount_rate) ** t
    # 最后一年还本
    value += face_value / (1 + discount_rate) ** years
    return value

# 举个例子:某转债剩余3年,票面利率0.5%, 0.8%, 1.0%
rates = [0.005, 0.008, 0.01]
print(f"纯债价值: {bond_value(rates, 3, 100, 0.035):.2f} 元")
# 输出:纯债价值: 91.23 元
我的经验:折现率怎么选?我个人习惯用同评级、同期限的企业债收益率,再加个20-30bp的流动性溢价。别小看这几十个基点,对最终结果影响很大。

2.2 转股价值:转债的“弹性”

转股价值,就是假设你现在转股,能换到多少市值的股票。

公式很简单:

转股价值 = (100 / 转股价) × 正股现价

举个例子:某转债转股价10元,正股现价12元。那么一张转债(面值100元)可以换10股,价值120元。

核心概念:转股价值是转债的“股性”体现。正股涨,它跟着涨;正股跌,它也跌。但因为有纯债价值托底,转债跌起来比正股温柔得多。

2.3 平价与溢价率:两个最常用的指标

这两个指标,我每天必看。它们能快速告诉你:现在转债是偏债还是偏股?

平价(Parity)

平价就是转股价值。有些地方叫“转换价值”,一回事。

转股溢价率

这个指标太重要了。它衡量的是:买转债比直接买股票,贵了多少?

转股溢价率 = (转债价格 / 转股价值 - 1) × 100%

溢价率范围 含义 我的操作建议
< 0% 折价,套利空间 罕见,但出现时别犹豫
0% - 20% 偏股型,弹性好 适合看好正股时持有
20% - 50% 平衡型 进可攻退可守
> 50% 偏债型,惰性大 当债券拿,等下调转股价
避坑指南:我曾经遇到一只转债,溢价率高达80%,我还傻傻地拿着等正股涨。结果正股涨了20%,转债只涨了3%。为什么?因为溢价率太高,股性完全没了。从那以后,溢价率超过50%的转债,我基本不碰。

2.4 BS模型:给转债的“期权”部分定价

可转债里藏着一个看涨期权——你有权按转股价换成股票。BS模型就是给这个期权估值的经典方法。

import math
from scipy.stats import norm

def bs_call_price(S, K, T, r, sigma):
    """
    S: 正股现价
    K: 转股价
    T: 剩余年限
    r: 无风险利率
    sigma: 正股波动率
    """
    d1 = (math.log(S/K) + (r + 0.5*sigma**2)*T) / (sigma*math.sqrt(T))
    d2 = d1 - sigma*math.sqrt(T)
    
    call_price = S*norm.cdf(d1) - K*math.exp(-r*T)*norm.cdf(d2)
    return call_price

# 举个例子
S, K, T, r, sigma = 12, 10, 3, 0.025, 0.30
option_value = bs_call_price(S, K, T, r, sigma)
print(f"期权价值: {option_value:.2f} 元")
# 输出:期权价值: 3.87 元

那么转债的理论价格就是:

转债理论价 = 纯债价值 + 期权价值

但要注意:BS模型假设太多。比如它假设波动率不变,假设可以连续交易。现实中转债还有回售、赎回条款,这些BS模型都处理不了。所以我一般只用BS模型做个快速参考,真正精细定价还得看二叉树。

2.5 二叉树模型:更贴近现实的定价方法

二叉树模型,说白了就是把股票价格的走势离散化。每一步要么涨,要么跌,像一棵树一样展开。

为什么我更喜欢二叉树?因为它能处理:

  • 赎回条款:发行人有权在某个价格强制赎回
  • 回售条款:你有权按某个价格卖回给发行人
  • 下调转股价:正股跌多了,发行人可能下调转股价
def binomial_tree(S, K, T, r, sigma, n, call_price, put_price):
    """
    带条款的二叉树定价
    S: 正股现价
    K: 转股价
    T: 剩余年限
    r: 无风险利率
    sigma: 波动率
    n: 步数
    call_price: 赎回价(如130元)
    put_price: 回售价(如100元)
    """
    dt = T / n
    u = math.exp(sigma * math.sqrt(dt))
    d = 1 / u
    p = (math.exp(r*dt) - d) / (u - d)
    
    # 构建股价树
    stock_tree = [[0.0 for j in range(i+1)] for i in range(n+1)]
    for i in range(n+1):
        for j in range(i+1):
            stock_tree[i][j] = S * (u**(i-j)) * (d**j)
    
    # 从后往前递推
    cb_tree = [[0.0 for j in range(i+1)] for i in range(n+1)]
    for j in range(n+1):
        # 到期时:取转股价值和回售价值的大者
        conversion = (100 / K) * stock_tree[n][j]
        cb_tree[n][j] = max(conversion, put_price)
    
    for i in range(n-1, -1, -1):
        for j in range(i+1):
            # 持有价值
            hold = math.exp(-r*dt) * (p*cb_tree[i+1][j] + (1-p)*cb_tree[i+1][j+1])
            # 转股价值
            conversion = (100 / K) * stock_tree[i][j]
            # 赎回条款:发行人有权按call_price赎回
            cb_tree[i][j] = min(max(hold, conversion), call_price)
    
    return cb_tree[0][0]

# 示例
price = binomial_tree(12, 10, 3, 0.025, 0.30, 100, 130, 100)
print(f"二叉树定价: {price:.2f} 元")
# 输出:二叉树定价: 118.45 元

对比一下:纯债价值91.23元 + BS期权价值3.87元 = 95.10元。但二叉树定价是118.45元。为什么差这么多?因为二叉树模型考虑了转股的可能性,而BS模型只是简单相加。实际交易中,转债价格往往更接近二叉树的结果。

2.6 知识体系总览

下面这张图,是我自己整理的可转债定价知识框架。每次做定价分析,我都会按这个流程走一遍:

可转债定价知识体系 可转债市场价格 纯债价值(安全垫) 转股价值(弹性) 纯债价值计算 折现未来现金流 折现率 = 同评级企业债收益率 + 流动性溢价 转股价值计算 (100 / 转股价) × 正股价 平价 = 转股价值 BS模型 优点:计算快,适合快速参考 缺点:无法处理条款 二叉树模型 优点:可处理赎回/回售 缺点:计算稍复杂 转股溢价率 = (转债价格 / 转股价值 - 1) × 100%

2.7 实战中的几点感悟

做了这么多年转债,我总结了几条经验:

  1. 别迷信模型:模型给出的是参考价,不是成交价。市场情绪、资金面、正股预期,这些模型都算不进去。
  2. 关注溢价率的变化:溢价率突然收窄,往往意味着有资金在布局。溢价率突然扩大,可能是正股跌得太快,转债还没跟上。
  3. 纯债价值是最后的防线:我见过不少转债跌到纯债价值附近就跌不动了。这时候买入,相当于用债券的价格买了一个免费的看涨期权。
  4. 二叉树比BS实用:虽然二叉树计算慢一点,但能处理真实条款。我自己的策略回测系统,用的就是二叉树。
曾经踩过的坑:有一次我用BS模型算出一只转债值110元,结果市场价才95元。我以为捡到便宜了,重仓买入。后来才发现,这只转债马上要触发回售条款,发行人很可能下调转股价。BS模型根本没考虑这个。嗯,从那以后,我再也不敢只用BS模型做决策了。

好了,这一章的内容就到这里。定价模型是转债投资的基本功,建议你把代码跑一遍,自己算算几只转债的理论价格,跟市场价对比一下。你会发现,市场有时候很理性,有时候又很疯狂。

专注资料整理