4. 二叉树模型入门
Black-Scholes 公式给出的是连续时间下的解析解,而二叉树模型则用离散的“树状分支”逼近期权价格。理解二叉树,是理解风险中性定价、蒙特卡洛模拟乃至有限差分法的起点。本节聚焦最基础的单期二叉树,把上涨因子、下跌因子、风险中性概率和现值计算这四个核心概念一次讲透。
一、核心原理:单期二叉树在描述什么
单期二叉树假设:当前时刻为 0,标的资产价格为 S₀;经过一个时间步长 Δt 后,价格只有两种可能——上涨到 S₀·u,或下跌到 S₀·d。其中 u 称为上涨因子,d 称为下跌因子,通常满足 u > 1、0 < d < 1。期权在到期日只有两个收益值,分别对应上涨和下跌两种状态。
二叉树定价的关键思想是复制与无套利:用标的资产和无风险资产构造一个组合,使其在上涨、下跌两种状态下的价值都等于期权的到期收益。由于组合与期权未来现金流完全一致,二者当前价格必须相等,否则就存在套利机会。由此推导出的定价公式,等价于“在风险中性世界里求期望,再按无风险利率贴现”。
二、方法流程:四个参数与两步计算
单期二叉树的完整计算可以拆成“定参数—算概率—求收益—做贴现”四步。下面用清单形式梳理,便于对照实现。
- 确定上涨因子 u 与下跌因子 d:常见取法为 u = eσ√Δt,d = 1/u = e-σ√Δt,其中 σ 为年化波动率。这种取法保证树在取对数后对称,且与 Black-Scholes 的波动率口径一致。
- 计算风险中性概率 p:由无套利条件 S₀·erΔt = p·S₀·u + (1-p)·S₀·d 解得 p = (erΔt - d) / (u - d)。注意 p 不是真实世界概率,而是定价用的等价鞅测度。
- 计算到期收益:看涨期权 Cu = max(S₀·u - K, 0),Cd = max(S₀·d - K, 0);看跌期权则用 max(K - S, 0)。
- 贴现求现价:C₀ = e-rΔt·[p·Cu + (1-p)·Cd],看跌期权同理。
下面给出一个可直接运行的 Python 计算片段,参数与公式一一对应:
import math
S0 = 100 # 标的现价
K = 100 # 行权价
r = 0.05 # 无风险利率(年化)
sigma = 0.2 # 波动率(年化)
T = 1.0 # 到期时间(年)
n = 1 # 单期
dt = T / n
u = math.exp(sigma * math.sqrt(dt))
d = 1 / u
p = (math.exp(r * dt) - d) / (u - d)
Su, Sd = S0 * u, S0 * d
Cu = max(Su - K, 0)
Cd = max(Sd - K, 0)
C0 = math.exp(-r * dt) * (p * Cu + (1 - p) * Cd)
print(f"u={u:.4f}, d={d:.4f}, p={p:.4f}")
print(f"Su={Su:.2f}, Sd={Sd:.2f}")
print(f"Cu={Cu:.2f}, Cd={Cd:.2f}, C0={C0:.4f}")
运行结果约为 u=1.2214、d=0.8187、p=0.5252,看涨期权现价约 10.45。这个数值与 Black-Scholes 在相同参数下的结果已经比较接近,说明单期树虽然粗糙,但方向正确。
三、可视化:单期二叉树的价格与收益结构
下图把本节的核心对象——价格分支、风险中性概率与到期收益——放在同一张图上,便于建立“从 S₀ 到收益再到现价”的整体直觉。
四、案例与误区复盘
回到上面的参数:S₀=100、K=100、r=5%、σ=20%、T=1 年。单期树算出看涨期权现价约 10.45。若把期数 n 增加到 10、100,二叉树价格会逐步收敛到 Black-Scholes 的 10.45 附近。这说明单期树不是“错误模型”,而是对连续过程的一次粗粒度采样。
| 概念 | 符号 | 典型取值/公式 | 常见误区 |
|---|---|---|---|
| 上涨因子 | u | eσ√Δt,本例 1.2214 | 误把 u 当作真实上涨概率 |
| 下跌因子 | d | 1/u,本例 0.8187 | 误用 d = 1 - σ√Δt 等近似式 |
| 风险中性概率 | p | (erΔt-d)/(u-d),本例 0.5252 | 误认为 p 是市场真实概率 |
| 期权现价 | C₀ | e-rΔt[p·C_u+(1-p)·C_d] | 忘记贴现,直接用期望收益 |
掌握单期二叉树后,多期树只是把同样的“概率加权 + 贴现”逻辑从后往前逐层重复。真正需要牢记的是:u、d 决定树的形状,p 由无套利条件内生决定,而期权价格永远是风险中性期望的贴现值。这三句话,是后续所有二叉树实战的基石。