English

导读与第 1–2 章 · 免费在线阅读

期权定价模型:从随机过程到 Python 代码

Python 数值方法

理解期权价格如何计算,将随机模型与定价公式同算法、可运行的 Python 程序及计算结果联系起来。在线阅读,并下载 Notebook 运行程序。

从公式到实际计算

  • 在线讲解与六章 Python Notebook
  • 公式与对应程序相互参照
  • 简洁的定价函数与逐步讲解
  • 可复现的计算图表
  • 探索收敛性、偏差与稳定性的数值实验

先运行一个例子

波动率翻倍,期权价格会怎样?

以无股息欧式看涨期权为例:股票现价 S = 100,执行价 K = 100,到期时间 T = 1 年,无风险利率 r = 5%。只修改年化波动率 σ,比较 Black–Scholes 定价结果。

Notebook 原码 · Python 程序 1.10

定价函数原样摘自第一章。先运行 pip install numpy scipy 安装依赖,再复制到 Python 或 Jupyter 运行。

import numpy as np
from scipy.stats import norm

def black_scholes_d1_d2(sigma, S0, K, T, r):
    """Return the two standardized distances used in the BSM formula."""
    d1 = (np.log(S0 / K) + (r + sigma**2 / 2) * T) / (sigma * np.sqrt(T))
    d2 = d1 - sigma * np.sqrt(T)
    return d1, d2

def black_scholes_formula(sigma, S0, K, T, r, cp):
    """Return a no-dividend European call (cp=1) or put (cp=-1) value."""
    if cp not in (-1, 1):
        raise ValueError("cp must be 1 for a call or -1 for a put")
    d1, d2 = black_scholes_d1_d2(sigma, S0, K, T, r)
    discount = np.exp(-r * T)
    return cp * (S0 * norm.cdf(cp * d1) - K * discount * norm.cdf(cp * d2))

# 页面演示调用:cp=1 表示看涨,cp=-1 表示看跌
for sigma in (0.10, 0.20, 0.40):
    price = black_scholes_formula(sigma, 100, 100, 1, 0.05, cp=1)
    print(f"σ={sigma:.0%}  C={price:.4f}")

波动率与看涨期权价格

Black–Scholes 看涨期权价格随年化波动率的变化 股票现价和执行价均为 100,到期时间为一年,无风险利率为 5%,无股息。波动率为 10%、20%、40% 时,看涨期权价格分别为 6.8050、10.4506、18.0230。 20 15 10 5 0 10% 20% 30% 40% 年化波动率 σ 看涨期权价格 C
曲线由上方定价公式计算,蓝点对应代码的三组输出。

运行结果

σ = 10%
6.8050
σ = 20%
10.4506
σ = 40%
18.0230

将 σ 从 20% 改为 40%,看涨期权价格由 10.4506 升至 18.0230。你也可以修改 S、K 或 T,重新运行并比较结果。

适合哪些读者

适合具备概率、微积分和 Python 基础,希望理解期权定价实际计算过程的读者。

如何学习

在线阅读讲解,在下载的 Notebook 中查看对应程序,再修改输入并比较计算结果。

可以计算什么

使用树方法、模拟、偏微分方程和变换方法,计算期权价格、希腊字母、隐含波动率与提前行权边界。

两种方式学习期权定价

内容与功能在线版本免费阅读在线阅读Jupyter Notebook 系列€19.99 · 一次性付款获取 Notebook
讲解与结果阅读已发布章节的概念讲解、公式、图表与计算结果。在可执行的 Jupyter Notebook 中学习相同内容。
Python 代码展示部分代码。获取完整 Python 代码,包括在线版本中隐藏的程序。

注册后可免费试用第 1 章 Notebook。

动手实验在浏览器中查看图表与计算结果。运行和修改代码,调整参数并复现结果。包含配套文件与环境配置说明。需使用 Python 3.11 或更高版本。
章节与更新导读与第 1–2 章已上线,其余章节将陆续发布。陆续获取全书 6 个 Notebook。后续章节均包含在本次购买中,无需再次付费。
学习支持通过在线讲解自主学习。可通过邮件提问,交流书中的概念、数值方法与 Python Notebook。

首发优惠价 · 全书持续更新中

获取完整 Notebook 系列

一次购买包含全书 6 个 Jupyter notebook的中英文版本、完整代码与配套文件。后续章节发布后,均可获取,无需再次付费。

学习有支持:购买后可通过邮件提问,交流书中的概念、数值方法和 Python notebook。

由于全书尚在编写中,目前提供优惠首发价。第 1、2 章已上线,第 3–6 章将陆续加入。

购买后可在“我的购买”中随时下载。

€19.99 一次性付款

从模型到计算

理解价格背后的计算过程

本书将每个数值计算步骤与对应公式联系起来。读者可以查看定价函数、复现图表,并将数值结果与基准值比较。调整树的步数、模拟路径数、网格大小或傅里叶方法的参数,可以观察数值误差的来源。

公式与程序相互参照

从模型假设出发,逐步理解计算算法及其 Python 实现。

可复现与比较的结果

复现数值结果,与基准值比较,并观察增加计算精度后误差如何变化。

六章内容概览

从随机模型到数值定价

第 1 章 · 免费在线阅读

随机过程与风险中性定价

阅读第 1 章 →

从观察到的收益率分布出发,介绍模型、定价与敏感度。

  • 理解期权收益、行权方式与看涨看跌期权平价关系。
  • 对股票对数收益率的分布及尾部进行模型拟合。
  • 通过矩母函数推导风险中性漂移修正。
  • 计算 Black–Scholes 价格与希腊字母,求解隐含波动率,并解释其偏斜与曲面。

模型: 几何布朗运动、Merton 跳跃扩散、方差 Gamma(VG)与正态逆高斯(NIG)模型。

S&P 500 对数收益率的正态与 NIG 密度拟合
日对数收益率的正态与 NIG 拟合。

第 2 章 · 免费在线阅读

二叉树与三叉树

阅读第 2 章 →

使用逆向递推,对欧式期权及可提前行权的期权进行离散定价。

  • 使用风险中性转移概率构建二叉树与三叉树。
  • 通过逆向递推为欧式和美式期权定价。
  • 使用标准树与扩展树估计 Delta 和 Gamma。
  • 解释奇偶步数的影响,并通过平滑和外推改善收敛。

方法: Cox–Ross–Rubinstein、灵活二叉树、二叉 Black–Scholes 树、Boyle 三叉树与 Richardson 外推。

具有上、中、下三个分支的可重组三叉 Boyle 树
三个分支与可重组的节点。

第 3 章 · 即将上线

蒙特卡洛模拟

基于模拟的定价、方差缩减与敏感度估计。

  • 模拟几何布朗运动、Merton、VG 和 NIG 模型下的价格路径。
  • 生成相关资产路径,为欧式、价差、篮子和亚式期权定价。
  • 衡量抽样误差与缩减方差,比较普通蒙特卡洛和随机化拟蒙特卡洛方法。
  • 比较希腊字母估计方法,并通过最小二乘回归为美式期权定价。

工具: Cholesky 分解、控制变量、重要性抽样、扰乱 Sobol 序列,以及路径法和似然比法的希腊字母估计。

左侧为 1,024 个 Sobol 拟蒙特卡洛点,右侧为伪随机蒙特卡洛点
1,024 个点:Sobol(左),伪随机(右)。

第 4 章 · 即将上线

偏微分方程

对 Black–Scholes 偏微分方程作有限差分近似,在网格上计算期权价格。

  • 推导定价方程,并将其变换为热传导方程。
  • 设置有限网格、初始条件与边界值。
  • 比较时间推进格式、稳定性、价格误差与希腊字母。
  • 加入美式期权行权约束,求解行权边界。

方法: 显式与隐式 Euler、Crank–Nicolson、三对角方程组、逐次超松弛法与投影迭代。

美式看跌期权的自由边界,分隔 STOP 行权区与 HOLD 继续持有区
行权与继续持有之间的边界。

第 5 章 · 即将上线

鞍点近似

基于累积量母函数,近似计算分布与尾概率。

  • 构造母函数并求解鞍点方程。
  • 近似计算连续与离散分布的密度及尾概率。
  • 通过尾概率与测度变换表示期权价值。
  • 对 Merton、VG 和 NIG 模型应用定价近似,并与精确结果及蒙特卡洛结果比较。

方法: Daniels 密度修正、Lugannani–Rice 尾概率、Rogers–Zane 定价与 Carr–Madan 鞍点定价。

鞍点附近指数函数中指数项实部的三维鞍形曲面
鞍点附近的指数项。

第 6 章 · 即将上线

傅里叶方法

利用特征函数快速定价,并控制数值误差。

  • 构造 Black–Scholes、Merton、VG 和 NIG 模型的特征函数。
  • 通过三种傅里叶方法恢复密度,并为欧式期权定价。
  • 选择阻尼参数、频率间隔、截断范围与展开项数。
  • 通过逆向递推与外推为百慕大和美式期权定价,并计算不同执行价的希腊字母。

方法: Carr–Madan FFT、卷积(CONV)与傅里叶余弦(COS)展开,以及截断、离散化和周期性误差。

执行价 K=80 时,COS 与 Carr–Madan 的绝对定价误差随网格规模的变化
COS 与 Carr–Madan 定价误差的收敛(K = 80)。

可以运行的数值实验

调整参数,观察结果。

01 · 树的步数

比较奇数与偶数步数下的价格,观察收敛。

02 · 模拟路径

衡量抽样误差与方差缩减的效果。

03 · 偏微分方程网格

细化空间与时间网格,识别导致不稳定的参数设置。

04 · 傅里叶方法参数

调整阻尼参数与频率间隔,比较不同执行价下的计算精度。

Python 工具: NumPy、SciPy、pandas、Matplotlib 和 Jupyter。

常见问题

需要哪些基础知识?

需要概率、微积分与 Python 的基础知识。本书将数学推导步骤与数值实现联系起来。

目前可以在线阅读哪些内容?

导读与第 1–2 章可免费在线阅读,其余章节将陆续上线。

是否介绍提前行权?

介绍。树方法、最小二乘蒙特卡洛、偏微分方程的行权约束与傅里叶逆向递推涵盖美式或百慕大期权定价。

如何评估数值精度?

与基准值比较,衡量蒙特卡洛抽样误差,并调整树的步数、偏微分方程网格与傅里叶参数,观察收敛性和稳定性。

可以下载 Notebook 吗?

注册后可免费下载第 1 章。一次性支付 €19.99,即可获取全书六章的中英文 Notebook、配套文件,以及后续陆续发布的所有章节。

如何下载第 1 章?

注册后可免费下载第 1 章。登录后选择中文或英文压缩包。

继续学习: 量化金融学院。如果你希望了解这些数学、编程和衍生品知识对应的职业方向,可以阅读 量化职业路径。