halo 的技术博客

返回

欧式期权有 Black-Scholes 封闭解,美式期权没有。原因很本质:美式期权可以在到期前任意时点行权,而”现在行权还是继续持有”是一个依赖未来的最优停止问题——你今天的决定取决于”如果我持有下去,未来能值多少”,而未来还没发生。这没有解析解。

结论先放这:Longstaff-Schwartz(2001) 的最小二乘蒙特卡洛(LSM)是给美式期权定价最通用、最接地气的引擎。它的思路极其 pragmatic——先模拟大量标的路径,然后从到期日倒着往回走,在每个行权日用最小二乘回归,用”当前标的价格 S”去估计”继续持有下去的价值”,只要”立即行权价值 > 继续持有价值”就在那条路径上提前行权。本文从零实现 LSM,画出提前行权边界与收敛曲线,并对照欧式价验证”美式价 ≥ 欧式价、提前行权溢价为正”。

和二叉树比,LSM 的最大卖点是维度:二叉树每多一个标的,网格节点数指数级膨胀,三个标的就基本跑不动;LSM 的路径数只随标的数线性增加,五六个标的的篮子期权照样能算。这也是为什么工业界给美式、百慕大、甚至带路径依赖的期权定价,几乎都首选 LSM 或其变体。

GBM 模拟的标的路径:美式看跌在 S<K 时进入价内,可能提前行权

一、为什么美式没有 BS 公式#

欧式期权只需在到期日比较”行权价 vs 现货”,现金流确定,于是 BS 用无套利复制给出了封闭解。美式期权多了一个最优停止时间 τ\tau

V0=supτTEQ ⁣[erτmax(KSτ,0)]V_0 = \sup_{\tau\le T} \mathbb{E}^Q\!\left[e^{-r\tau}\max(K-S_\tau,0)\right]

sup\sup 对停止时间取,意味着你要对所有可能的行权时机找最优的那个——这在连续时间、多标的下没有封闭解。早期的办法是二叉树 / 有限差分,但那是维度灾难:标的一多(篮子期权、多资产雪球),网格立刻爆炸。

LSM 的聪明之处在于:蒙特卡洛天然支持高维和路径依赖,它把”最优停止”翻译成”在每个行权日做一次最小二乘回归”这样可计算的子问题。

换个角度理解:最优停止要求你”在不知道未来时决定现在”,而蒙特卡洛恰好给了你大量”已经发生的未来”——模拟出来的整条路径。于是你可以先看到每条路径最终值多少,再倒回去问”如果当时在某个价位行权,是不是比走到最后更划算”。回归做的就是这件”倒回去问”的事,且只对价内路径问,因为价外行权价值为 0、问了也是白问。

二、LSM 算法#

设定:标的服从 GBM,MM 个时间步,NN 条路径,行权价 KK,无风险利率 rr

第 1 步:模拟路径。 对每条路径 j=1..Nj=1..N,从 S0S_0 出发用 GBM 走到到期:

Sj,t+1=Sj,texp ⁣((r12σ2)Δt+σΔtZ),ZN(0,1)S_{j,t+1} = S_{j,t}\exp\!\Big((r-\tfrac12\sigma^2)\Delta t + \sigma\sqrt{\Delta t}\,Z\Big),\quad Z\sim\mathcal N(0,1)

第 2 步:初始化现金流。 到期日 TT 的 payoff 贴现到 t=0t=0

CFj=max(KSj,T,0)erT\text{CF}_j = \max(K-S_{j,T},0)\,e^{-rT}

第 3 步:从 t=M1t=M-1 倒推到 t=1t=1(核心)。 对每个行权日:

  1. 只看价内路径 I={j:Sj,t<K}\mathcal I = \{j: S_{j,t}<K\}(价外立即行权价值为 0,参与回归只会污染)
  2. 用基函数把未来的现金流对当前标的价格回归。本文用三次多项式(用 moneyness x=S/Kx=S/K 提升数值条件): ϕ(x)=[1,  x,  x2,  x3]\phi(x) = [1,\; x,\; x^2,\; x^3]I\mathcal I 上最小二乘拟合 CFjI\text{CF}_{j\in\mathcal I}ϕ(Sj,t/K)\phi(S_{j,t}/K),得到系数 β\beta,于是继续持有价值 c^(S)=ϕ(S/K)β\hat c(S) = \phi(S/K)\beta
  3. 计算立即行权价值(贴现到 t=0):t=0):e_t = (K-S_{j,t}),e^{-rt\Delta t}$
  4. 对路径 jIj\in\mathcal I,若 et>c^(Sj,t)e_t > \hat c(S_{j,t}),就提前行权:把 CFj\text{CF}_j 更新为 ete_t
  5. 非价内、或不提前行权的路径,保留原来的(更晚行权/到期的)现金流

第 4 步:定价。 所有路径走完后,期权价格就是平均现金流:

V^0=1Nj=1NCFj\hat V_0 = \frac1N\sum_{j=1}^N \text{CF}_j

直觉:倒推时,回归给出”持有下去大概值多少”,只要有路径”现在行权比持有更值钱”,这条路径就在当下 lock in 利润。这就是最优停止的近似解。

三、从零实现(Python)#

下面这段代码与配图完全一致,可直接跑(经典 LS 参数 S0=36,K=40,r=6%,σ=20%,T=1S_0=36, K=40, r=6\%, \sigma=20\%, T=1):

跑出来:美式约 4.48,欧式约 3.84,提前行权溢价为正 ~0.64——这正是美式期权比欧式”贵”的那部分。

四、结果:提前行权边界与收敛性#

LSM 最有信息量的产物是提前行权边界 S(t)S^*(t):在每个时点,股价高于某个临界值就不值得现在行权(持有更划算),低于它就该立刻行权。下图在某行权日把”继续持有价值”和”立即行权价值”画在一起,红色区域就是提前行权区:

某行权日:内在价值超过延续价值时提前行权(红色区域)

把每个时点的临界股价 S(t)S^*(t) 连起来,得到一条随时间下降/上升的边界。对美式看跌,规律很稳:越临近到期,临界股价越高——因为越晚行权,剩下的”等待期权”价值越小,你越愿意在更高一点的股价上就把利润 lock in:

提前行权边界:越临近到期,越愿意在更高股价行权

最后是收敛性。LSM 价格随模拟路径数增加稳定收敛,且始终 ≥ 欧式价(无套利的下界约束被 LSM 天然满足):

LSM 价格随路径数收敛,且始终 ≥ 欧式价(提前行权溢价为正)

五、真实陷阱(别拿 LSM 当黑箱)#

  1. 基函数选择:多项式阶数太低 → 拟合不足,提前行权边界歪;太高 → 过拟合 + 数值病态(高次项量级爆炸)。用 moneyness S/KS/K 而不是原始 SS 做回归量是关键,必要时换 Legendre / 切比雪夫基。一般 3 次足够,超过 5 次要谨慎。
  2. 只在价内回归:价外路径的立即行权价值为 0,绝不该进回归样本,否则会把”0 现金流”当成信号污染 continuation 估计。
  3. 蒙特卡洛误差:每次模拟路径不同,价格有随机误差。严肃报告要带标准误,或用 对偶变量 / 控制变量 降方差,或用 LSM 的上下界(Andersen-Broadie)收窄置信区间。
  4. 高维扩展:LSM 对多标的美式(篮子期权)依然有效,但基函数要覆盖交叉项(如 S1S2S_1S_2),维度上升后回归变难、需要更多路径。
  5. 利率与分红:模型用了常数 rr。若标的带股息率 qq,漂移应改成 (rq12σ2)(r-q-\tfrac12\sigma^2);常数 rr 假设在利率曲线陡峭时不成立,要用期限结构贴现。
  6. 边界是概率性的:LSM 用回归近似 continuation,边界不是硬阈值——深度价内可能过早、深度价外可能过晚行权,需要足够路径数才能让边界稳定。

结论#

LSM 把”最优停止”这个没有封闭解的问题,翻译成”每个行权日做一次最小二乘回归”这样朴素可算的子问题,是美式 / 百慕大 / 路径依赖期权最通用的定价引擎——它天然支持高维、天然满足”美式 ≥ 欧式”的无套利约束。记住它给的是估计值而非精确解:基函数形态和路径数量决定了精度,价外路径不能进回归,正式交付要带蒙特卡洛标准误。把它当成”用回归逼近最优停止”的工具,而不是能凭空给出精确美式价的神谕。

工程上还有两个常用增强:一是用对偶变量(antithetic variates)让正负扰动路径成对出现,方差能砍掉一大截;二是 Andersen-Broadie 上下界,用一组”嵌套”模拟给出价格的高估与低估,让你在交付前就能报告一个置信区间,而不是只给一个会随随机种子抖动点儿的数字。

Longstaff-Schwartz 最小二乘蒙特卡洛:给美式期权一个可落地的定价引擎
https://blog.halo26812.eu.org/blog/longstaff-schwartz-lsm
Author halo
Published at 2026年7月11日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨