σμ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.3·~50分钟中级

信号滤波与频谱

路线进度模块 3/3 · 主题 3/5
3.3 信号滤波与频谱
—实验得分— / 100总 XP—连续天数—

平滑带噪序列并找出节奏

滤波器通过把每个值与邻近的值混合,把一个序列变成另一个序列。NNN 日移动平均是最简单的滤波器:每个输出是最近 NNN 个输入的平均,噪声减小,但输出也会滞后。指数移动平均(EMA)给近期的日子更大权重:yt=αxt+(1−α)yt−1y_t=\alpha x_t+(1-\alpha)y_{t-1}yt​=αxt​+(1−α)yt−1​,其中 α=2/(N+1)\alpha=2/(N+1)α=2/(N+1) 是平滑权重。signal.lfilter(b, a, x) 只用过去和当前的值在序列上运行这样的滤波器。EMA 的平均滞后为 (1−α)/α(1-\alpha)/\alpha(1−α)/α 天,NNN 日移动平均的滞后为 (N−1)/2(N-1)/2(N−1)/2 天,所以 19 日平均和 α=0.1\alpha=0.1α=0.1 的 EMA 都滞后约 9 天。

第二项任务是找周期。signal.periodogram(x) 把序列的方差分配到各个频率上,频率以每天的周期数计。频率 fff 处的峰值表示周期为 1/f1/f1/f 天的重复模式。每天一个观测时,只能看到不超过每天 0.50.50.5 个周期的频率,即奈奎斯特极限,因为更快的周期无法与更慢的周期区分。有一个对交易极其重要的警告:signal.filtfilt 先正向再反向运行滤波器,消除了滞后,但每个输出因此使用了未来的值。用 filtfilt 构造的信号在回测中看起来完美,却无法交易,因为明天的数据今天还拿不到。凡是打算交易的东西,只能用 lfilter 这类因果滤波器。

yt=αxt+(1−α)yt−1,α=2N+1,lag=1−αα  (moving average: N−12),period=1fy_t=\alpha x_t+(1-\alpha)y_{t-1},\quad \alpha=\frac{2}{N+1},\quad \text{lag}=\frac{1-\alpha}{\alpha}\ \ \Big(\text{moving average: }\frac{N-1}{2}\Big),\qquad \text{period}=\frac1fyt​=αxt​+(1−α)yt−1​,α=N+12​,lag=α1−α​  (moving average: 2N−1​),period=f1​(1)
三个数和一个周期取序列 10,12,1110,12,1110,12,11,α=0.5\alpha=0.5α=0.5,EMA 从第一个值开始。则 y0=10y_0=10y0​=10,y1=0.5⋅12+0.5⋅10=11y_1=0.5\cdot12+0.5\cdot10=11y1​=0.5⋅12+0.5⋅10=11,y2=0.5⋅11+0.5⋅11=11y_2=0.5\cdot11+0.5\cdot11=11y2​=0.5⋅11+0.5⋅11=11。10,12,11,1310,12,11,1310,12,11,13 的 3 日移动平均先得 111111 再得 121212。19 日窗口意味着 α=2/20=0.1\alpha=2/20=0.1α=2/20=0.1,滞后 (1−0.1)/0.1=9(1-0.1)/0.1=9(1−0.1)/0.1=9 天。每天重复 0.050.050.05 次的纯周期,周期为 1/0.05=201/0.05=201/0.05=20 天,周期图恰好在那里出现峰值。在真实数据上,SPY 日收益的一阶自相关只有 −0.10-0.10−0.10,但其平方在滞后 1 为 0.270.270.27,滞后 5 为 0.300.300.30:大波动日之后还是大波动日,这就是波动率聚集。用权重 α=0.06\alpha=0.06α=0.06(RiskMetrics 的 λ=0.94\lambda=0.94λ=0.94)对收益平方做 EMA,2026 年 8 月 21 日为每天 0.75%0.75\%0.75%(年化 11.9%11.9\%11.9%),远低于全样本的 1.20%1.20\%1.20%。这正是对过去做慢速平均、不看未来所能告诉你的信息。
  • 平滑要付出滞后的代价:窗口越长或 α\alphaα 越小,噪声去得越多,信号也越滞后。
  • 由峰值读周期:频率 fff 处的峰值表示 1/f1/f1/f 天的周期,上限为每天 0.5 个周期。
  • 交易只用因果滤波器:filtfilt 使用了未来,只能用于分析,绝不能用于实盘信号。

实验:评分内容

  • EMA 一步10 分
  • 移动平均10 分
  • 窗口对应的权重10 分
  • 由频率求周期10 分
  • EMA 的滞后10 分
  • 各例程的作用15 分
  • 为什么 filtfilt 不能用于交易35 分
0/ 已答 7 题
任务
1数值作答10 分未作答

当 α=0.5\alpha=0.5α=0.5,y0=10y_0=10y0​=10,下一个值 x1=12x_1=12x1​=12 时,y1=αx1+(1−α)y0y_1=\alpha x_1+(1-\alpha)y_0y1​=αx1​+(1−α)y0​ 是多少?

y=y =y=允许误差:± 0.01
2数值作答10 分未作答

序列为 10, 12, 11, 1310,\ 12,\ 11,\ 1310, 12, 11, 13。最后一天的 3 日移动平均是多少?

m=m =m=允许误差:± 0.01
3数值作答10 分未作答

EMA 要类似 N=19N=19N=19 日平均。α=2/(N+1)\alpha=2/(N+1)α=2/(N+1) 是多少?

a=a =a=允许误差:± 0.002
4数值作答10 分未作答

某日度序列的周期图在 f=0.05f=0.05f=0.05 每天周期数处出现峰值。一个周期多少天?

p=p =p=允许误差:± 0.1
5数值作答10 分未作答

某 EMA 的 α=0.1\alpha=0.1α=0.1。其平均滞后为 (1−α)/α(1-\alpha)/\alpha(1−α)/α 天。是多少天?

l=l =l=允许误差:± 0.05
6配对15 分未作答

把 scipy.signal 的每个例程与它的作用配对。

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

lfilter
filtfilt
periodogram
detrend
7用文字解释35 分未作答

用 filtfilt 构造的信号没有滞后,回测结果极好。请用一两句话解释为什么它不能用于交易。

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

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

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

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