σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academy路线图学习路线
Ctrl K
AO
+1.2k 位学习者
登录加入 ↗
路线图学习路线
AO
+1.2k 位学习者
登录
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academy路线图学习路线
Ctrl K
AO
+1.2k 位学习者
登录加入 ↗
路线图学习路线
AO
+1.2k 位学习者
登录
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
SciPy 学习路线›模块 3 · 矩阵、信号与结构›主题 3.4·~55分钟中级

用稀疏三对角求解期权价格

路线进度模块 3/3 · 主题 4/10
3.4 用稀疏三对角求解期权价格
—实验得分— / 100总 XP—连续天数—

只存储存在的部分

在网格上给期权定价,是用一串线性方程组代替微分方程。每个网格节点只与相邻两个节点相连,所以方程组的矩阵是三对角的:三条对角线上有数,其余全是零。稠密的 n×n 数组要存 n² 个数,几乎全是零;稀疏格式只存有意义的 3n-2 个。scipy.sparse.diags([lower, diag, upper], [-1, 0, 1], format='csc') 由对角线构造这样的矩阵(下对角线和上对角线都有 n-1 个元素,因此下对角线要截去开头一个,使之从第二行开始,上对角线截去末尾一个,使之在最后一列前结束)。CSC 是稀疏求解器需要的格式。

隐式格式通过在每一步解 A V^new=V^old+边界 来把期权价值沿时间倒推。矩阵 A 在各步之间不变,所以用 scipy.sparse.linalg.splu(A) 只分解一次,每一步只是 lu.solve(rhs),对三对角矩阵来说成本极低。S=0 处的边界条件(看跌期权价值为 Ke^(-rτ))进入第一个方程,所以第一个右端项要用 lower[0] * K * exp(-r * m * dt) 修正。在一年期利率 4.47%、σ=25% 时,平值看跌期权的闭式价格是 7.6987;该格式在 200×200 网格上给出 7.6958,在 400×400 上给出 7.6965,相差约 0.003。2000 个节点的网格以稀疏形式只存 5,995 个数,稠密形式则需要近 400 万个。

  • 存对角线,不存零:sparse.diags 只存 3n - 2 个数而不是 n 的平方。
  • 分解一次,求解多次:splu 预先付出成本,之后每个时间步只是一次廉价的 solve。
  • 边界条件放在右端项:网格边缘的已知值被移到方程另一边。

实验:评分内容

  • 三条对角线20 分
  • 稀疏矩阵15 分
  • 用一次分解定价30 分
  • 稀疏对稠密10 分
  • 定价误差5 分
  • 基于真实利率的研究20 分
资源管理器 · lab-sp-20
▾ lab-sp-20
▾ data
…
bash · 浏览器内
learner@quantcraft:~/lab-sp-20$
Python 尚未加载PythonLn 1, Col 1Spaces: 4UTF-8

要重置此主题吗?

lab-sp-20 中的所有内容将恢复为初始文件,终端也会被清空。你当前的解答将丢失,且无法撤销。

将被重置
  • main.py → 初始代码
  • 终端历史与测试输出
  • 未提交的更改
将被保留
  • 实验最高得分
  • 你的 XP 与连续天数
  • 讲解进度与笔记

登录后即可运行你的代码。

所有讲解均可免费阅读。创建账户或登录后,即可运行代码、运行测试并提交此实验。

  • 浏览器内 IDE 与 bash 终端,无需安装
  • 即时评分、XP 以及你在学习路线中的位置
创建账户登录
或
使用 GitHub 继续