期权定价是金融数学中的核心问题,它依赖于对股票价格随机过程的深入理解。本文将系统介绍如何利用偏微分方程(PDE)和伊藤微积分来建立期权定价模型,并辅以Python代码实现。通过几何布朗运动描述股票价格行为,结合布莱克-斯科尔斯方程和风险中性定价方法,我们将构建完整的期权定价框架。
期权基础与 payoff 函数
期权是一种金融合约,赋予持有者在特定时间 T 内以约定执行价 E 买入或卖出标的资产的权利(而非义务)。看涨期权(Call Option)允许持有者以执行价买入资产,而看跌期权(Put Option)则允许持有者卖出资产。期权的 payoff 函数 ht 定义为:
- 看涨期权:_max(S - E, 0)_
- 看跌期权:_max(E - S, 0)_
例如,当标的资产价格 S 从100美元升至110美元时,执行价为100美元的看涨期权将产生10美元的收益。然而,由于股票价格具有随机性,期权定价面临巨大挑战。我们无法确切知道到期日 T 的资产价格,但可以通过随机过程建模来估计其概率分布,并计算 payoff 函数的贴现期望值:
C = e^{-rT} E[max(S_T - E, 0)]
股票价格行为的数学假设
股票价格的三重假设
通过对历史价格数据的分析(如苹果公司股票),我们发现股票价格呈现趋势性运动叠加随机噪声。因此,股票价格可建模为随机过程 _(Xt) t>0_,并满足三个关键假设:
- 马尔可夫过程:未来价格只取决于当前信息,与历史路径无关
- 鞅性质:在有效市场假设下,所有市场参与者同时获取信息并立即反应,导致当前价格已包含所有已知信息,未来价格期望等于当前值
- 正态分布:价格变动服从正态分布(尽管实际数据常显示厚尾特征)
布朗运动与几何布朗运动
若以上假设成立,股票价格遵循几何布朗运动(GBM):
dS = μS dt + σS dW
其中 μ 为漂移率,_σ_ 为波动率,_dW_ 为维纳过程。布朗运动(维纳过程)具有三个特征:
- W₀ = 0
- 独立增量:_Wt - Ws_ 与 s 时刻前信息独立
- Wt - Ws ~ N(0, t-s)
方差线性增长和步数平方根关系源于随机变量的独立性:总方差为各步方差之和,标准差随步数平方根增长。
布朗运动在二维空间中的轨迹显示连续但不可微的特征,具有无限的一阶变差,这使得传统黎曼积分无法处理此类过程,需要引入伊藤积分。
伊藤微积分的核心概念
二次变差
二次变差量化了维纳过程增量的平方和,为处理布朗运动的不规则性提供了框架:
- (dW)² = dt
- (dt)² = 0
- dW dt = 0
前两个关系可通过“小量相乘趋于零”直观理解,第一个关系则源于维纳过程的定义。
伊藤等距
利用布朗运动的二次变差性质,可以计算其方差:
Var[∫₀ᵗ f(s) dW_s] = E[(∫₀ᵗ f(s) dW_s)²] = ∫₀ᵗ E[f(s)²] ds
这一关系称为伊藤等距,是随机微积分的关键组成部分。
伊藤引理
在随机环境中,普通微积分法则不再适用。伊藤引理通过泰勒展开和二次变差性质,提供了对包含布朗运动的函数进行微分的方法:
若随机过程遵循 dS = a(S,t) dt + b(S,t) dW_,则函数 _f(t,S) 的微分为:
df = (∂f/∂t + a ∂f/∂S + ½ b² ∂²f/∂S²) dt + b ∂f/∂S dW
这一引理成为计算随机积分的强大工具。
股票定价模型
假设股票价格遵循几何布朗运动:
dS = μS dt + σS dW
应用伊藤引理于函数 _f = ln(S)_,计算所有导数后得到:
d(ln S) = (μ - σ²/₂) dt + σ dW
通过普通积分求解可得股票定价模型:
S_T = S₀ exp[(μ - σ²/₂)T + σW_T]
这意味着对数收益服从正态分布,具有线性增长的均值和标准差。此公式避免了模拟单个价格路径的计算负担,显著提高了效率。
import jax.numpy as jnp
import jax.random as jrandom
def model_stock_price(S0:float, T:float, r:float, sigma:float, samples=1000):
"""使用解析公式计算到期股票价格分布"""
random_step = jrandom.normal(jrandom.PRNGKey(1), shape=[samples])
S = jnp.ones(samples)*S0
S = S*jnp.exp(T*(r - 0.5*sigma**2) + sigma*jnp.sqrt(T)*random_step)
return S布莱克-斯科尔斯期权定价公式
两种定价方法比较
期权定价存在两种相互关联的方法论:
布莱克-斯科尔斯方程与公式:通过随机微积分推导期权价格的偏微分方程,给定最终payoff条件求解获得期权价格
- 优点:闭式解计算速度快
- 缺点:仅提供单一价值,无法评估可靠性
风险中性方法与payoff公式:建立合成概率测度,将期权价格表示为期望形式
- 优点:提供价格分布信息,支持更复杂模型(如跳跃过程、随机波动率)
- 缺点:计算效率相对较低
风险中性定价
看涨期权价值可表示为payoff函数的贴现期望:
C = e^{-rT} E[max(S_T - E, 0)]
结合之前推导的股票定价模型,可通过蒙特卡洛模拟计算价格分布:
def mc_call_option_price(S0:float, E:float, T:float, r:float, sigma:float, samples:int=1000):
"""风险中性方法计算看涨期权价格"""
random_step = jrandom.normal(jrandom.PRNGKey(1), shape=[samples])
S = jnp.ones(samples)*S0 * jnp.exp(T*(r - 0.5*sigma**2) + sigma*jnp.sqrt(T)*random_step)
option_price = jnp.maximum(S - E, 0)
option_price = jnp.exp(-r*T)*option_price
return jnp.mean(option_price), option_price运行1000次模拟显示,对于标的价格1000美元、执行价1100美元、5年到期、无风险利率2%、波动率0.2的期权,公平价格约为178.3美元。实际payoff函数在零点处有明显尖峰,因为负值期权不被执行。
布莱克-斯科尔斯公式推导
从股票价格的伊藤过程出发:
dS = μS dt + σS dW
假设看涨期权价格 _C = C(t,S)_,应用伊藤引理:
dC = (∂C/∂t + μS ∂C/∂S + ½ σ²S² ∂²C/∂S²) dt + σS ∂C/∂S dW
通过构建投资组合 Π = -C + (∂C/∂S)S 消除随机项,得到完全对冲头寸:
dΠ = (-∂C/∂t - ½ σ²S² ∂²C/∂S²) dt
由于组合无风险,其收益应等于无风险利率:
dΠ = rΠ dt
联立上述方程得到布莱克-斯科尔斯方程:
∂C/∂t + rS ∂C/∂S + ½ σ²S² ∂²C/∂S² = rC
在终值条件 C(T,S) = max(S-E,0) 下求解此偏微分方程,可得布莱克-斯科尔斯公式:
C = S₀N(d₁) - Ee^{-rT}N(d₂)
其中:
- d₁ = [ln(S₀/E) + (r + σ²/₂)T] / (σ√T)
- d₂ = d₁ - σ√T
该公式基于以下假设:
- 标的资产遵循常数波动率的几何布朗运动
- 无风险利率为已知时间函数
- 标的资产无分红
- Delta对冲连续进行
- 无交易成本
- 无套利机会
import jax.scipy as jscipy
def bs_call_option_price(S0:float, E:float, T:float, r:float, sigma:float):
"""布莱克-斯科尔斯公式计算看涨期权价格"""
d1 = (jnp.log(S0/E) + (r + sigma**2/2)*T) / (sigma*jnp.sqrt(T))
d2 = d1 - sigma*jnp.sqrt(T)
price = S0*jscipy.stats.norm.cdf(d1) - E*jnp.exp(-r*T)*jscipy.stats.norm.cdf(d2)
return price两种方法计算结果高度一致,但存在权衡:闭式解计算高效,而模拟方法提供价格分布信息,有助于理解风险收益特征。
代码性能分析
使用计时装饰器比较计算效率:
from time import time
def timing_decorator(func):
def wrapper(*args, **kwargs):
t0 = time()
result = func(*args, **kwargs)
t1 = time()
print(f'函数 {func.__name__} 运行时间: {t1-t0:.3f}秒')
return result
return wrapper测试结果:
- 50,000次模拟:风险中性方法0.005秒,BS公式0.002秒
- 5,000,000次模拟:JAX版本0.056秒,NumPy版本0.275秒
JAX凭借自动微分和GPU加速功能,在大规模计算中展现显著优势,比传统NumPy快约5倍。
常见问题
什么是几何布朗运动?
几何布朗运动是描述股票价格随机演变的连续时间随机过程,包含确定性漂移项和随机波动项。它假设对数收益服从正态分布,是金融数学中最广泛使用的模型之一。
伊藤积分与普通积分有何不同?
伊藤积分专门处理具有无限变差的随机过程,考虑了二次变差性质。与传统黎曼积分不同,它需要额外的修正项(伊藤项),这是随机微积分的关键特征。
风险中性定价为何重要?
风险中性定价将期权价格表示为贴现期望,避免了估计实际漂移率的困难。它基于无套利原则,在风险中性测度下所有资产的预期收益率都等于无风险利率。
布莱克-斯科尔斯模型有哪些局限性?
该模型假设常数波动率和连续对冲,这与市场实际情况不符。波动率微笑、跳跃风险和交易成本等因素都可能导致模型定价偏差,需要更复杂的模型修正。
蒙特卡洛模拟在期权定价中的优势是什么?
模拟方法能够处理路径依赖期权、多资产期权和复杂payoff结构,提供整个价格分布而不仅是单一价值。随着计算能力提升,它在复杂衍生品定价中越发重要。
如何选择适合的定价方法?
对于标准欧式期权,布莱克-斯科尔斯公式是高效选择。对于具有复杂特征或路径依赖的期权,蒙特卡洛模拟通常更合适。实际应用中常结合多种方法相互验证。
通过深入理解偏微分方程和伊藤微积分在期权建模中的应用,投资者和量化分析师能够更准确地评估衍生品价值,制定有效的交易和对冲策略。随着计算技术的发展,这些数学工具将继续在金融创新中发挥关键作用。