σμ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 学习路线›模块 1 · 拟合与求解›主题 1.1·~45分钟中级

用 scipy.stats 做分布与拟合

路线进度模块 1/3 · 主题 1/6
1.1 用 scipy.stats 做分布与拟合
—实验得分— / 100总 XP—连续天数—

每个分布一个对象

scipy.stats 把每个概率分布都做成一个对象,例如 stats.norm、stats.t 和 stats.lognorm。它们都有相同的四个方法。pdf(x) 是密度,表示 xxx 附近的值有多可能。cdf(x) 是取值不超过 xxx 的概率。ppf(p) 是 cdf 的反函数:返回使下方概率为 ppp 的值 xxx,称为分位数。rvs(size) 生成随机数。每个分布都有位置(loc)和尺度(scale),所以取值等于 loc + scale * 标准值。调用 dist.fit(data) 会做最大似然,也就是选出使你的数据最可能出现的参数。对正态分布,拟合的均值就是样本均值,拟合的标准差除以 nnn 而不是 n−1n-1n−1。

日收益率有厚尾:大涨大跌的日子比正态曲线所说的多得多。自由度为 ν\nuν 的学生 t 分布尾部更厚,ν\nuν 越小尾部越厚。它的方差是 ν/(ν−2)\nu/(\nu-2)ν/(ν−2)(需要 ν>2\nu>2ν>2),所以要让它有选定的标准差 σ\sigmaσ,就用尺度 s=σ(ν−2)/νs=\sigma\sqrt{(\nu-2)/\nu}s=σ(ν−2)/ν​。一天 99% 的风险价值(VaR)是只有 1% 的日子会被超过的损失,由收益率的 1% 分位数得到。

VaR99=−(μ+σz0.01) with z0.01=−2.3263,VaR99t=−(μ+s t0.01,ν),s=σν−2ν\mathrm{VaR}_{99}=-(\mu+\sigma z_{0.01})\ \text{with}\ z_{0.01}=-2.3263,\qquad \mathrm{VaR}^{t}_{99}=-(\mu+s\,t_{0.01,\nu}),\quad s=\sigma\sqrt{\frac{\nu-2}{\nu}}VaR99​=−(μ+σz0.01​) with z0.01​=−2.3263,VaR99t​=−(μ+st0.01,ν​),s=σνν−2​​(1)
两种方式的 99% VaR设日均收益 μ=0.05%\mu=0.05\%μ=0.05%,标准差 σ=1.2%\sigma=1.2\%σ=1.2%。用正态分布,z0.01=−2.3263z_{0.01}=-2.3263z0.01​=−2.3263,所以 VaR=2.3263⋅1.2−0.05=2.74%\mathrm{VaR}=2.3263\cdot1.2-0.05=2.74\%VaR=2.3263⋅1.2−0.05=2.74%。现在用 ν=4\nu=4ν=4、标准差相同的 t 分布。尺度 s=1.22/4=0.85s=1.2\sqrt{2/4}=0.85s=1.22/4​=0.85,标准 t 的 1% 分位数是 −3.7469-3.7469−3.7469,所以 VaR=3.7469⋅0.85−0.05=3.13%\mathrm{VaR}=3.7469\cdot0.85-0.05=3.13\%VaR=3.7469⋅0.85−0.05=3.13%。t 曲线给出更大的损失,因为它在远处的尾部放了更多权重。在真实数据上,SPY 有 5,4035{,}4035,403 个日收益,均值 0.039%0.039\%0.039%,标准差 1.196%1.196\%1.196%。正态拟合把 1% 分位数放在 −2.74%-2.74\%−2.74%,而真实的 1% 分位数是 −3.52%-3.52\%−3.52%。它的超额峰度是 14.614.614.6,最佳 t 拟合的 ν=2.45\nu=2.45ν=2.45。跌幅超过 4%4\%4% 的日子有 424242 天,而正态分布只预期约 222 天。
  • 同样的四个方法:pdf 求密度,cdf 求下方概率,ppf 求分位数,rvs 生成随机数。
  • 先拟合,再检验:fit 给出最大似然参数(正态的 sigma 除以 nnn),还要把极端日子的个数与数据对比。
  • 厚尾对风险很重要:ν\nuν 较小的 t 分布,在标准差相同时给出比正态更大的 VaR。

实验:评分内容

  • 正态 VaR15 分
  • 最大似然 sigma15 分
  • t 分布的尺度10 分
  • t 分布的 VaR15 分
  • 四个共有方法10 分
  • 尾部风险的流程10 分
  • 为什么正态会低估损失25 分
0/ 已答 7 题
任务
1数值作答15 分未作答

日收益的均值 μ=0.05%\mu=0.05\%μ=0.05%,标准差 σ=1.2%\sigma=1.2\%σ=1.2%。用正态分布,z0.01=−2.3263z_{0.01}=-2.3263z0.01​=−2.3263,求一天 99% 的 VaR =−(μ+σz0.01)=-(\mu+\sigma z_{0.01})=−(μ+σz0.01​)(百分数)。保留两位小数。

var=var =var=允许误差:± 0.02
2数值作答15 分未作答

五个日收益(百分数)为 −1, 3, 0, −2, 5-1,\ 3,\ 0,\ -2,\ 5−1, 3, 0, −2, 5,均值为 111。stats.norm.fit 给出的标准差是把偏差平方和除以 nnn。它是多少?保留两位小数。

s=s =s=允许误差:± 0.02
3数值作答10 分未作答

你想要自由度 ν=4\nu=4ν=4、标准差 σ=1.2\sigma=1.2σ=1.2 的 t 分布。使用 s=σ(ν−2)/νs=\sigma\sqrt{(\nu-2)/\nu}s=σ(ν−2)/ν​。尺度 sss 是多少?保留两位小数。

s=s =s=允许误差:± 0.01
4数值作答15 分未作答

已知 μ=0.05%\mu=0.05\%μ=0.05%,尺度 s=0.85s=0.85s=0.85,ν=4\nu=4ν=4 的标准 t 分布的 1% 分位数为 −3.7469-3.7469−3.7469,求 99% 的 VaR =−(μ+s⋅(−3.7469))=-(\mu+s\cdot(-3.7469))=−(μ+s⋅(−3.7469))(百分数)。保留两位小数。

var=var =var=允许误差:± 0.03
5配对10 分未作答

把 scipy.stats 分布的每个方法与它返回的内容配对。

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

pdf
cdf
ppf
rvs
6排列步骤10 分未作答

把由价格估计日 VaR 的步骤排好顺序。

拖动以重新排序;也可聚焦某项,按空格抬起,用方向键移动,再按空格放下。

  1. 1用 ppf 读取 1% 分位数
  2. 2把极端日子的个数与数据对比
  3. 3把价格变成日收益
  4. 4用 fit 拟合候选分布
7用文字解释25 分未作答

正态拟合把 SPY 的 1% 分位数放在 −2.74%-2.74\%−2.74%,而真实值是 −3.52%-3.52\%−3.52%。请用一两句话解释为什么正态拟合会低估 1% 的损失。

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

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

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

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