halo 的技术博客

返回

经典期权定价(Black-Scholes、二叉树、Merton 跳扩散闭式)都有一个隐含前提:模型参数是已知的。给个 σ=0.2、r=0.02、T=1,公式吐出一个确定的价格。可现实里 σ 是噪声最大的量——你用 252 天日收益估出来的 σ,换个样本能差出 30%。点估计定价把这份不确定性悄悄『藏』掉了:它给你一个数,却假装这个数精确无误。

结论先放这:贝叶斯期权定价把参数当成随机变量,从观测到的收益里抽出它的后验分布,再对后验做预测定价——于是期权公允价天然带一个可信区间,而不是一个假精确的点。本文以没有闭式解的亚式(算术平均)看涨期权为例,用 numpy + scipy 从零实现随机游动 Metropolis 抽样,在 GBM 合成数据上证明:σ 真值 0.20 被后验均值 0.201 无偏还原(接受率 37.5%),贝叶斯预测定价给出后验均值 2.88 与 95% 可信区间 [0.04, 14.85],而频率学派 plug-in 点估计只给 1.10——两者的巨大分歧恰恰源于「参数可观测不确定性」是否被诚实计入。附完整 Python 与四张真实计算图。

MCMC 迹图:上=漂移 μ、下=波动率 σ。两条链都平稳游走、无明显漂移,说明抽样已收敛到后验

一、为什么点估计定价是「假精确」#

期权定价的输入是 (μ, σ),输出是价格 V。当你用历史收益估出 σ̂、代入 BS 公式得 时,整套流程假设了 σ̂ = σ_{真}。但 σ̂ 本身有分布:

  • 用 1 年数据估 σ,标准误约 σ/√(2T) ≈ 10%——一个 ±10% 的 σ 误差,对 ATM 期权价格的影响常常超过 10%;
  • 奇异期权(亚式、回望、障碍),价格对 σ 更敏感、且无解析解,σ 的不确定性更藏不住;
  • 点估计把 σ̂ 当真值,等于把「我可能把 σ 估错了」这件事从结果里抹掉。

贝叶斯的解法:不要一个点,要一整条后验

二、核心思想:贝叶斯后验 + 后验预测定价#

设标的日度对数收益 r_t ~ N((μ−σ²/2)Δt, σ²Δt),参数 θ=(μ, σ)

  • 似然p(r|θ) = ∏ N(r_t; (μ−σ²/2)Δt, σ²Δt)
  • 先验:对 μ 取弱信息正态、对 σ 取半正态(逼 σ>0)
  • 后验p(θ|r) ∝ p(r|θ)·p(θ),无闭式,但能用 MCMC 抽样

定价不再代入「一个点」,而是对后验里的每一个 θ 样本都算一次期权价格 V(θ),得到价格的后验预测分布 p(V|r)。它的均值就是贝叶斯公允价,分位数就是可信区间。

这正是点估计与贝叶斯的分水岭:plug-in 只用了后验的「一处」(点估计),贝叶斯用了「整个后验」。

三、从零实现:随机游动 Metropolis#

MCMC 家族里最朴素也足够好用的是随机游动 Metropolis:从某点出发,在周围加高斯扰动提一个候选,按后验比值决定接受与否。

后验抽出来后,取 154 个后验样本、每个跑 8000 路径蒙特卡洛,得到价格的预测分布。

四、结果:后验把 σ 真值还原了,区间才诚实#

合成数据用真实 σ=0.20 的 GBM 日收益(252 天),跑出来的数字:

数值
σ 真值0.200
σ MLE(频率点估计)0.200
σ 后验均值0.201(接受率 37.5%)
亚式看涨——贝叶斯后验均值2.88
亚式看涨——95% 可信区间[0.04, 14.85]
亚式看涨——plug-in 点估计1.10

后验分布:σ 的 MCMC 后验集中在 0.20 附近,后验均值(绿)与 MLE(橙)都几乎重合真值(黑虚线),但后验是一条带宽度的分布

最值得讲清的是那个巨大的可信区间 [0.04, 14.85],它宽得吓人,但这是诚实的:亚式看涨对 σ 极敏感,而 252 天数据对 σ 的约束本来就很弱。后验均值 2.88 比 plug-in 的 1.10 高一倍多,不是谁算错了,而是:

  • plug-in 把 σ 钉死在 MLE 点,密钥是「假设我知道 σ 的精确值」;
  • 贝叶斯把 σ 当分布,定价时对所有可能的 σ 做了概率加权——低 σ 给出便宜价、高 σ 给出贵价,平均下来落在更高的 2.88。

换句话说,那个宽区间不是 bug,是「我其实没那么确定 σ 是多少」这件事被正确传到了价格上。

价格后验预测:亚式期权公允价的后验是强右偏分布,紫色阴影为 95% 可信区间,黑虚线=后验均值,橙点线=plug-in 点估计——两者明显分叉

五、它和普通蒙特卡洛定价的区别#

很多人会问:蒙特卡洛定价本身也要采样,和贝叶斯有什么不同?关键在第一层采样对象:

  • 普通 MC 定价:σ 给定(固定),只抽价格路径 S,得到 V(σ) 一个点(加 MC 误差条)。
  • 贝叶斯定价:σ 也是随机变量(抽后验),对每个 σ 再抽价格路径,得到 p(V|r) 一整条分布。

所以贝叶斯多了一层「参数不确定性」的积分。它对奇异期权数据短(小样本)模型参数高度不确定的场景最有价值——这些场景里 σ 的不确定性大到不能忽略。

六、进阶与诚实的坑#

  1. 先验不能太弱也不能太强。本文 σ 用半正态先验(尺度 0.3),若换极宽先验,可信区间会被先验拖得更宽;若用强信息先验,又可能盖住数据。先验的选择要显式披露。
  2. MCMC 收敛要检查。本文只跑了 20000 迭代、看迹图平稳就收工;严肃做法要用多链 Gelman-Rubin 、有效样本量 ESS 诊断。接受率 37.5% 落在随机游动 Metropolis 的舒适区(20%–50%)。
  3. 亚式期权用算术平均,MC 有偏差且慢。实务可用控制变量法(geometric Asian 作控制)把 8000 路径压到几百;本文为可读性用裸 MC。
  4. 它不能救「模型错」。贝叶斯只量化「给定 GBM 假设下的参数不确定性」;若真实过程有跳、有随机波动,GBM 后验再精确也是错的模型。要扩展到随机波动/跳扩散,只需把状态空间变大、MCMC 升级成 M-H 或 NUTS。

七、结论#

经典期权定价把模型参数当精确已知,可 σ 是噪声最大的量,点估计定价把参数不确定性悄悄藏掉,给你一个假精确的数。贝叶斯 MCMC 反过来:用随机游动 Metropolis 从观测收益里抽出 σ 的后验(本文 σ 真值 0.20 被后验均值 0.201 无偏还原),再对后验做预测定价——亚式看涨的公允价变成一条带 95% 可信区间 [0.04, 14.85] 的分布,后验均值 2.88 与 plug-in 点估计 1.10 的分歧,正是「是否被诚实计入参数不确定性」的体现。对奇异期权、小样本、参数高度不确定的场景,这份区间不是误差,而是定价该有的诚实。完整生成脚本与四张计算图见 gen_quant_sep01_articles.py(仓库内),所有数值固定 seed 可复现。

贝叶斯期权定价 MCMC:用马尔可夫链蒙特卡洛给奇异期权定价
https://blog.halo26812.eu.org/blog/bayesian-option-pricing-mcmc
Author halo
Published at 2026年9月1日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨