σμ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 学习路线›模块 2 · 曲线与积分›主题 2.3·~40分钟中级

期权定价中的特殊函数

路线进度模块 2/3 · 主题 3/3
2.3 期权定价中的特殊函数
—实验得分— / 100总 XP—连续天数—

公式背后的函数

scipy.special 收集了公式里反复出现的有名字的函数。对金融最有用的是正态累积分布函数 Φ(x)\Phi(x)Φ(x),即 special.ndtr。它与误差函数的关系是 Φ(x)=12(1+erf⁡(x/2))\Phi(x)=\tfrac12\big(1+\operatorname{erf}(x/\sqrt2)\big)Φ(x)=21​(1+erf(x/2​))。现价 SSS、行权价 KKK、利率 rrr、波动率 σ\sigmaσ、期限 TTT 的看涨期权的布莱克–斯科尔斯价格要用它两次:C=S Φ(d1)−Ke−rTΦ(d2)C=S\,\Phi(d_1)-K e^{-rT}\Phi(d_2)C=SΦ(d1​)−Ke−rTΦ(d2​),其中 d1=ln⁡(S/K)+(r+σ2/2)TσTd_1=\dfrac{\ln(S/K)+(r+\sigma^2/2)T}{\sigma\sqrt T}d1​=σT​ln(S/K)+(r+σ2/2)T​,d2=d1−σTd_2=d_1-\sigma\sqrt Td2​=d1​−σT​。价格对波动率的敏感度叫做 vega,等于 S φ(d1)TS\,\varphi(d_1)\sqrt TSφ(d1​)T​,其中 φ\varphiφ 是正态密度。牛顿法求隐含波动率需要的正是 vega。

另一类特殊函数处理过大或过小的数。阶乘增长极快,171!171!171! 就已经超出计算机中普通小数的范围,但 ln⁡n!\ln n!lnn! 很容易:special.gammaln(n+1)。special.comb(n, k) 统计 nnn 步树中有 kkk 次上行的路径数。special.logsumexp 通过提出最大的 xxx 安全地计算 ln⁡∑exi\ln\sum e^{x_i}ln∑exi​,所以 ln⁡(e1000+e1000)=1000+ln⁡2\ln(e^{1000}+e^{1000})=1000+\ln2ln(e1000+e1000)=1000+ln2 不会溢出。special.expit(x)=1/(1+e^{-x}) 像逻辑模型那样把任何得分变成 0 到 1 之间的概率。规则是:数可能极大或极小时用对数计算,最后才取指数。

Φ(x)=12(1+erf⁡(x2)),C=SΦ(d1)−Ke−rTΦ(d2),vega=S φ(d1)T,ln⁡∑exi=m+ln⁡∑exi−m\Phi(x)=\tfrac12\Big(1+\operatorname{erf}\Big(\frac{x}{\sqrt2}\Big)\Big),\qquad C=S\Phi(d_1)-Ke^{-rT}\Phi(d_2),\qquad \text{vega}=S\,\varphi(d_1)\sqrt T,\qquad \ln\sum e^{x_i}=m+\ln\sum e^{x_i-m}Φ(x)=21​(1+erf(2​x​)),C=SΦ(d1​)−Ke−rTΦ(d2​),vega=Sφ(d1​)T​,ln∑exi​=m+ln∑exi​−m(1)
看涨期权价格与隐含波动率一步取 S=K=100S=K=100S=K=100,r=0r=0r=0,σ=0.2\sigma=0.2σ=0.2,T=1T=1T=1。则 d1=0.1d_1=0.1d1​=0.1,d2=−0.1d_2=-0.1d2​=−0.1,Φ(0.1)=0.5398\Phi(0.1)=0.5398Φ(0.1)=0.5398,Φ(−0.1)=0.4602\Phi(-0.1)=0.4602Φ(−0.1)=0.4602。所以 C=100⋅(0.5398−0.4602)=7.97C=100\cdot(0.5398-0.4602)=7.97C=100⋅(0.5398−0.4602)=7.97。0.10.10.1 处的正态密度为 0.39700.39700.3970,因此 vega 为 100⋅0.3970⋅1=39.70100\cdot0.3970\cdot1=39.70100⋅0.3970⋅1=39.70。若市场价格是 9.009.009.00,模型价格偏低 1.031.031.03,牛顿一步把波动率提高到 0.2+1.03/39.70=0.22610.2+1.03/39.70=0.22610.2+1.03/39.70=0.2261。要算 Φ(1)\Phi(1)Φ(1),可用 erf⁡(0.7071)=0.6827\operatorname{erf}(0.7071)=0.6827erf(0.7071)=0.6827,于是 Φ(1)=12(1+0.6827)=0.8413\Phi(1)=\tfrac12(1+0.6827)=0.8413Φ(1)=21​(1+0.6827)=0.8413。几个小工具:expit⁡(2)=0.8808\operatorname{expit}(2)=0.8808expit(2)=0.8808,ln⁡4!=3.178\ln 4!=3.178ln4!=3.178,(103)=120\binom{10}{3}=120(310​)=120。在真实数据上,SPY 日收益的标准差是 1.196%1.196\%1.196%。下跌 5%5\%5% 是 z=−4.21z=-4.21z=−4.21 个标准差,Φ(−4.21)=1.26⋅10−5\Phi(-4.21)=1.26\cdot10^{-5}Φ(−4.21)=1.26⋅10−5,正态模型认为约 315315315 年才发生一次;而在 5,4035{,}4035,403 天的数据中,它出现了 202020 天。
  • 直接用名字:ndtr、erf、expit、gammaln、comb 和 logsumexp 能代替好几页手写的数学。
  • 极端值用对数计算:用 gammaln 和 logsumexp,而不是阶乘或巨大指数之和。
  • vega 驱动求解器:隐含波动率的牛顿一步就是价格差除以 vega。

实验:评分内容

  • 由 erf 得到正态函数10 分
  • 布莱克–斯科尔斯看涨期权20 分
  • Vega10 分
  • 隐含波动率一步15 分
  • 各函数的用途15 分
  • 安全的相加方法10 分
  • 为什么通过对数计算阶乘20 分
0/ 已答 7 题
任务
1数值作答10 分未作答

已知 erf⁡(0.7071)=0.6827\operatorname{erf}(0.7071)=0.6827erf(0.7071)=0.6827,计算 Φ(1)=12(1+erf⁡(1/2))\Phi(1)=\tfrac12\big(1+\operatorname{erf}(1/\sqrt2)\big)Φ(1)=21​(1+erf(1/2​))。保留四位小数。

p=p =p=允许误差:± 0.0005
2数值作答20 分未作答

当 S=K=100S=K=100S=K=100,r=0r=0r=0,σ=0.2\sigma=0.2σ=0.2,T=1T=1T=1 时,d1=0.1d_1=0.1d1​=0.1,d2=−0.1d_2=-0.1d2​=−0.1,Φ(0.1)=0.5398\Phi(0.1)=0.5398Φ(0.1)=0.5398,Φ(−0.1)=0.4602\Phi(-0.1)=0.4602Φ(−0.1)=0.4602。求 C=SΦ(d1)−KΦ(d2)C=S\Phi(d_1)-K\Phi(d_2)C=SΦ(d1​)−KΦ(d2​)。保留两位小数。

c=c =c=允许误差:± 0.03
3数值作答10 分未作答

d1=0.1d_1=0.1d1​=0.1 处的正态密度为 φ(0.1)=0.3970\varphi(0.1)=0.3970φ(0.1)=0.3970。当 S=100S=100S=100,T=1T=1T=1 时,vega =S φ(d1)T=S\,\varphi(d_1)\sqrt T=Sφ(d1​)T​ 是多少?保留两位小数。

v=v =v=允许误差:± 0.1
4数值作答15 分未作答

市场价格为 9.009.009.00,σ=0.2\sigma=0.2σ=0.2 时模型价格为 7.96567.96567.9656,vega 为 39.7039.7039.70。新的波动率 σ+(市场−模型)/vega\sigma+(\text{市场}-\text{模型})/\text{vega}σ+(市场−模型)/vega 是多少?保留四位小数。

s=s =s=允许误差:± 0.0005
5配对15 分未作答

把 scipy.special 的每个函数与它的作用配对。

为左侧每一项选择配对项。

ndtr
expit
gammaln
logsumexp
comb
6选择10 分未作答

你需要在计算机上算 ln⁡(e1000+e1002)\ln(e^{1000}+e^{1002})ln(e1000+e1002)。哪种方式是安全的?

7用文字解释20 分未作答

200 步树的二项概率含有 200!200!200!。请用一两句话解释为什么应该用 gammaln 和对数来计算它。

数学模式键盘或 LaTeX 输入第 1/7 题 · Ctrl ⏎ 检查

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

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

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