σμ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 AcademyRoadmapsSkills
Ctrl K
AO
+1,2 Tsd. Lernende
AnmeldenBeitreten ↗
RoadmapsSkills
AO
+1,2 Tsd. Lernende
Anmelden
  • 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 AcademyRoadmapsSkills
Ctrl K
AO
+1,2 Tsd. Lernende
AnmeldenBeitreten ↗
RoadmapsSkills
AO
+1,2 Tsd. Lernende
Anmelden
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
SciPy-Skill›Modul 3 · Matrizen, Signale und Struktur›Thema 3.6·~45 Min.Mittelstufe

Kausale Filter für Handelssignale

Position in der SkillModul 3 von 3 · Thema 6 von 10
3.6 Kausale Filter für Handelssignale
—Lab-Punkte— / 100XP gesamt—Serie—

Eine glatte Linie, die die Zukunft gesehen hat

Ein Filter macht aus einer Eingangsfolge xₜ eine Ausgabe yₜ als gewichtete Summe jüngerer Ein- und Ausgaben. Der exponentielle gleitende Durchschnitt ist der einfachste: yₜ=αxₜ+(1-α)yₜ₋₁. In scipy.signal ist ein Filter ein Paar von Koeffizientenlisten, b für die Eingaben und a für die Ausgaben, und hier gilt yₜ=b₀xₜ-a₁yₜ₋₁ mit b = [alpha] und a = [1, -(1 - alpha)]. signal.lfilter(b, a, x) lässt ihn zeitlich vorwärts laufen, genau wie ein Live-System, sodass yₜ nur von xₛ mit s≤t abhängt. Standardmäßig startet er aus der Ruhe (Zustand null), was die ersten Werte bei einem Kurs nahe 100 verfälscht; übergeben Sie zi = signal.lfilter_zi(b, a) * x[0], um beim ersten Wert zu starten. Das Ergebnis stimmt mit pd.Series(x).ewm(alpha=alpha, adjust=False).mean() bis auf Maschinengenauigkeit überein.

signal.filtfilt(b, a, x) lässt denselben Filter vorwärts und dann rückwärts laufen. Die Verzögerung hebt sich auf, die glatte Linie liegt genau auf den Daten, was im Diagramm perfekt aussieht, aber jede Ausgabe hängt nun von späteren Eingaben ab. Für ein Handelssignal ist das ein Leck. Nehmen Sie ein Trendsignal, den Log-Kurs minus seinen Durchschnitt, und korrelieren Sie es mit der Rendite des nächsten Tages: Für SPY über 2.501 Tage und α=0,1 hat das kausale Signal eine Korrelation von -0,055 (eine schwache Mittelwertrückkehr), das nullphasige -0,33; für α=0,3 sind es -0,076 und -0,54. Kein Händler könnte diese nullphasigen Zahlen verdienen, denn der gefilterte Wert enthält den Kurs von morgen bereits. Der Test für ein Signal ist einfach: Daten an einem Datum abschneiden und prüfen, dass sich die Werte davor nicht ändern.

  • lfilter ist live, filtfilt ist Rückschau: Nur das erste kann am Handelstisch laufen.
  • Anfangszustand setzen: lfilter_zi(b, a) * x[0] beseitigt den Einschwingvorgang.
  • Abschneidetest: Daten an einem Datum kappen; ein gültiges Signal ändert sich davor nicht.

Lab: Was bewertet wird

  • Filterkoeffizienten10 Pkt.
  • Der kausale Durchschnitt20 Pkt.
  • Die pandas-Version10 Pkt.
  • Der nullphasige Durchschnitt15 Pkt.
  • Signale und die Rendite von morgen25 Pkt.
  • Die SPY-Studie20 Pkt.
Explorer · lab-sp-21
▾ lab-sp-21
▾ data
…
bash · im Browser
learner@quantcraft:~/lab-sp-21$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-sp-21 wird auf die Startdateien zurückgesetzt und das Terminal geleert. Ihre aktuelle Lösung geht verloren – das lässt sich nicht rückgängig machen.

Wird zurückgesetzt
  • main.py → Startcode
  • Terminal-Verlauf und Testausgabe
  • Nicht eingereichte Änderungen
Bleibt erhalten
  • Beste Lab-Punktzahl
  • Ihre XP und Ihre Serie
  • Vorlesungsfortschritt und Notizen

Melde dich an, um deinen Code auszuführen.

Alle Lektionen kannst du kostenlos lesen. Erstelle ein Konto oder melde dich an, um Code auszuführen, Tests zu starten und dieses Lab abzugeben.

  • IDE im Browser mit Bash-Terminal — nichts zu installieren
  • Sofortige Bewertung, XP und dein Platz auf der Skill
Konto erstellenAnmelden
ODER
Weiter mit GitHub